]> git.stg.codes - stg.git/blobdiff - libs/srvconf/servconf.cpp
Use std::lock_guard instead of STG_LOCKER.
[stg.git] / libs / srvconf / servconf.cpp
index c4e4bdf6c846f7fd11c82fd4a082eef0bc609bb0..408e93fc454c6d936a13c6b3d7efb3d397478d09 100644 (file)
@@ -65,7 +65,7 @@ class ServConf::Impl
         Impl(const std::string& server, uint16_t port,
              const std::string& localAddress, uint16_t localPort,
              const std::string& login, const std::string& password);
-        ~Impl() { XML_ParserFree(parser); }
+        ~Impl() { XML_ParserFree(m_parser); }
 
         const std::string& GetStrError() const;
         static void Start(void* data, const char* el, const char** attr);
@@ -76,23 +76,23 @@ class ServConf::Impl
         template <class P, typename C>
         int Exec(const std::string& request, C callback, void* data)
         {
-            return ExecImpl(request, P(callback, data, encoding));
+            return ExecImpl(request, P(callback, data, m_encoding));
         }
 
         template <class P, typename C>
         int Exec(const std::string& tag, const std::string& request, C callback, void* data)
         {
-            return ExecImpl(request, P(tag, callback, data, encoding));
+            return ExecImpl(request, P(tag, callback, data, m_encoding));
         }
 
-        const std::string& Encoding() const { return encoding; }
+        const std::string& Encoding() const { return m_encoding; }
 
     private:
-        NetTransact nt;
+        NetTransact m_nt;
 
-        std::string encoding;
-        std::string errorMsg;
-        XML_Parser parser;
+        std::string m_encoding;
+        std::string m_errorMsg;
+        XML_Parser m_parser;
 
         static bool ParserRecv(const std::string& chunk, bool last, void* data);
         static bool SimpleRecv(const std::string& chunk, bool last, void* data);
