2  *    This program is free software; you can redistribute it and/or modify
 
   3  *    it under the terms of the GNU General Public License as published by
 
   4  *    the Free Software Foundation; either version 2 of the License, or
 
   5  *    (at your option) any later version.
 
   7  *    This program is distributed in the hope that it will be useful,
 
   8  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
   9  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  10  *    GNU General Public License for more details.
 
  12  *    You should have received a copy of the GNU General Public License
 
  13  *    along with this program; if not, write to the Free Software
 
  14  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
  18  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
 
  23 #include "stg/services.h"
 
  24 #include "stg/service_conf.h"
 
  25 #include "stg/noncopyable.h"
 
  26 #include "stg/logger.h"
 
  39 class ServicesImpl : public Services {
 
  41         explicit ServicesImpl(Store* st);
 
  43         int Add(const ServiceConf& service, const Admin* admin) override;
 
  44         int Del(const std::string& name, const Admin* admin) override;
 
  45         int Change(const ServiceConf& service, const Admin* admin) override;
 
  46         bool Find(const std::string& name, ServiceConf* service) const override;
 
  47         bool Find(const std::string& name, ServiceConfOpt* service) const override;
 
  48         bool Exists(const std::string& name) const override;
 
  49         const std::string& GetStrError() const override { return strError; }
 
  51         size_t Count() const override { return data.size(); }
 
  53         int OpenSearch() const override;
 
  54         int SearchNext(int, ServiceConf* service) const override;
 
  55         int CloseSearch(int) const override;
 
  58         typedef std::vector<ServiceConf>::iterator       iterator;
 
  59         typedef std::vector<ServiceConf>::const_iterator const_iterator;
 
  63         std::vector<ServiceConf> data;
 
  66         mutable std::map<int, const_iterator> searchDescriptors;
 
  67         mutable unsigned int    handle;
 
  68         mutable std::mutex mutex;