00001 /*------------------------------------------------------------------------------ 00002 Name: SessionQos.h 00003 Project: xmlBlaster.org 00004 Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file 00005 Comment: Factory for SessionQosData (for org::xmlBlaster::util::qos::ConnectReturnQos and org::xmlBlaster::util::qos::ConnectQos) 00006 ------------------------------------------------------------------------------*/ 00007 00008 #ifndef _UTIL_QOS_SESSIONQOS_H 00009 #define _UTIL_QOS_SESSIONQOS_H 00010 00011 #include <util/xmlBlasterDef.h> 00012 #include <string> 00013 #include <util/XmlQoSBase.h> 00014 #include <util/StringTrim.h> 00015 #include <util/SessionName.h> 00016 00028 namespace org { namespace xmlBlaster { namespace util { namespace qos { 00029 00030 00031 00032 class Dll_Export SessionQosData : public org::xmlBlaster::util::ReferenceCounterBase 00033 { 00034 private: 00035 const std::string ME; 00036 long timeout_; 00037 int maxSessions_; 00038 bool clearSessions_; 00039 bool reconnectSameClientOnly_; 00040 std::string sessionId_; // secret ! 00041 org::xmlBlaster::util::SessionNameRef sessionName_; 00042 org::xmlBlaster::util::Global& global_; 00043 00044 friend class SessionQosFactory; 00045 00046 void copy(const SessionQosData& data); 00047 00048 void initialize(); 00049 00050 public: 00051 virtual ~SessionQosData(); 00052 00060 SessionQosData(org::xmlBlaster::util::Global& global, const std::string& absoluteName=""); 00061 00072 SessionQosData(org::xmlBlaster::util::Global& global, const std::string& defaultUserName, long publicSessionId); 00073 SessionQosData(const SessionQosData& data); 00074 SessionQosData& operator =(const SessionQosData& data); 00075 long getTimeout() const; 00076 void setTimeout(long timeout); 00077 int getMaxSessions() const; 00078 void setMaxSessions(int maxSessions); 00079 bool getClearSessions() const; 00080 void setClearSessions(bool clearSessions); 00081 bool getReconnectSameClientOnly() const; 00082 void setReconnectSameClientOnly(bool reconnectSameClientOnly); 00083 00095 void setAbsoluteName(/*const std::string nodeId="",*/ const std::string& name); 00096 std::string getRelativeName() const; 00097 std::string getAbsoluteName() const; 00098 std::string getClusterNodeId() const; 00099 void setClusterNodeId(const std::string& clusterNodeId); 00100 std::string getSubjectId() const; 00101 void setSubjectId(const std::string& subjectId); 00102 long getPubSessionId() const; 00103 void setPubSessionId(const long pubSessionId); 00108 org::xmlBlaster::util::SessionNameRef getSessionName(); 00109 00110 std::string getSecretSessionId() const; 00111 void setSecretSessionId(const std::string& sessionId); 00112 std::string toXml(const std::string& extraOffset="") const; 00116 static std::string usage(); 00117 }; 00118 00119 class Dll_Export SessionQosFactory: public util::XmlQoSBase 00120 { 00121 private: 00122 const std::string ME; 00123 SessionQosData* sessionQos_; 00124 00125 public: 00126 SessionQosFactory(org::xmlBlaster::util::Global& global); 00127 00128 ~SessionQosFactory(); 00129 00134 void characters(const std::string &ch); 00135 00142 void startElement(const std::string &name, const parser::AttributeMap& attrs); 00143 00149 void endElement(const std::string &name); 00150 00151 void reset(); 00152 00153 const SessionQosData& getData() const; 00154 00155 SessionQosData readObject(const std::string& qos); 00156 00157 }; 00158 00159 typedef SessionQosData SessionQos; 00160 00161 typedef SessionQosData SessionReturnQos; 00162 00163 typedef org::xmlBlaster::util::ReferenceHolder<SessionQosData> SessionQosRef; 00164 typedef org::xmlBlaster::util::ReferenceHolder<SessionReturnQos> SessionReturnQosRef; 00165 00166 }}}} // namespaces 00167 00168 #endif