]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/pipe.cpp
Windows compilation fixes
[libs/core.git] / source / io / pipe.cpp
index 12f8fbd3886ea7f269b125691a19b2074ee16d11..0f206981f11c6d1e205d127d281655965559187e 100644 (file)
@@ -16,6 +16,8 @@ namespace IO {
 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);
@@ -26,7 +28,7 @@ Pipe::Pipe():
        if(!write_handle)
        {
                unsigned err = GetLastError();
-               CloseHandle(*handle[0]);
+               CloseHandle(*read_handle);
                throw system_error(format("CreateFile(%s)", name), err);
        }
 #else
@@ -84,5 +86,15 @@ unsigned Pipe::do_read(char *buf, unsigned size)
        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