00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00035 #ifndef OW_UNNAMEDPIPE_HPP_
00036 #define OW_UNNAMEDPIPE_HPP_
00037 #include "OW_config.h"
00038 #include "OW_SelectableIFC.hpp"
00039 #include "OW_Exception.hpp"
00040 #include "OW_IntrusiveReference.hpp"
00041 #include "OW_IOIFC.hpp"
00042 #include "OW_CommonFwd.hpp"
00043
00044 namespace OW_NAMESPACE
00045 {
00046
00047
00048 OW_DECLARE_APIEXCEPTION(UnnamedPipe, OW_COMMON_API);
00049
00054 class OW_COMMON_API UnnamedPipe : public SelectableIFC, public IOIFC
00055 {
00056 public:
00057 virtual ~UnnamedPipe();
00058
00067 int writeInt(int value);
00068
00078 int writeString(const String& strData);
00079
00088 int readInt(int* value);
00089
00101 int readString(String& strData);
00102
00109 void setReadTimeout(int seconds) { m_readTimeout = seconds; }
00116 int getReadTimeout() { return m_readTimeout; }
00123 void setWriteTimeout(int seconds) { m_writeTimeout = seconds; }
00130 int getWriteTimeout() { return m_writeTimeout; }
00137 void setTimeouts(int seconds) { m_readTimeout = m_writeTimeout = seconds; }
00138
00147 String readAll();
00148
00152 virtual void open() = 0;
00153
00158 virtual int close() = 0;
00159
00163 virtual bool isOpen() const = 0;
00164
00168 virtual Select_t getWriteSelectObj() const = 0;
00169
00170
00171 enum EBlockingMode
00172 {
00173 E_NONBLOCKING,
00174 E_BLOCKING
00175 };
00181 virtual void setBlocking(EBlockingMode outputIsBlocking=E_BLOCKING) = 0;
00182 virtual void setOutputBlocking(bool outputIsBlocking=true) OW_DEPRECATED = 0;
00183
00184
00185 enum EOpen
00186 {
00187 E_DONT_OPEN,
00188 E_OPEN
00189 };
00195 static UnnamedPipeRef createUnnamedPipe(EOpen doOpen=E_OPEN);
00196
00197 protected:
00198 UnnamedPipe()
00199 : SelectableIFC()
00200 {}
00201 int m_readTimeout;
00202 int m_writeTimeout;
00203 };
00204 OW_EXPORT_TEMPLATE(OW_COMMON_API, IntrusiveReference, UnnamedPipe);
00205
00206 }
00207
00208 #endif // OW_UNNAMEDPIPE_HPP_