+ const std::string & GetStrError() const;
+ static void Start(void * data, const char * el, const char ** attr);
+ static void End(void * data, const char * el);
+
+ int RawXML(const std::string & request, RAW_XML::CALLBACK f, void * data);
+
+ template <class P, typename C>
+ int Exec(const std::string & request, C callback, void * data)
+ {
+ P cp(callback, data, encoding);
+ return ExecImpl(request, cp);
+ }
+
+ template <class P, typename C>
+ int Exec(const std::string & tag, const std::string & request, C callback, void * data)
+ {
+ P cp(tag, callback, data, encoding);
+ return ExecImpl(request, cp);
+ }
+
+ const std::string & Encoding() const { return encoding; }
+
+private:
+ NETTRANSACT nt;
+
+ std::string encoding;
+ std::string errorMsg;
+ XML_Parser parser;
+
+ static bool ParserRecv(const std::string & chunk, bool final, void * data);
+ static bool SimpleRecv(const std::string & chunk, bool final, void * data);
+ int ExecImpl(const std::string & request, PARSER & cp);
+};
+
+bool SERVCONF::IMPL::ParserRecv(const std::string & chunk, bool final, void * data)