X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/90e389f6ec12e60a62c362296ffcf314feb5b03d..296c906e2689b9b5dc26d2f2d3e1e2d9e1662d3b:/projects/stargazer/admins_impl.h?ds=sidebyside diff --git a/projects/stargazer/admins_impl.h b/projects/stargazer/admins_impl.h index 170f3a4f..cfaa787b 100644 --- a/projects/stargazer/admins_impl.h +++ b/projects/stargazer/admins_impl.h @@ -22,64 +22,62 @@ * Author : Boris Mikhailenko */ - /* - $Revision: 1.10 $ - $Date: 2010/10/04 20:17:12 $ - $Author: faust $ - */ - -#ifndef ADMINS_IMPL_H -#define ADMINS_IMPL_H - -#include - -#include -#include +#pragma once #include "stg/admins.h" #include "stg/admin.h" -#include "stg/locker.h" #include "stg/store.h" -#include "stg/noncopyable.h" -#include "admin_impl.h" +#include "stg/logger.h" + +#include +#include +#include +#include + +namespace STG +{ + +class AdminsImpl : public Admins +{ + public: + explicit AdminsImpl(Store& st); + + AdminsImpl(const AdminsImpl&) = delete; + AdminsImpl& operator=(const AdminsImpl&) = delete; -class ADMINS_IMPL : private NONCOPYABLE, public ADMINS { -public: - ADMINS_IMPL(STORE * st); - virtual ~ADMINS_IMPL() {} + int add(const std::string& login, const Admin& admin) override; + int del(const std::string& login, const Admin& admin) override; + int change(const AdminConf& ac, const Admin& admin) override; + const Admin& sysAdmin() const override { return m_stg; } + const Admin& noAdmin() const override { return m_noAdmin; } + bool find(const std::string& login, Admin** admin) override; + bool exists(const std::string& login) const override; + bool correct(const std::string& login, + const std::string& password, + Admin** admin) override; - int Add(const string & login, const ADMIN * admin); - int Del(const string & login, const ADMIN * admin); - int Change(const ADMIN_CONF & ac, const ADMIN * admin); - void PrintAdmins() const; - const ADMIN * GetSysAdmin() const { return &stg; } - const ADMIN * GetNoAdmin() const { return &noAdmin; } - bool FindAdmin(const std::string & l, ADMIN ** admin); - bool AdminExists(const std::string & login) const; - bool AdminCorrect(const std::string & login, - const std::string & password, - ADMIN ** admin); - const std::string & GetStrError() const { return strError; } + const std::string& strError() const override { return m_strError; } - int OpenSearch() const; - int SearchNext(int, ADMIN_CONF * ac) const; - int CloseSearch(int) const; + size_t count() const override { return m_data.size(); } -private: - typedef list::iterator admin_iter; - typedef list::const_iterator const_admin_iter; + void fmap(std::function callback) const override + { + for (const auto& admin : m_data) + callback(admin); + } - int ReadAdmins(); + private: + void read(); + auto find(const std::string& login) { return std::find(m_data.begin(), m_data.end(), Admin(Priv(0), login, "")); } + auto find(const std::string& login) const { return std::find(m_data.begin(), m_data.end(), Admin(Priv(0), login, "")); } - ADMIN_IMPL stg; - ADMIN_IMPL noAdmin; - list data; - STORE * store; - STG_LOGGER & WriteServLog; - mutable map searchDescriptors; - mutable unsigned int handle; - mutable pthread_mutex_t mutex; - std::string strError; + Admin m_stg; + Admin m_noAdmin; + std::vector m_data; + Store& m_store; + Logger& WriteServLog; + mutable std::mutex m_mutex; + std::string m_strError; }; -#endif +}