privatexml.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef PRIVATEXML_H__
00016 #define PRIVATEXML_H__
00017
00018 #include "iqhandler.h"
00019 #include "privatexmlhandler.h"
00020
00021 #include <string>
00022 #include <list>
00023 #include <map>
00024
00025 namespace gloox
00026 {
00027
00028 class ClientBase;
00029 class Tag;
00030 class Stanza;
00031
00037 class GLOOX_API PrivateXML : public IqHandler
00038 {
00039 public:
00046 PrivateXML( ClientBase* parent );
00047
00051 virtual ~PrivateXML();
00052
00060 std::string requestXML( const std::string& tag, const std::string& xmlns, PrivateXMLHandler* pxh );
00061
00069 std::string storeXML( const Tag* tag, PrivateXMLHandler* pxh );
00070
00071
00072 virtual bool handleIq( const IQ& iq ) { (void)iq; return false; }
00073
00074
00075 virtual void handleIqID( const IQ& iq, int context );
00076
00077 protected:
00078 ClientBase* m_parent;
00079
00080 private:
00081 #ifdef PRIVATEXML_TEST
00082 public:
00083 #endif
00084
00090 class Query : public StanzaExtension
00091 {
00092 public:
00098 Query( const std::string& tag, const std::string& xmlns )
00099 : StanzaExtension( ExtPrivateXML )
00100 {
00101 m_privateXML = new Tag( tag, XMLNS, xmlns );
00102 }
00103
00109 Query( const Tag* tag = 0 );
00110
00114 ~Query() { delete m_privateXML; }
00115
00120 const Tag* privateXML() const { return m_privateXML; }
00121
00122
00123 virtual const std::string& filterString() const;
00124
00125
00126 virtual StanzaExtension* newInstance( const Tag* tag ) const
00127 {
00128 return new Query( tag );
00129 }
00130
00131
00132 virtual Tag* tag() const;
00133
00134
00135 virtual StanzaExtension* clone() const
00136 {
00137 Query* q = new Query();
00138 q->m_privateXML = m_privateXML ? m_privateXML->clone() : 0;
00139 return q;
00140 }
00141
00142 private:
00143 const Tag* m_privateXML;
00144
00145 };
00146
00147 enum IdType
00148 {
00149 RequestXml,
00150 StoreXml
00151 };
00152
00153 typedef std::map<std::string, PrivateXMLHandler*> TrackMap;
00154
00155 TrackMap m_track;
00156 };
00157
00158 }
00159
00160 #endif // PRIVATEXML_H__