Guest User

Untitled

a guest
Mar 21st, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1.     SOCKET dataFd;
  2.     size_t dataFdSize = sizeof(dataFd);
  3.     dataSocket.getsockopt(ZMQ_FD, &dataFd, &dataFdSize);
  4.  
  5.     AutoWSAEvent dataEv = ::WSACreateEvent();
  6.     ::WSAEventSelect(dataFd, dataEv.Get(), FD_ALL_EVENTS);
  7.  
  8.     for (;;)
  9.     {
  10.       HANDLE handles[] = { dataEv.Get(), parentProcessHandle };
  11.       DWORD waitRes = ::WaitForMultipleObjects(SIZE_OF_ARRAY(handles), handles, FALSE, INFINITE);
  12.       if (waitRes == WAIT_OBJECT_0)
  13.       {
  14.         ::WSAResetEvent(dataEv.Get());
  15.  
  16.         int events = 0;
  17.         do
  18.         {
  19.           events = 0;
  20.           size_t eventsSize = sizeof(events);
  21.           dataSocket.getsockopt(ZMQ_EVENTS, &events, &eventsSize);
  22.           if (events & ZMQ_POLLIN)
  23.             // Handle incoming data
  24.         } while (events & ZMQ_POLLIN);
  25.       }
  26.       else if (waitRes == WAIT_OBJECT_0 + 1)
  27.       {
  28.         // Parent process has died
  29.       }
  30.     }
Advertisement
Add Comment
Please, Sign In to add comment