@@ -101,14 +101,14 @@ class ServConf::Impl
 
 bool ServConf::Impl::ParserRecv(const std::string& chunk, bool last, void* data)
 {
-    auto sc = static_cast<ServConf::Impl*>(data);
+    auto* sc = static_cast<ServConf::Impl*>(data);
 
-    if (XML_Parse(sc->parser, chunk.c_str(), chunk.length(), last) == XML_STATUS_ERROR)
+    if (XML_Parse(sc->m_parser, chunk.c_str(), chunk.length(), last) == XML_STATUS_ERROR)
     {
-        strprintf(&sc->errorMsg, "XML parse error at line %d, %d: %s. Is last: %d",
-                  static_cast<int>(XML_GetCurrentLineNumber(sc->parser)),
-                  static_cast<int>(XML_GetCurrentColumnNumber(sc->parser)),
-                  XML_ErrorString(XML_GetErrorCode(sc->parser)), (int)last);
+        strprintf(&sc->m_errorMsg, "XML parse error at line %d, %d: %s. Is last: %d",
+                  static_cast<int>(XML_GetCurrentLineNumber(sc->m_parser)),
+                  static_cast<int>(XML_GetCurrentColumnNumber(sc->m_parser)),
+                  XML_ErrorString(XML_GetErrorCode(sc->m_parser)), static_cast<int>(last));
         return false;
     }
 
@@ -123,106 +123,106 @@ bool ServConf::Impl::SimpleRecv(const std::string& chunk, bool /*last*/, void* d
 
 ServConf::ServConf(const std::string& server, uint16_t port,
                    const std::string& login, const std::string& password)
-    : pImpl(new Impl(server, port, login, password))
+    : m_impl(new Impl(server, port, login, password))
 {
 }
 
 ServConf::ServConf(const std::string& server, uint16_t port,
                    const std::string& localAddress, uint16_t localPort,
                    const std::string& login, const std::string& password)
-    : pImpl(new Impl(server, port, localAddress, localPort, login, password))
+    : m_impl(new Impl(server, port, localAddress, localPort, login, password))
 {
 }
 
 ServConf::~ServConf()
 {
-    delete pImpl;
+    delete m_impl;
 }
 
 int ServConf::ServerInfo(ServerInfo::Callback f, void* data)
 {
-    return pImpl->Exec<ServerInfo::Parser>("<GetServerInfo/>", f, data);
+    return m_impl->Exec<ServerInfo::Parser>("<GetServerInfo/>", f, data);
 }
 
 int ServConf::RawXML(const std::string& request, RawXML::Callback f, void* data)
 {
-    return pImpl->RawXML(request, f, data);
+    return m_impl->RawXML(request, f, data);
 }
 
 // -- Admins --
 
 int ServConf::GetAdmins(GetContainer::Callback<GetAdmin::Info>::Type f, void* data)
 {
-    return pImpl->Exec<GetContainer::Parser<GetAdmin::Parser> >("admins", "<GetAdmins/>", f, data);
+    return m_impl->Exec<GetContainer::Parser<GetAdmin::Parser> >("admins", "<GetAdmins/>", f, data);
 }
 
 int ServConf::GetAdmin(const std::string& login, GetAdmin::Callback f, void* data)
 {
-    return pImpl->Exec<GetAdmin::Parser>("<GetAdmin login=\"" + login + "\"/>", f, data);
+    return m_impl->Exec<GetAdmin::Parser>("<GetAdmin login=\"" + login + "\"/>", f, data);
 }
 
 int ServConf::ChgAdmin(const AdminConfOpt& conf, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("ChgAdmin", "<ChgAdmin" + ChgAdmin::serialize(conf, pImpl->Encoding()) + "/>", f, data);
+    return m_impl->Exec<Simple::Parser>("ChgAdmin", "<ChgAdmin" + ChgAdmin::serialize(conf, m_impl->Encoding()) + "/>", f, data);
 }
 
 int ServConf::AddAdmin(const std::string& login,
                        const AdminConfOpt& conf,
                        Simple::Callback f, void* data)
 {
-    auto res = pImpl->Exec<Simple::Parser>("AddAdmin", "<AddAdmin login=\"" + login + "\"/>", f, data);
+    auto res = m_impl->Exec<Simple::Parser>("AddAdmin", "<AddAdmin login=\"" + login + "\"/>", f, data);
     if (res != st_ok)
         return res;
-    return pImpl->Exec<Simple::Parser>("ChgAdmin", "<ChgAdmin" + ChgAdmin::serialize(conf, pImpl->Encoding()) + "/>", f, data);
+    return m_impl->Exec<Simple::Parser>("ChgAdmin", "<ChgAdmin" + ChgAdmin::serialize(conf, m_impl->Encoding()) + "/>", f, data);
 }
 
 int ServConf::DelAdmin(const std::string& login, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("DelAdmin", "<DelAdmin login=\"" + login + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("DelAdmin", "<DelAdmin login=\"" + login + "\"/>", f, data);
 }
 
 // -- Tariffs --
 
 int ServConf::GetTariffs(GetContainer::Callback<GetTariff::Info>::Type f, void* data)
 {
-    return pImpl->Exec<GetContainer::Parser<GetTariff::Parser> >("tariffs", "<GetTariffs/>", f, data);
+    return m_impl->Exec<GetContainer::Parser<GetTariff::Parser> >("tariffs", "<GetTariffs/>", f, data);
 }
 
 int ServConf::GetTariff(const std::string& name, GetTariff::Callback f, void* data)
 {
-    return pImpl->Exec<GetTariff::Parser>("<GetTariff name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<GetTariff::Parser>("<GetTariff name=\"" + name + "\"/>", f, data);
 }
 
 int ServConf::ChgTariff(const TariffDataOpt& tariffData, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("SetTariff", "<SetTariff name=\"" + tariffData.tariffConf.name.data() + "\">" + ChgTariff::serialize(tariffData, pImpl->Encoding()) + "</SetTariff>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetTariff", "<SetTariff name=\"" + tariffData.tariffConf.name.value() + "\">" + ChgTariff::serialize(tariffData, m_impl->Encoding()) + "</SetTariff>", f, data);
 }
 
 int ServConf::AddTariff(const std::string& name,
                         const TariffDataOpt& tariffData,
                         Simple::Callback f, void* data)
 {
-    auto res = pImpl->Exec<Simple::Parser>("AddTariff", "<AddTariff name=\"" + name + "\"/>", f, data);
+    auto res = m_impl->Exec<Simple::Parser>("AddTariff", "<AddTariff name=\"" + name + "\"/>", f, data);
     if (res != st_ok)
         return res;
-    return pImpl->Exec<Simple::Parser>("SetTariff", "<SetTariff name=\"" + name + "\">" + ChgTariff::serialize(tariffData, pImpl->Encoding()) + "</SetTariff>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetTariff", "<SetTariff name=\"" + name + "\">" + ChgTariff::serialize(tariffData, m_impl->Encoding()) + "</SetTariff>", f, data);
 }
 
 int ServConf::DelTariff(const std::string& name, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("DelTariff", "<DelTariff name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("DelTariff", "<DelTariff name=\"" + name + "\"/>", f, data);
 }
 
 // -- Users --
 
 int ServConf::GetUsers(GetContainer::Callback<GetUser::Info>::Type f, void* data)
 {
-    return pImpl->Exec<GetContainer::Parser<GetUser::Parser> >("users", "<GetUsers/>", f, data);
+    return m_impl->Exec<GetContainer::Parser<GetUser::Parser> >("users", "<GetUsers/>", f, data);
 }
 
 int ServConf::GetUser(const std::string& login, GetUser::Callback f, void* data)
 {
-    return pImpl->Exec<GetUser::Parser>("<GetUser login=\"" + login + "\"/>", f, data);
+    return m_impl->Exec<GetUser::Parser>("<GetUser login=\"" + login + "\"/>", f, data);
 }
 
 int ServConf::ChgUser(const std::string& login,
@@ -230,12 +230,12 @@ int ServConf::ChgUser(const std::string& login,
                       const UserStatOpt& stat,
                       Simple::Callback f, void* data)
 {
-    return pImpl->Exec<ChgUser::Parser>("<SetUser><Login value=\"" + login + "\"/>" + ChgUser::serialize(conf, stat, pImpl->Encoding()) + "</SetUser>", f, data);
+    return m_impl->Exec<ChgUser::Parser>("<SetUser><Login value=\"" + login + "\"/>" + ChgUser::serialize(conf, stat, m_impl->Encoding()) + "</SetUser>", f, data);
 }
 
 int ServConf::DelUser(const std::string& login, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("DelUser", "<DelUser login=\"" + login + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("DelUser", "<DelUser login=\"" + login + "\"/>", f, data);
 }
 
 int ServConf::AddUser(const std::string& login,
@@ -243,116 +243,116 @@ int ServConf::AddUser(const std::string& login,
                       const UserStatOpt& stat,
                       Simple::Callback f, void* data)
 {
-    auto res = pImpl->Exec<Simple::Parser>("AddUser", "<AddUser><Login value=\"" + login + "\"/></AddUser>", f, data);
+    auto res = m_impl->Exec<Simple::Parser>("AddUser", "<AddUser><Login value=\"" + login + "\"/></AddUser>", f, data);
     if (res != st_ok)
         return res;
-    return pImpl->Exec<ChgUser::Parser>("<SetUser><Login value=\"" + login + "\"/>" + ChgUser::serialize(conf, stat, pImpl->Encoding()) + "</SetUser>", f, data);
+    return m_impl->Exec<ChgUser::Parser>("<SetUser><Login value=\"" + login + "\"/>" + ChgUser::serialize(conf, stat, m_impl->Encoding()) + "</SetUser>", f, data);
 }
 
 int ServConf::AuthBy(const std::string& login, AuthBy::Callback f, void* data)
 {
-    return pImpl->Exec<AuthBy::Parser>("<GetUserAuthBy login=\"" + login + "\"/>", f, data);
+    return m_impl->Exec<AuthBy::Parser>("<GetUserAuthBy login=\"" + login + "\"/>", f, data);
 }
 
 int ServConf::SendMessage(const std::string& login, const std::string& text, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("SendMessageResult", "<Message login=\"" + login + "\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"" + Encode12str(text) + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("SendMessageResult", "<Message login=\"" + login + "\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"" + Encode12str(text) + "\"/>", f, data);
 }
 
 int ServConf::CheckUser(const std::string& login, const std::string& password, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("CheckUser", "<CheckUser login=\"" + login + "\" password=\"" + password + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("CheckUser", "<CheckUser login=\"" + login + "\" password=\"" + password + "\"/>", f, data);
 }
 
 // -- Services --
 
 int ServConf::GetServices(GetContainer::Callback<GetService::Info>::Type f, void* data)
 {
-    return pImpl->Exec<GetContainer::Parser<GetService::Parser> >("services", "<GetServices/>", f, data);
+    return m_impl->Exec<GetContainer::Parser<GetService::Parser> >("services", "<GetServices/>", f, data);
 }
 
 int ServConf::GetService(const std::string& name, GetService::Callback f, void* data)
 {
-    return pImpl->Exec<GetService::Parser>("<GetService name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<GetService::Parser>("<GetService name=\"" + name + "\"/>", f, data);
 }
 
 int ServConf::ChgService(const ServiceConfOpt& conf, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("SetService", "<SetService " + ChgService::serialize(conf, pImpl->Encoding()) + "/>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetService", "<SetService " + ChgService::serialize(conf, m_impl->Encoding()) + "/>", f, data);
 }
 
 int ServConf::AddService(const std::string& name,
                          const ServiceConfOpt& conf,
                          Simple::Callback f, void* data)
 {
-    auto res = pImpl->Exec<Simple::Parser>("AddService", "<AddService name=\"" + name + "\"/>", f, data);
+    auto res = m_impl->Exec<Simple::Parser>("AddService", "<AddService name=\"" + name + "\"/>", f, data);
     if (res != st_ok)
         return res;
-    return pImpl->Exec<Simple::Parser>("SetService", "<SetService " + ChgService::serialize(conf, pImpl->Encoding()) + "/>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetService", "<SetService " + ChgService::serialize(conf, m_impl->Encoding()) + "/>", f, data);
 }
 
 int ServConf::DelService(const std::string& name, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("DelService", "<DelService name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("DelService", "<DelService name=\"" + name + "\"/>", f, data);
 }
 
 // -- Corporations --
 
 int ServConf::GetCorporations(GetContainer::Callback<GetCorp::Info>::Type f, void* data)
 {
-    return pImpl->Exec<GetContainer::Parser<GetCorp::Parser> >("corporations", "<GetCorporations/>", f, data);
+    return m_impl->Exec<GetContainer::Parser<GetCorp::Parser> >("corporations", "<GetCorporations/>", f, data);
 }
 
 int ServConf::GetCorp(const std::string& name, GetCorp::Callback f, void* data)
 {
-    return pImpl->Exec<GetCorp::Parser>("<GetCorp name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<GetCorp::Parser>("<GetCorp name=\"" + name + "\"/>", f, data);
 }
 
 int ServConf::ChgCorp(const CorpConfOpt & conf, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("SetCorp", "<SetCorp name=\"" + conf.name.data() + "\">" + ChgCorp::serialize(conf, pImpl->Encoding()) + "</SetCorp>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetCorp", "<SetCorp name=\"" + conf.name.value() + "\">" + ChgCorp::serialize(conf, m_impl->Encoding()) + "</SetCorp>", f, data);
 }
 
 int ServConf::AddCorp(const std::string& name,
                       const CorpConfOpt& conf,
                       Simple::Callback f, void* data)
 {
-    auto res = pImpl->Exec<Simple::Parser>("AddCorp", "<AddCorp name=\"" + name + "\"/>", f, data);
+    auto res = m_impl->Exec<Simple::Parser>("AddCorp", "<AddCorp name=\"" + name + "\"/>", f, data);
     if (res != st_ok)
         return res;
-    return pImpl->Exec<Simple::Parser>("SetCorp", "<SetCorp name=\"" + name + "\">" + ChgCorp::serialize(conf, pImpl->Encoding()) + "</SetCorp>", f, data);
+    return m_impl->Exec<Simple::Parser>("SetCorp", "<SetCorp name=\"" + name + "\">" + ChgCorp::serialize(conf, m_impl->Encoding()) + "</SetCorp>", f, data);
 }
 
 int ServConf::DelCorp(const std::string& name, Simple::Callback f, void* data)
 {
-    return pImpl->Exec<Simple::Parser>("DelCorp", "<DelCorp name=\"" + name + "\"/>", f, data);
+    return m_impl->Exec<Simple::Parser>("DelCorp", "<DelCorp name=\"" + name + "\"/>", f, data);
 }
 
 const std::string& ServConf::GetStrError() const
 {
-    return pImpl->GetStrError();
+    return m_impl->GetStrError();
 }
 
 //-----------------------------------------------------------------------------
 ServConf::Impl::Impl(const std::string& server, uint16_t port,
                      const std::string& login, const std::string& password)
-    : nt(server, port, login, password)
+    : m_nt(server, port, login, password)
 {
     setlocale(LC_ALL, "");
     setlocale(LC_NUMERIC, "C");
-    encoding = nl_langinfo(CODESET);
-    parser = XML_ParserCreate(NULL);
+    m_encoding = nl_langinfo(CODESET);
+    m_parser = XML_ParserCreate(NULL);
 }
 //-----------------------------------------------------------------------------
 ServConf::Impl::Impl(const std::string& server, uint16_t port,
                      const std::string& localAddress, uint16_t localPort,
                      const std::string& login, const std::string& password)
-    : nt(server, port, localAddress, localPort, login, password)
+    : m_nt(server, port, localAddress, localPort, login, password)
 {
     setlocale(LC_ALL, "");
     setlocale(LC_NUMERIC, "C");
-    encoding = nl_langinfo(CODESET);
-    parser = XML_ParserCreate(NULL);
+    m_encoding = nl_langinfo(CODESET);
+    m_parser = XML_ParserCreate(NULL);
 }
 //-----------------------------------------------------------------------------
 void ServConf::Impl::Start(void* data, const char* el, const char** attr)
@@ -367,51 +367,51 @@ void ServConf::Impl::End(void* data, const char* el)
 //-----------------------------------------------------------------------------
 const std::string & ServConf::Impl::GetStrError() const
 {
-    return errorMsg;
+    return m_errorMsg;
 }
 //-----------------------------------------------------------------------------
 int ServConf::Impl::ExecImpl(const std::string& request, Parser&& cp)
 {
-    XML_ParserReset(parser, NULL);
-    XML_SetElementHandler(parser, Start, End);
-    XML_SetUserData(parser, &cp);
+    XML_ParserReset(m_parser, NULL);
+    XML_SetElementHandler(m_parser, Start, End);
+    XML_SetUserData(m_parser, &cp);
 
     int ret = 0;
-    if ((ret = nt.Connect()) != st_ok)
+    if ((ret = m_nt.Connect()) != st_ok)
     {
-        errorMsg = nt.GetError();
-        cp.Failure(errorMsg);
+        m_errorMsg = m_nt.GetError();
+        cp.Failure(m_errorMsg);
         return ret;
     }
-    if ((ret = nt.Transact(request, ParserRecv, this)) != st_ok)
+    if ((ret = m_nt.Transact(request, ParserRecv, this)) != st_ok)
     {
-        errorMsg = nt.GetError();
-        cp.Failure(errorMsg);
+        m_errorMsg = m_nt.GetError();
+        cp.Failure(m_errorMsg);
         return ret;
     }
 
-    nt.Disconnect();
+    m_nt.Disconnect();
     return st_ok;
 }
 
 int ServConf::Impl::RawXML(const std::string& request, RawXML::Callback callback, void* data)
 {
     int ret = 0;
-    if ((ret = nt.Connect()) != st_ok)
+    if ((ret = m_nt.Connect()) != st_ok)
         {
-        errorMsg = nt.GetError();
-        callback(false, errorMsg, "", data);
+        m_errorMsg = m_nt.GetError();
+        callback(false, m_errorMsg, "", data);
         return ret;
         }
     std::string response;
-    if ((ret = nt.Transact(request, SimpleRecv, &response)) != st_ok)
+    if ((ret = m_nt.Transact(request, SimpleRecv, &response)) != st_ok)
         {
-        errorMsg = nt.GetError();
-        callback(false, errorMsg, "", data);
+        m_errorMsg = m_nt.GetError();
+        callback(false, m_errorMsg, "", data);
         return ret;
         }
 
-    nt.Disconnect();
+    m_nt.Disconnect();
     callback(true, "", response, data);
     return st_ok;
 }