2 * @brief The abstract service class. This class represents all services.
6 * @copyright Intra2net AG
15 #include <boost/archive/text_oarchive.hpp>
16 #include <boost/archive/text_iarchive.hpp>
18 #include <boost/shared_ptr.hpp>
37 int MaxUpdatesWithinInterval;
40 std::list<time_t> LastUpdates;
43 time_t ErrorServiceBlockedUntil;
45 friend class boost::serialization::access;
46 template<class Archive>
47 void serialize(Archive & ar, const unsigned int version)
49 // protocol and hostname are the unique identifier for each service.
52 // lastupdated and actual_ip must also be serialized, cause these are essential infos of each service.
56 ar & MaxUpdatesWithinInterval;
64 typedef boost::shared_ptr<Service> Ptr;
70 virtual int perform_update(const std::string& ip) = 0;
72 void update(const std::string& ip, const time_t current_time, bool changed_to_online);
74 bool update_allowed(const time_t current_time, bool changed_to_online);
76 void set_last_update(const time_t current_time);
78 int get_update_interval()const;
79 void set_update_interval(const int _update_interval);
81 int get_max_updates_within_interval() const;
82 void set_max_updates_within_interval(const int _max_updates_within_interval);
84 int get_dns_cache_ttl() const;
85 void set_dns_cache_ttl(const int _dns_cache_ttl);
87 void set_protocol(const std::string& _protocol);
88 std::string get_protocol() const;
90 void set_hostname(const std::string& _hostname);
91 std::string get_hostname() const;
93 void set_login(const std::string& _login);
94 std::string get_login() const;
96 void set_password(const std::string& _password);
97 std::string get_password() const;
99 void set_last_updates(std::list<time_t> _last_updates);
100 const std::list<time_t> get_last_updates() const;
102 void set_actual_ip(const std::string& _actual_ip);
103 std::string get_actual_ip() const;
105 void set_logger(const Logger::Ptr& _log);
106 Logger::Ptr get_logger() const;
108 std::string get_service_name() const;
110 bool operator== (const Service& other) const;
111 bool operator!= (const Service& other) const;