-#ifdef WIN32
- string name = format("\\\\.\\pipe\\%u.%p", GetCurrentProcessId(), this);
- handle[0] = CreateNamedPipe(name.c_str(), PIPE_ACCESS_INBOUND|FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE, 1, 1024, 1024, 0, 0);
- if(handle[0]==INVALID_HANDLE_VALUE)
- throw system_error("CreateNamedPipe");
-
- handle[1] = CreateFile(name.c_str(), GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
- if(handle[1]==INVALID_HANDLE_VALUE)
- {
- unsigned err = GetLastError();
- CloseHandle(handle[0]);
- throw system_error(format("CreateFile(%s)", name), err);
- }
-
- priv = new Private;
- priv->overlapped = 0;
- priv->event = CreateEvent(0, true, false, 0);
- priv->buf_size = 1024;
- priv->buffer = new char[priv->buf_size];
- priv->buf_avail = 0;
- priv->buf_next = priv->buffer;
-#else
- if(pipe(handle)==-1)
- throw system_error("pipe");
-#endif