movecmd_t movecmd; input from packet sender wake up on alarms or input signal if on input signal, set skipnextalrm else if skipnextalarm skipnextalarm = false; continue; lock packet get current movecmd send message unlock packet packet receiver wake up only on packet arrival identify the packet source calculate exact latency save the packet off // cause timer messages to be issued SetTimer (mainwindow, 1, 50, NULL); // cause packet received messages to be issued WSAAsyncSelect ( net_socket, mainwindow, WM_USER, FD_READ ); if (!GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) { if (!GetMessage (&msg, NULL, 0, 0)) break; TranslateMessage (&msg); DispatchMessage (&msg); } PrepareToBlock (); }