]> git.tdb.fi Git - libs/core.git/blobdiff - source/pipe.cpp
Move class members and comments around
[libs/core.git] / source / pipe.cpp
index 7f0ff7067384f05ff388bddc97be3632aefedcaf..b3735aa63b6d43a7724aaa13d1109ce96a78b0d2 100644 (file)
@@ -40,18 +40,9 @@ Pipe::Pipe()
        set_events(P_INPUT);
 }
 
-void Pipe::set_block(bool b)
+Pipe::~Pipe()
 {
-       mode = (mode&~M_NONBLOCK);
-       if(b)
-               mode = (mode|M_NONBLOCK);
-
-#ifndef WIN32
-       int flags = fcntl(handle[0], F_GETFD);
-       fcntl(handle[0], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK));
-       flags = fcntl(handle[1], F_GETFD);
-       fcntl(handle[1], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK));
-#endif
+       close();
 }
 
 void Pipe::close()
@@ -69,43 +60,20 @@ void Pipe::close()
 #endif
 }
 
-Handle Pipe::get_event_handle()
+void Pipe::set_block(bool b)
 {
-#ifdef WIN32
-       if(!overlapped && !buf_avail)
-       {
-               overlapped = new OVERLAPPED;
-               memset(overlapped, 0, sizeof(OVERLAPPED));
-               overlapped->hEvent = event;
-
-               DWORD ret;
-               buf_next = buffer;
-               if(!ReadFile(handle[0], buffer, buf_size, &ret, overlapped))
-               {
-                       unsigned err = GetLastError();
-                       if(err!=ERROR_IO_PENDING)
-                               throw SystemError("Failed to start an overlapped read", err);
-               }
-               else
-               {
-                       buf_avail = ret;
-                       delete overlapped;
-                       overlapped = 0;
-                       SetEvent(event);
-               }
-       }
+       mode = (mode&~M_NONBLOCK);
+       if(b)
+               mode = (mode|M_NONBLOCK);
 
-       return event;
-#else
-       return handle[0];
+#ifndef WIN32
+       int flags = fcntl(handle[0], F_GETFD);
+       fcntl(handle[0], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK));
+       flags = fcntl(handle[1], F_GETFD);
+       fcntl(handle[1], F_SETFL, (flags&O_NONBLOCK)|(b?0:O_NONBLOCK));
 #endif
 }
 
-Pipe::~Pipe()
-{
-       close();
-}
-
 unsigned Pipe::do_write(const char *buf, unsigned size)
 {
        if(size==0)
@@ -178,5 +146,37 @@ unsigned Pipe::do_read(char *buf, unsigned size)
        return ret;
 }
 
+Handle Pipe::get_event_handle()
+{
+#ifdef WIN32
+       if(!overlapped && !buf_avail)
+       {
+               overlapped = new OVERLAPPED;
+               memset(overlapped, 0, sizeof(OVERLAPPED));
+               overlapped->hEvent = event;
+
+               DWORD ret;
+               buf_next = buffer;
+               if(!ReadFile(handle[0], buffer, buf_size, &ret, overlapped))
+               {
+                       unsigned err = GetLastError();
+                       if(err!=ERROR_IO_PENDING)
+                               throw SystemError("Failed to start an overlapped read", err);
+               }
+               else
+               {
+                       buf_avail = ret;
+                       delete overlapped;
+                       overlapped = 0;
+                       SetEvent(event);
+               }
+       }
+
+       return event;
+#else
+       return handle[0];
+#endif
+}
+
 } // namespace IO
 } // namespace Msp