X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/6f7160dd027c8ce7e2760aa369768ba39ab80181..296c906e2689b9b5dc26d2f2d3e1e2d9e1662d3b:/projects/stargazer/admins_impl.h?ds=sidebyside diff --git a/projects/stargazer/admins_impl.h b/projects/stargazer/admins_impl.h index 8318fc21..cfaa787b 100644 --- a/projects/stargazer/admins_impl.h +++ b/projects/stargazer/admins_impl.h @@ -22,62 +22,62 @@ * Author : Boris Mikhailenko */ - /* - $Revision: 1.10 $ - $Date: 2010/10/04 20:17:12 $ - $Author: faust $ - */ +#pragma once + +#include "stg/admins.h" +#include "stg/admin.h" +#include "stg/store.h" +#include "stg/logger.h" -#ifndef ADMINS_IMPL_H -#define ADMINS_IMPL_H +#include +#include +#include +#include -#include -#include -#include +namespace STG +{ -#include "admins.h" -#include "admin.h" -#include "admin_impl.h" -#include "stg_locker.h" -#include "base_store.h" -#include "noncopyable.h" +class AdminsImpl : public Admins +{ + public: + explicit AdminsImpl(Store& st); -class ADMINS_IMPL : private NONCOPYABLE, public ADMINS { -public: - ADMINS_IMPL(BASE_STORE * st); - virtual ~ADMINS_IMPL() {}; + AdminsImpl(const AdminsImpl&) = delete; + AdminsImpl& operator=(const AdminsImpl&) = delete; - 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; - const std::string & GetStrError() const { return strError; }; + 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 OpenSearch() const; - int SearchNext(int, ADMIN_CONF * ac) const; - int CloseSearch(int) const; + const std::string& strError() const override { return m_strError; } -private: - typedef list::iterator admin_iter; - typedef list::const_iterator const_admin_iter; + size_t count() const override { return m_data.size(); } - int ReadAdmins(); + void fmap(std::function callback) const override + { + for (const auto& admin : m_data) + callback(admin); + } - ADMIN_IMPL stg; - ADMIN_IMPL noAdmin; - list data; - BASE_STORE * store; - STG_LOGGER & WriteServLog; - mutable map searchDescriptors; - mutable unsigned int handle; - mutable pthread_mutex_t mutex; - std::string strError; + 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 m_stg; + Admin m_noAdmin; + std::vector m_data; + Store& m_store; + Logger& WriteServLog; + mutable std::mutex m_mutex; + std::string m_strError; }; -#endif + +}