summaryrefslogtreecommitdiff
path: root/lib/server/SocketStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/server/SocketStream.h')
-rwxr-xr-xlib/server/SocketStream.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/server/SocketStream.h b/lib/server/SocketStream.h
new file mode 100755
index 00000000..9b16dbfc
--- /dev/null
+++ b/lib/server/SocketStream.h
@@ -0,0 +1,56 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: SocketStream.h
+// Purpose: I/O stream interface for sockets
+// Created: 2003/07/31
+//
+// --------------------------------------------------------------------------
+
+#ifndef SOCKETSTREAM__H
+#define SOCKETSTREAM__H
+
+#include "IOStream.h"
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: SocketStream
+// Purpose: Stream interface for sockets
+// Created: 2003/07/31
+//
+// --------------------------------------------------------------------------
+class SocketStream : public IOStream
+{
+public:
+ SocketStream();
+ SocketStream(int socket);
+ SocketStream(const SocketStream &rToCopy);
+ ~SocketStream();
+
+ void Open(int Type, const char *Name, int Port = 0);
+ void Attach(int socket);
+
+ virtual int Read(void *pBuffer, int NBytes, int Timeout = IOStream::TimeOutInfinite);
+ virtual void Write(const void *pBuffer, int NBytes);
+ virtual void Close();
+ virtual bool StreamDataLeft();
+ virtual bool StreamClosed();
+
+ virtual void Shutdown(bool Read = true, bool Write = true);
+
+ virtual bool GetPeerCredentials(uid_t &rUidOut, gid_t &rGidOut);
+
+protected:
+ int GetSocketHandle();
+ void MarkAsReadClosed() {mReadClosed = true;}
+ void MarkAsWriteClosed() {mWriteClosed = true;}
+
+private:
+ int mSocketHandle;
+ bool mReadClosed;
+ bool mWriteClosed;
+};
+
+#endif // SOCKETSTREAM__H
+