+#include <expat.h>
+
+class SERVCONF::IMPL
+{
+public:
+ IMPL(const std::string & server, uint16_t port,
+ const std::string & login, const std::string & password);
+
+ int GetUsers(PARSER_GET_USERS::CALLBACK f, void * data);
+ int GetUser(const std::string & login, PARSER_GET_USER::CALLBACK f, void * data);
+ int ChgUser(const std::string & request, PARSER_CHG_USER::CALLBACK f, void * data);
+ int AuthBy(const std::string & login, PARSER_AUTH_BY::CALLBACK f, void * data);
+ int SendMessage(const std::string & request, PARSER_SEND_MESSAGE::CALLBACK f, void * data);
+ int ServerInfo(PARSER_SERVER_INFO::CALLBACK f, void * data);
+ int CheckUser(const std::string & login, const std::string & password, PARSER_CHECK_USER::CALLBACK f, void * data);
+
+ const std::string & GetStrError() const;
+ static void Start(void * data, const char * el, const char ** attr);
+ static void End(void * data, const char * el);
+
+private:
+ PARSER_GET_USERS parserGetUsers;
+ PARSER_GET_USER parserGetUser;
+ PARSER_AUTH_BY parserAuthBy;
+ PARSER_SERVER_INFO parserServerInfo;
+ PARSER_CHG_USER parserChgUser;
+ PARSER_CHECK_USER parserCheckUser;
+ PARSER_SEND_MESSAGE parserSendMessage;
+
+ NETTRANSACT nt;
+
+ std::string errorMsg;
+ XML_Parser parser;
+
+ int Exec(const std::string & request, PARSER & cp);
+
+ static bool AnsRecv(void * data, const std::string & chunk, bool final);
+};
+
+/*namespace