util/qos/SessionQos.h

Go to the documentation of this file.
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