OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
health_check.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
6 #define SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
7 
8 #include <boost/scoped_ptr.hpp>
9 #include <cmn/agent.h>
10 #include <oper_db.h>
11 
13 #define HEALTH_CHECK_TRACE(obj, ...)\
14 do {\
15  HealthCheck##obj::TraceMsg(HealthCheckTraceBuf, __FILE__, __LINE__,\
16  __VA_ARGS__);\
17 } while (false)
18 
19 class Interface;
20 class HealthCheckTable;
21 class HealthCheckService;
22 class MetaDataIp;
24 class InstanceTask;
25 class InstanceTaskExecvp;
26 
28 // HealthCheck module provides service to monitor status of given service
29 // on an interface and updates the interface state accordingly to propagate
30 // information accordingly
32 
35  AgentOperDBKey(), uuid_(id) { }
37  AgentOperDBKey(sub_op), uuid_(id) { }
38  virtual ~HealthCheckServiceKey() { }
39 
41 };
42 
45  const std::string &name,
46  const std::string &monitor_type,
47  const std::string &stype,
48  uint8_t ip_proto,
49  const std::string &http_method,
50  const std::string &url_path,
51  uint16_t url_port,
52  const std::string &expected_codes,
53  uint32_t delay, uint64_t delay_usecs,
54  uint32_t timeout, uint64_t timeout_usecs,
55  uint32_t max_retries,
56  bool is_all_ip,
57  std::set<IpAddress> cfg_target_ip_list,
59  AgentOperDBData(agent, ifmap_node), dest_ip_(dest_ip), name_(name),
60  monitor_type_(monitor_type), service_type_(stype), ip_proto_(ip_proto),
61  http_method_(http_method), url_path_(url_path), url_port_(url_port),
62  expected_codes_(expected_codes), delay_(delay),
63  delay_usecs_(delay_usecs), timeout_(timeout),
64  timeout_usecs_(timeout_usecs), max_retries_(max_retries),
65  is_all_ip_(is_all_ip),
66  new_target_ip_list_(cfg_target_ip_list) {
67  }
69 
71  std::string name_;
72  std::string monitor_type_;
73  // Service type of HealthCheck segment/end-to-end/link-local
74  std::string service_type_;
75  uint8_t ip_proto_;
76  std::string http_method_;
77  std::string url_path_;
78  uint16_t url_port_;
79  std::string expected_codes_;
80  uint32_t delay_;
81  uint64_t delay_usecs_;
82  uint32_t timeout_;
83  uint64_t timeout_usecs_;
84  uint32_t max_retries_;
85  std::set<boost::uuids::uuid> intf_uuid_list_;
86  std::set<boost::uuids::uuid> vn_uuid_list_;
87  bool is_all_ip_;
88  std::set<IpAddress> new_target_ip_list_;
89 };
90 
92 public:
93  enum EventType {
99  };
100 
103  const std::string &message);
104  virtual ~HealthCheckInstanceEvent();
105 
109  std::string message_;
111 };
112 
114 public:
115 
117  MetaDataIpAllocator *allocator,
118  VmInterface *intf,
119  bool ignore_status_event);
120  virtual ~HealthCheckInstanceBase();
121 
122  virtual bool CreateInstanceTask() = 0;
123 
124  // return true it instance is scheduled to destroy
125  // when API returns false caller need to assure delete of
126  // Health Check Instance
127  virtual bool DestroyInstanceTask() = 0;
128  virtual bool RunInstanceTask() = 0;
129  virtual bool StopInstanceTask() = 0;
130  virtual bool UpdateInstanceTask() { return true; }
131 
132  // OnRead Callback for Task
133  void OnRead(const std::string &data);
134  // OnExit Callback for Task
135  void OnExit(const boost::system::error_code &ec);
136  // Callback to enqueue set service
137  void SetService(HealthCheckService *service);
138  // Callback to enqueue stop task
139  void StopTask(HealthCheckService *service);
140 
141  virtual void ResyncTarget(const HealthCheckService *service) const;
142  void set_service(HealthCheckService *service);
143  std::string to_string();
144  bool active() {return active_;}
145  virtual bool IsRunning() const { return true; }
146  HealthCheckService *service() const { return service_.get(); }
147  InterfaceRef interface() const { return intf_; }
148  MetaDataIp *ip() const { return ip_.get(); }
149  const std::string &last_update_time() const { return last_update_time_; }
151  void set_source_ip(const IpAddress &ip) { source_ip_ = ip; }
152  IpAddress get_source_ip() const { return source_ip_; };
153  IpAddress source_ip() const;
155  void set_destination_ip(const IpAddress &ip);
156  IpAddress destination_ip() const;
157  void EnqueueHealthCheckResync(const HealthCheckService *service,
158  const VmInterface *itf) const;
159 
160 protected:
161  void EnqueueResync(const HealthCheckService *service, Interface *itf) const;
162  friend class HealthCheckTable;
163  // reference to health check service under
164  // which this instance is running
166  // Interface associated to this HealthCheck Instance
168  // MetaData IP Created for this HealthCheck Instance
169  boost::scoped_ptr<MetaDataIp> ip_;
170  // current status of HealthCheckInstance
171  bool active_;
172  // last update time
173  std::string last_update_time_;
174  // instance is delete marked
175  bool deleted_;
176  // true if the health check up or down status event has to be ignored
178 
179  // source IP to be used while doing the health check
181  // destination IP for the health check
183 
184 private:
186 };
187 
188 // Health check instance using the instance task infrastructure
190 public:
192  static const std::string kHealthCheckCmd;
193 
195  MetaDataIpAllocator *allocator, VmInterface *intf,
196  bool ignore_status_event);
197  virtual ~HealthCheckInstanceTask();
198 
199  virtual bool CreateInstanceTask();
200  virtual bool DestroyInstanceTask();
201  virtual bool RunInstanceTask();
202  virtual bool StopInstanceTask();
203  virtual bool IsRunning() const;
204 
205 private:
206  friend class HealthCheckTable;
207 
209 
210  // task managing external running script for status
211  boost::scoped_ptr<HeathCheckProcessInstance> task_;
212 
214 };
215 
216 // Health check instance using the services infrastructure
218 public:
220  MetaDataIpAllocator *allocator,
221  VmInterface *intf, VmInterface *other_intf,
222  bool ignore_status_event, bool multi_hop);
223  virtual ~HealthCheckInstanceService();
224 
225  virtual bool CreateInstanceTask();
226  virtual bool DestroyInstanceTask();
227  virtual bool RunInstanceTask();
228  virtual bool StopInstanceTask();
229  virtual bool UpdateInstanceTask();
230  virtual void ResyncTarget(const HealthCheckService *service) const;
231  void EnqueueMacIpLearningHCStatus(const HealthCheckService *service) const;
232 
233  bool is_multi_hop() const { return multi_hop_; }
234 
235 private:
236  friend class HealthCheckTable;
237 
238  // Other Interface associated to this HealthCheck Instance when
239  // HealthCheck service type is "segment"
241 
242  // BFD health check can be single hop or multi hop, when started for a
243  // BGP flow, make it multi hop
245 
247 };
248 
250 public:
252  MetaDataIpAllocator *allocator,
253  VmInterface *intf, VmInterface *other_intf,
254  bool ignore_status_event, bool multi_hop);
256 
257  virtual void ResyncTarget(const HealthCheckService *service) const;
258  virtual void set_destination_mac(const MacAddress &mac) {
259  mac_ = mac;
260  }
261  virtual const MacAddress destination_mac() const { return mac_; }
262 
263 private:
264  friend class HealthCheckTable;
265 
267 
269 };
270 
271 class HealthCheckService : AgentRefCount<HealthCheckService>,
272  public AgentOperDBEntry {
273 public:
280  };
281  typedef std::map<boost::uuids::uuid, HealthCheckInstanceBase *> InstanceList;
282  typedef std::map<IpAddress, HealthCheckInstanceBase *> IpInstanceList;
283 
285  const boost::uuids::uuid &id);
287 
288  virtual bool IsLess(const DBEntry &rhs) const;
289  virtual std::string ToString() const;
290  virtual KeyPtr GetDBRequestKey() const;
291  virtual void SetKey(const DBRequestKey *key);
292  uint32_t GetRefCount() const {
294  }
295 
296  bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
297 
298  void PostAdd();
300 
302  VmInterface *paired_vmi,
303  const IpAddress &source_ip,
304  const IpAddress &destination_ip,
305  const MacAddress &destination_mac,
306  bool ignore_status_event,
307  bool multi_hop);
309  VmInterface *intrface, const IpAddress &source_ip,
310  const IpAddress &destination_ip,
311  const MacAddress destination_mac = MacAddress()) {
312  // health check status event is ignored
313  return StartHealthCheckService(intrface, NULL, source_ip,
314  destination_ip, destination_mac,
315  true, true);
316  }
318 
321  const VmInterface *intf);
323  void DeleteInstances();
324 
325  const boost::uuids::uuid &uuid() const { return uuid_; }
326  const std::string &name() const { return name_; }
327 
328  uint8_t ip_proto() const { return ip_proto_; }
329  uint16_t url_port() const { return url_port_; }
330  uint32_t delay() const { return delay_; }
331  uint64_t delay_usecs() const { return delay_usecs_; }
332  uint32_t timeout() const { return timeout_; }
333  uint64_t timeout_usecs() const { return timeout_usecs_; }
334  uint32_t max_retries() const { return max_retries_; }
335  const std::string &url_path() const { return url_path_; }
336  const std::string &monitor_type() const { return monitor_type_; }
337  const HealthCheckTable *table() const { return table_; }
338  bool IsInstanceTaskBased() const;
339  bool IsSegmentHealthCheckService() const;
340  bool IsVnIpListHealthCheckService() const;
342  return health_check_type_;
343  }
344  const std::set<boost::uuids::uuid> &GetVnUuidList() {
345  return vn_uuid_list_;
346  }
347  const std::set<IpAddress> &GetTargetIpList() {
348  return target_ip_list_;
349  }
351 
352  if (is_hc_enable_all_ip_ ||
353  target_ip_list_.find(ip) != target_ip_list_.end()) {
354  return true;
355  }
356  return false;
357  }
358  IpAddress dest_ip() const { return dest_ip_;}
360 
361 private:
363 
365 
369  std::string name_;
370  // monitor type of service PING/HTTP/BFD etc
371  std::string monitor_type_;
372  // Service type of HealthCheck segment/end-to-end/link-local
373  std::string service_type_;
374  // ip_proto derived from monitor_type_
375  uint8_t ip_proto_;
376  std::string http_method_;
377  std::string url_path_;
378  // tcp/udp port numbers derived from url
379  uint16_t url_port_;
380  std::string expected_codes_;
381  uint32_t delay_;
382  uint64_t delay_usecs_;
383  uint32_t timeout_;
384  uint64_t timeout_usecs_;
385  uint32_t max_retries_;
386  // List of interfaces associated to this HealthCheck Service
389 
390  std::set<boost::uuids::uuid> vn_uuid_list_;
391  std::set<IpAddress> target_ip_list_;
393 
395 };
396 
398 public:
405  };
406  typedef boost::function<bool(HealthCheckServiceAction,
409 
410  typedef boost::function<void(const HealthCheckInstanceService *)>
412 
413  HealthCheckTable(Agent *agent, DB *db, const std::string &name);
414  virtual ~HealthCheckTable();
415 
416  static DBTableBase *CreateTable(Agent *agent, DB *db,
417  const std::string &name);
418 
419  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
420  virtual size_t Hash(const DBEntry *entry) const {return 0;}
421  virtual size_t Hash(const DBRequestKey *key) const {return 0;}
422 
423  virtual DBEntry *OperDBAdd(const DBRequest *req);
424  virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
425  virtual bool OperDBResync(DBEntry *entry, const DBRequest *req);
426  virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
427 
428  virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
429  const boost::uuids::uuid &u);
430  bool ProcessConfig(IFMapNode *node, DBRequest &req,
431  const boost::uuids::uuid &u);
432  virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
434  const std::string &context);
435 
437 
440 
444  }
448  }
451  }
454  }
455 
456 private:
457 
462 };
463 
466  const VmInterface *intf):
467  AgentOperDBData(agent, node), intf_(intf) {}
469 };
470 
471 #endif // SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
void ResyncHealthCheckInterface(const HealthCheckService *service, const VmInterface *intf)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
HealthCheckResyncInterfaceData(const Agent *agent, IFMapNode *node, const VmInterface *intf)
Definition: health_check.h:465
InterfaceRef interface() const
Definition: health_check.h:147
virtual void ResyncTarget(const HealthCheckService *service) const
Definition: health_check.cc:77
const std::string & monitor_type() const
Definition: health_check.h:336
virtual ~HealthCheckInstanceEvent()
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual bool DestroyInstanceTask()=0
bool IsTargetIpPresent(IpAddress &ip)
Definition: health_check.h:350
void EnqueueResync(const HealthCheckService *service, Interface *itf) const
Definition: health_check.cc:68
bool DBEntrySandesh(Sandesh *resp, std::string &name) const
bool InstanceEventProcess(HealthCheckInstanceEvent *event)
HealthCheckService(const HealthCheckTable *table, const boost::uuids::uuid &id)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
uint32_t GetRefCount() const
Definition: agent_db.h:54
void set_source_ip(const IpAddress &ip)
Definition: health_check.h:151
virtual size_t Hash(const DBRequestKey *key) const
Definition: health_check.h:421
boost::uuids::uuid uuid_
Definition: health_check.h:367
std::set< boost::uuids::uuid > vn_uuid_list_
Definition: health_check.h:86
virtual bool StopInstanceTask()
virtual bool DestroyInstanceTask()
void RegisterHealthCheckNotifyCallback(HealthCheckNotifyCallback fn)
Definition: health_check.h:449
HealthCheckService * service() const
Definition: health_check.h:146
HealthCheckInstanceService(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, VmInterface *other_intf, bool ignore_status_event, bool multi_hop)
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
IpAddress destination_ip() const
boost::intrusive_ptr< HealthCheckService > HealthCheckServiceRef
Definition: agent.h:165
void EnqueueMacIpLearningHCStatus(const HealthCheckService *service) const
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
uint16_t url_port() const
Definition: health_check.h:329
HealthCheckType health_check_type_
Definition: health_check.h:388
void UpdateInterfaceInstanceServiceReference(const VmInterface *intf)
std::string url_path_
Definition: health_check.h:377
void StopTask(HealthCheckService *service)
std::string http_method_
Definition: health_check.h:376
std::set< IpAddress > new_target_ip_list_
Definition: health_check.h:88
boost::asio::ip::address IpAddress
Definition: address.h:13
virtual void ResyncTarget(const HealthCheckService *service) const
const std::string & url_path() const
Definition: health_check.h:335
virtual ~HealthCheckTable()
Agent * agent() const
Definition: agent_db.h:213
HealthCheckServiceKey(const boost::uuids::uuid &id)
Definition: health_check.h:34
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceService)
const HealthCheckTable * table() const
Definition: health_check.h:337
virtual bool IsRunning() const
Definition: health_check.h:145
HealthCheckService * service_
Definition: health_check.h:107
virtual bool RunInstanceTask()=0
boost::uuids::uuid uuid
const std::string & last_update_time() const
Definition: health_check.h:149
IpAddress dest_ip() const
Definition: health_check.h:358
WorkQueue< HealthCheckInstanceEvent * > * inst_event_queue_
Definition: health_check.h:458
HealthCheckMacIpInstanceService(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, VmInterface *other_intf, bool ignore_status_event, bool multi_hop)
DISALLOW_COPY_AND_ASSIGN(HealthCheckService)
void set_destination_ip(const IpAddress &ip)
virtual std::string ToString() const
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
boost::scoped_ptr< MetaDataIp > ip_
Definition: health_check.h:169
MetaDataIp * ip() const
Definition: health_check.h:148
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
Definition: sandesh_trace.h:18
void set_service(HealthCheckService *service)
Definition: health_check.cc:82
uint8_t ip_proto() const
Definition: health_check.h:328
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
virtual bool UpdateInstanceTask()
std::map< boost::uuids::uuid, HealthCheckInstanceBase * > InstanceList
Definition: health_check.h:281
HealthCheckInstanceTask(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, bool ignore_status_event)
std::string monitor_type_
Definition: health_check.h:72
HealthCheckServiceCallback health_check_service_callback(HealthCheckService::HealthCheckType type) const
Definition: health_check.h:445
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
const VmInterface * intf_
Definition: health_check.h:468
virtual DBEntry * OperDBAdd(const DBRequest *req)
void StopHealthCheckService(HealthCheckInstanceBase *instance)
HealthCheckTable(Agent *agent, DB *db, const std::string &name)
HealthCheckNotifyCallback health_check_notify_cb_
Definition: health_check.h:460
virtual bool StopInstanceTask()
Definition: db.h:24
static const std::string kHealthCheckCmd
Definition: health_check.h:192
uint32_t timeout() const
Definition: health_check.h:332
virtual ~HealthCheckServiceKey()
Definition: health_check.h:38
uint64_t timeout_usecs_
Definition: health_check.h:384
const HealthCheckTable * table_
Definition: health_check.h:366
virtual ~HealthCheckInstanceTask()
HealthCheckServiceData(Agent *agent, IpAddress dest_ip, const std::string &name, const std::string &monitor_type, const std::string &stype, uint8_t ip_proto, const std::string &http_method, const std::string &url_path, uint16_t url_port, const std::string &expected_codes, uint32_t delay, uint64_t delay_usecs, uint32_t timeout, uint64_t timeout_usecs, uint32_t max_retries, bool is_all_ip, std::set< IpAddress > cfg_target_ip_list, IFMapNode *ifmap_node)
Definition: health_check.h:44
InstanceList intf_list_
Definition: health_check.h:387
uint8_t type
Definition: load_balance.h:109
virtual void SetKey(const DBRequestKey *key)
virtual bool StopInstanceTask()=0
Definition: agent.h:358
bool IsSegmentHealthCheckService() const
HealthCheckServiceRef service_
Definition: health_check.h:165
HealthCheckNotifyCallback health_check_notify_callback() const
Definition: health_check.h:452
void InstanceEventEnqueue(HealthCheckInstanceEvent *event) const
const std::set< boost::uuids::uuid > & GetVnUuidList()
Definition: health_check.h:344
uint32_t GetRefCount() const
Definition: health_check.h:292
void OnExit(const boost::system::error_code &ec)
bool IsHcEnableAllTargetIp() const
Definition: health_check.h:359
void SetService(HealthCheckService *service)
std::string http_method_
Definition: health_check.h:76
virtual KeyPtr GetDBRequestKey() const
virtual bool IsLess(const DBEntry &rhs) const
DISALLOW_COPY_AND_ASSIGN(HealthCheckTable)
HealthCheckInstanceEvent(HealthCheckInstanceBase *inst, HealthCheckService *service, EventType type, const std::string &message)
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceTask)
IpAddress get_source_ip() const
Definition: health_check.h:152
std::map< IpAddress, HealthCheckInstanceBase * > IpInstanceList
Definition: health_check.h:282
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
const std::string & name() const
Definition: db_table.h:110
boost::uuids::uuid uuid_
Definition: health_check.h:40
HealthCheckInstanceBase * StartHealthCheckService(VmInterface *intrface, const IpAddress &source_ip, const IpAddress &destination_ip, const MacAddress destination_mac=MacAddress())
Definition: health_check.h:308
virtual size_t Hash(const DBEntry *entry) const
Definition: health_check.h:420
HealthCheckServiceCallback health_check_service_cb_[HealthCheckService::MAX_HEALTH_CHECK_SERVICES]
Definition: health_check.h:459
std::string expected_codes_
Definition: health_check.h:79
virtual bool UpdateInstanceTask()
Definition: health_check.h:130
IpAddress source_ip() const
InstanceTaskExecvp HeathCheckProcessInstance
Definition: health_check.h:191
boost::function< void(const HealthCheckInstanceService *)> HealthCheckNotifyCallback
Definition: health_check.h:411
std::set< boost::uuids::uuid > vn_uuid_list_
Definition: health_check.h:390
HealthCheckInstanceBase * StartHealthCheckService(VmInterface *intrface, VmInterface *paired_vmi, const IpAddress &source_ip, const IpAddress &destination_ip, const MacAddress &destination_mac, bool ignore_status_event, bool multi_hop)
IFMapNode * ifmap_node() const
Definition: oper_db.h:59
boost::scoped_ptr< HeathCheckProcessInstance > task_
Definition: health_check.h:211
std::string service_type_
Definition: health_check.h:74
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
HealthCheckInstanceBase * instance_
Definition: health_check.h:106
const boost::uuids::uuid & uuid() const
Definition: health_check.h:325
HealthCheckServiceKey(const boost::uuids::uuid &id, DBSubOperation sub_op)
Definition: health_check.h:36
HealthCheckInstanceBase(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, bool ignore_status_event)
Definition: health_check.cc:41
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceEvent)
virtual void ResyncTarget(const HealthCheckService *service) const
bool Copy(HealthCheckTable *table, const HealthCheckServiceData *data)
virtual ~HealthCheckServiceData()
Definition: health_check.h:68
const Agent * agent() const
Definition: oper_db.h:65
std::string name_
Definition: health_check.h:369
HealthCheckService * Find(const boost::uuids::uuid &u)
const std::string & name() const
Definition: health_check.h:326
const std::set< IpAddress > & GetTargetIpList()
Definition: health_check.h:347
HealthCheckType health_check_type() const
Definition: health_check.h:341
void EnqueueHealthCheckResync(const HealthCheckService *service, const VmInterface *itf) const
std::string expected_codes_
Definition: health_check.h:380
virtual bool CreateInstanceTask()
IpAddress update_source_ip()
uint32_t delay() const
Definition: health_check.h:330
SandeshTraceBufferPtr HealthCheckTraceBuf
std::set< IpAddress > target_ip_list_
Definition: health_check.h:391
std::string last_update_time_
Definition: health_check.h:173
uint32_t max_retries() const
Definition: health_check.h:334
DBSubOperation
Definition: agent_db.h:96
virtual void set_destination_mac(const MacAddress &mac)
Definition: health_check.h:258
std::set< boost::uuids::uuid > intf_uuid_list_
Definition: health_check.h:85
std::string monitor_type_
Definition: health_check.h:371
bool IsVnIpListHealthCheckService() const
boost::intrusive_ptr< Interface > InterfaceRef
Definition: agent.h:49
virtual const MacAddress destination_mac() const
Definition: health_check.h:261
uint64_t delay_usecs() const
Definition: health_check.h:331
boost::function< bool(HealthCheckServiceAction, HealthCheckInstanceService *)> HealthCheckServiceCallback
Definition: health_check.h:408
bool IsInstanceTaskBased() const
virtual bool RunInstanceTask()
void OnRead(const std::string &data)
void RegisterHealthCheckCallback(HealthCheckServiceCallback fn, HealthCheckService::HealthCheckType type)
Definition: health_check.h:441
std::string service_type_
Definition: health_check.h:373
void UpdateInstanceServiceReference()
DISALLOW_COPY_AND_ASSIGN(HealthCheckMacIpInstanceService)
virtual bool DestroyInstanceTask()
virtual bool IsRunning() const
HealthCheckType GetHealthCheckType() const
virtual ~HealthCheckInstanceBase()
Definition: health_check.cc:60
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceBase)
virtual bool RunInstanceTask()
bool IsStatusEventIgnored() const
Definition: health_check.h:150
virtual bool CreateInstanceTask()=0
uint64_t timeout_usecs() const
Definition: health_check.h:333
virtual bool CreateInstanceTask()