Pipe::Pipe():
reader(read_handle, 1024)
{
+ mode = M_RDWR;
+
#ifdef WIN32
string name = format("\\\\.\\pipe\\%u.%p", GetCurrentProcessId(), this);
*read_handle = CreateNamedPipe(name.c_str(), PIPE_ACCESS_INBOUND|FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE, 1, 1024, 1024, 0, 0);
if(!write_handle)
{
unsigned err = GetLastError();
- CloseHandle(*handle[0]);
+ CloseHandle(*read_handle);
throw system_error(format("CreateFile(%s)", name), err);
}
#else
return ret;
}
+const Handle &Pipe::get_handle(Mode m)
+{
+ if(m==M_READ)
+ return read_handle;
+ else if(m==M_WRITE)
+ return write_handle;
+ else
+ throw invalid_argument("Pipe::get_handle");
+}
+
} // namespace IO
} // namespace Msp