1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * Copyright 2004 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
- #ifndef THIRD_PARTY_LIBJINGLE_XMPP_XMPP_XMPPSTANZAPARSER_H_
- #define THIRD_PARTY_LIBJINGLE_XMPP_XMPP_XMPPSTANZAPARSER_H_
- #include "third_party/libjingle_xmpp/xmllite/xmlbuilder.h"
- #include "third_party/libjingle_xmpp/xmllite/xmlparser.h"
- namespace jingle_xmpp {
- class XmlElement;
- class XmppStanzaParseHandler {
- public:
- virtual ~XmppStanzaParseHandler() {}
- virtual void StartStream(const XmlElement * pelStream) = 0;
- virtual void Stanza(const XmlElement * pelStanza) = 0;
- virtual void EndStream() = 0;
- virtual void XmlError() = 0;
- };
- class XmppStanzaParser {
- public:
- XmppStanzaParser(XmppStanzaParseHandler *psph);
- bool Parse(const char * data, size_t len, bool isFinal)
- { return parser_.Parse(data, len, isFinal); }
- void Reset();
- private:
- class ParseHandler : public XmlParseHandler {
- public:
- ParseHandler(XmppStanzaParser * outer) : outer_(outer) {}
- virtual void StartElement(XmlParseContext * pctx,
- const char * name, const char ** atts)
- { outer_->IncomingStartElement(pctx, name, atts); }
- virtual void EndElement(XmlParseContext * pctx,
- const char * name)
- { outer_->IncomingEndElement(pctx, name); }
- virtual void CharacterData(XmlParseContext * pctx,
- const char * text, int len)
- { outer_->IncomingCharacterData(pctx, text, len); }
- virtual void Error(XmlParseContext * pctx,
- XML_Error errCode)
- { outer_->IncomingError(pctx, errCode); }
- private:
- XmppStanzaParser * const outer_;
- };
- friend class ParseHandler;
- void IncomingStartElement(XmlParseContext * pctx,
- const char * name, const char ** atts);
- void IncomingEndElement(XmlParseContext * pctx,
- const char * name);
- void IncomingCharacterData(XmlParseContext * pctx,
- const char * text, int len);
- void IncomingError(XmlParseContext * pctx,
- XML_Error errCode);
- XmppStanzaParseHandler * psph_;
- ParseHandler innerHandler_;
- XmlParser parser_;
- int depth_;
- XmlBuilder builder_;
- };
- }
- #endif // THIRD_PARTY_LIBJINGLE_XMPP_XMPP_XMPPSTANZAPARSER_H_
|