-const Handle &Pipe::get_event_handle()
-{
-#ifdef WIN32
- if(!priv->overlapped && !priv->buf_avail)
- {
- priv->overlapped = new OVERLAPPED;
- memset(priv->overlapped, 0, sizeof(OVERLAPPED));
- priv->overlapped->hEvent = *priv->event;
-
- DWORD ret;
- priv->buf_next = priv->buffer;
- if(!ReadFile(*handle[0], priv->buffer, priv->buf_size, &ret, priv->overlapped))
- {
- unsigned err = GetLastError();
- if(err!=ERROR_IO_PENDING)
- throw system_error("ReadFile");
- }
- else
- {
- priv->buf_avail = ret;
- delete priv->overlapped;
- priv->overlapped = 0;
- SetEvent(*priv->event);
- }
- }
-
- return priv->event;
-#else
- return handle[0];
-#endif
-}
-