#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;