7 #ifndef HA_COMMUNICATION_STATE_H 8 #define HA_COMMUNICATION_STATE_H 15 #include <boost/date_time/posix_time/posix_time.hpp> 16 #include <boost/function.hpp> 17 #include <boost/shared_ptr.hpp> 109 const boost::function<
void()>& heartbeat_impl);
119 const boost::function<
void()>& heartbeat_impl = 0);
130 return (static_cast<bool>(
timer_));
186 virtual void analyzeMessage(
const boost::shared_ptr<dhcp::Pkt>& message) = 0;
355 virtual void analyzeMessage(
const boost::shared_ptr<dhcp::Pkt>& message);
407 virtual void analyzeMessage(
const boost::shared_ptr<dhcp::Pkt>& message);
boost::function< void()> heartbeat_impl_
Pointer to the function providing heartbeat implementation.
CommunicationState6(const asiolink::IOServicePtr &io_service, const HAConfigPtr &config)
Constructor.
boost::shared_ptr< CommunicationState6 > CommunicationState6Ptr
Pointer to the CommunicationState6 object.
virtual bool failureDetected() const
Checks if the partner failure has been detected based on the DHCP traffic analysis.
virtual bool failureDetected() const
Checks if the partner failure has been detected based on the DHCP traffic analysis.
int64_t getDurationInMillisecs() const
Returns duration between the poke time and current time.
void setPartnerTime(const std::string &time_text)
Provide partner's notion of time so the new clock skew can be calculated.
Holds communication state between the two HA peers.
boost::shared_ptr< CommunicationState4 > CommunicationState4Ptr
Pointer to the CommunicationState4 object.
void startHeartbeatInternal(const long interval=0, const boost::function< void()> &heartbeat_impl=0)
Starts recurring heartbeat.
boost::shared_ptr< IOService > IOServicePtr
Defines a smart pointer to an IOService instance.
bool isCommunicationInterrupted() const
Checks if communication with the partner is interrupted.
asiolink::IOServicePtr io_service_
Pointer to the common IO service instance.
int getPartnerState() const
Returns last known state of the partner.
long interval_
Interval specified for the heartbeat.
boost::posix_time::ptime poke_time_
Last poke time.
Holds communication state between DHCPv4 servers.
virtual void clearUnackedClients()
Removes information about clients which the partner server failed to respond to.
virtual void clearUnackedClients()=0
Removes information about clients which the partner server failed to respond to.
virtual void analyzeMessage(const boost::shared_ptr< dhcp::Pkt > &message)=0
Checks if the DHCP message appears to be unanswered.
int partner_state_
Last known state of the partner server.
bool isHeartbeatRunning() const
Checks if recurring heartbeat is running.
virtual void analyzeMessage(const boost::shared_ptr< dhcp::Pkt > &message)
Checks if the DHCPv6 message appears to be unanswered.
boost::shared_ptr< isc::asiolink::IntervalTimer > IntervalTimerPtr
void stopHeartbeat()
Stops recurring heartbeat.
virtual void clearUnackedClients()
Removes information about clients which the partner server failed to respond to.
virtual bool failureDetected() const =0
Checks if the partner failure has been detected based on the DHCP traffic analysis.
Defines the logger used by the top-level component of kea-dhcp-ddns.
void startHeartbeat(const long interval, const boost::function< void()> &heartbeat_impl)
Starts recurring heartbeat (public interface).
void poke()
Pokes the communication state.
std::set< std::vector< uint8_t > > unacked_clients_
Holds information about the clients which the partner server failed to respond to.
boost::posix_time::time_duration clock_skew_
Clock skew between the active servers.
CommunicationState4(const asiolink::IOServicePtr &io_service, const HAConfigPtr &config)
Constructor.
virtual void analyzeMessage(const boost::shared_ptr< dhcp::Pkt > &message)
Checks if the DHCPv4 message appears to be unanswered.
void setPartnerState(const std::string &state)
Sets partner state.
std::string logFormatClockSkew() const
Returns current clock skew value in the logger friendly format.
std::multimap< std::vector< uint8_t >, std::vector< uint8_t > > unacked_clients_
Holds information about the clients which the partner server failed to respond to.
virtual ~CommunicationState()
Destructor.
bool clockSkewShouldWarn()
Indicates whether the HA service should issue a warning about high clock skew between the active serv...
bool clockSkewShouldTerminate() const
Indicates whether the HA service should enter "terminated" state as a result of the clock skew exceed...
boost::posix_time::ptime last_clock_skew_warn_
Holds a time when last warning about too high clock skew was issued.
asiolink::IntervalTimerPtr timer_
Interval timer triggering heartbeat commands.
HAConfigPtr config_
High availability configuration.
boost::shared_ptr< CommunicationState > CommunicationStatePtr
Type of the pointer to the CommunicationState object.
boost::shared_ptr< HAConfig > HAConfigPtr
Pointer to the High Availability configuration structure.
Holds communication state between DHCPv6 servers.
bool isClockSkewGreater(const long seconds) const
Checks if the clock skew is greater than the specified number of seconds.
CommunicationState(const asiolink::IOServicePtr &io_service, const HAConfigPtr &config)
Constructor.