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 
00036 #ifndef OW_CIMPROTOCOL_HPP_INCLUDE_GUARD_
00037 #define OW_CIMPROTOCOL_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_Exception.hpp"
00040 #include "OW_CIMFeatures.hpp"
00041 #include "OW_IntrusiveReference.hpp"
00042 #include "OW_IntrusiveCountableBase.hpp"
00043 #include "OW_ClientAuthCBIFC.hpp"
00044 #include "OW_SocketAddress.hpp"
00045 #include "OW_CIMProtocolIStreamIFC.hpp"
00046 #include "OW_Reference.hpp"
00047 #include "OW_IfcsFwd.hpp"
00048 #include <iosfwd>
00049 
00050 
00051 
00052 
00053 namespace OW_NAMESPACE
00054 {
00055 
00056 OW_DECLARE_APIEXCEPTION(CIMProtocol, OW_COMMON_API);
00057 class OW_COMMON_API CIMProtocolIFC : public IntrusiveCountableBase
00058 {
00059 public:
00060    virtual ~CIMProtocolIFC();
00061    virtual Reference<std::iostream> beginRequest(
00062          const String& methodName, const String& nameSpace) = 0;
00063 
00068    enum ERequestType
00069    {
00070       E_CIM_OPERATION_REQUEST,
00071       E_CIM_EXPORT_REQUEST,
00072       E_CIM_BATCH_OPERATION_REQUEST,
00073       E_CIM_BATCH_EXPORT_REQUEST,
00074       E_CIM_OPERATION_RESPONSE,
00075       E_CIM_EXPORT_RESPONSE
00076    };
00097    virtual CIMProtocolIStreamIFCRef endRequest(
00098       const Reference<std::iostream>& request,
00099       const String& methodName, 
00100       const String& cimObject, 
00101       ERequestType requestType, 
00102       const String& cimProtocolVersion) = 0;
00107    virtual CIMFeatures getFeatures() = 0;
00108    
00114    void setLoginCallBack(const ClientAuthCBIFCRef& loginCB)
00115       { m_loginCB = loginCB; }
00116    void setContentType(const String& ct)
00117       { m_contentType = ct; }
00122    virtual SocketAddress getLocalAddress() const = 0;
00127    virtual SocketAddress getPeerAddress()  const = 0;
00128 
00133    virtual void close() = 0;
00134 
00135    static const int INFINITE_TIMEOUT = -1;
00140    virtual void setReceiveTimeout(int seconds) = 0;
00145    virtual int getReceiveTimeout() const = 0;
00150    virtual void setSendTimeout(int seconds) = 0;
00155    virtual int getSendTimeout() const = 0;
00160    virtual void setConnectTimeout(int seconds) = 0;
00165    virtual int getConnectTimeout() const = 0;
00170    virtual void setTimeouts(int seconds) = 0;
00171 
00172 protected:
00173 
00174 #ifdef OW_WIN32
00175 #pragma warning (push)
00176 #pragma warning (disable: 4251)
00177 #endif
00178 
00179    ClientAuthCBIFCRef m_loginCB;
00180 
00181 #ifdef OW_WIN32
00182 #pragma warning (pop)
00183 #endif
00184 
00185    String m_contentType;
00186 };
00187 
00188 } 
00189 
00190 #endif