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_