@{ struct gm_port *my_port; gm_recv_event_t *e; void *some_buffer; ... while (1) @{ e = gm_receive (my_port); switch (gm_ntohc (e->recv.type)) @{ case GM_FAST_HIGH_PEER_RECV_EVENT: case GM_FAST_HIGH_RECV_EVENT: /* Handle high-priority control messages here in bounded time */ gm_provide_recv_buffer (my_port, gm_ntohp (e->recv.buffer), gm_ntohc (e->recv.size), GM_HIGH_PRIORITY); break; case GM_FAST_PEER_RECV_EVENT: case GM_FAST_RECV_EVENT: gm_memorize_message (gm_ntohp (e->recv.buffer), gm_ntohp (e->recv.message), gm_ntohl (e->recv.length)); case GM_PEER_RECV_EVENT: /* Handle data messages here in bounded time */ gm_provide_recv_buffer (my_port, some_buffer, gm_ntohc (e->recv.size), GM_LOW_PRIORITY); break; case GM_NO_RECV_EVENT: /* Do bounded-time processing here, if desired. */ break; default: gm_unknown (my_port, e); @} @} @}