Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SOCKET dataFd;
- size_t dataFdSize = sizeof(dataFd);
- dataSocket.getsockopt(ZMQ_FD, &dataFd, &dataFdSize);
- AutoWSAEvent dataEv = ::WSACreateEvent();
- ::WSAEventSelect(dataFd, dataEv.Get(), FD_ALL_EVENTS);
- for (;;)
- {
- HANDLE handles[] = { dataEv.Get(), parentProcessHandle };
- DWORD waitRes = ::WaitForMultipleObjects(SIZE_OF_ARRAY(handles), handles, FALSE, INFINITE);
- if (waitRes == WAIT_OBJECT_0)
- {
- ::WSAResetEvent(dataEv.Get());
- int events = 0;
- do
- {
- events = 0;
- size_t eventsSize = sizeof(events);
- dataSocket.getsockopt(ZMQ_EVENTS, &events, &eventsSize);
- if (events & ZMQ_POLLIN)
- // Handle incoming data
- } while (events & ZMQ_POLLIN);
- }
- else if (waitRes == WAIT_OBJECT_0 + 1)
- {
- // Parent process has died
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment