]> git.stg.codes - stg.git/blobdiff - projects/stargazer/services_impl.h
Merge branch 'stg-2.409' into stg-2.409-radius
[stg.git] / projects / stargazer / services_impl.h
index d0c1c52ca690c09245782f76d2df3021e3fed38f..8101f2d94314a0fb9709b2e7f6d37f3630325563 100644 (file)
 #ifndef SERVICES_IMPL_H
 #define SERVICES_IMPL_H
 
-#include <pthread.h>
-
-#include <list>
-#include <map>
-#include <string>
-
 #include "stg/services.h"
 #include "stg/service_conf.h"
 #include "stg/locker.h"
 #include "stg/noncopyable.h"
 #include "stg/logger.h"
 
+#include <list>
+#include <map>
+#include <string>
+
+#include <pthread.h>
+
 class ADMIN;
 
 class SERVICES_IMPL : private NONCOPYABLE, public SERVICES {
 public:
-    SERVICES_IMPL(STORE * st);
+    explicit SERVICES_IMPL(STORE * st);
     virtual ~SERVICES_IMPL() {}
 
     int Add(const SERVICE_CONF & service, const ADMIN * admin);
     int Del(const std::string & name, const ADMIN * admin);
     int Change(const SERVICE_CONF & service, const ADMIN * admin);
-    bool Find(const std::string & name, SERVICE_CONF * service);
+    bool Find(const std::string & name, SERVICE_CONF * service) const;
+    bool Find(const std::string & name, SERVICE_CONF_RES * service) const;
     bool Exists(const std::string & name) const;
     const std::string & GetStrError() const { return strError; }
 
+    size_t Count() const { return data.size(); }
+
     int OpenSearch() const;
     int SearchNext(int, SERVICE_CONF * service) const;
     int CloseSearch(int) const;
 
 private:
-    typedef list<SERVICE_CONF>::iterator       srv_iter;
-    typedef list<SERVICE_CONF>::const_iterator const_srv_iter;
+    SERVICES_IMPL(const SERVICES_IMPL & rvalue);
+    SERVICES_IMPL & operator=(const SERVICES_IMPL & rvalue);
+
+    typedef std::list<SERVICE_CONF>::iterator       iterator;
+    typedef std::list<SERVICE_CONF>::const_iterator const_iterator;
 
     bool Read();
 
     std::list<SERVICE_CONF> data;
     STORE *                 store;
     STG_LOGGER &            WriteServLog;
-    mutable std::map<int, const_srv_iter> searchDescriptors;
+    mutable std::map<int, const_iterator> searchDescriptors;
     mutable unsigned int    handle;
     mutable pthread_mutex_t mutex;
     std::string             strError;