--- /dev/null
+#include "host/pinginterval.h"
+
+#include <boost/assert.hpp>
+
+//-----------------------------------------------------------------------------
+// PingInterval
+//-----------------------------------------------------------------------------
+
+PingInterval::PingInterval(
+ PingIntervalType interval
+) :
+ OriginalInterval( interval ),
+ Interval( interval )
+{
+ BOOST_ASSERT( 0 < interval );
+}
+
+PingInterval::~PingInterval()
+{
+}
+
+PingInterval::operator PingIntervalType()
+{
+ BOOST_ASSERT( 0 < Interval );
+
+ return Interval;
+}
+
+void PingInterval::back_to_original()
+{
+ Interval = OriginalInterval;
+
+ BOOST_ASSERT( 0 < Interval );
+}
+
+void PingInterval::speed_up()
+{
+ BOOST_ASSERT( 0 < Interval );
+
+ if ( can_speed_up() )
+ {
+ Interval = Interval / 2;
+ }
+
+ if ( Interval < 1 )
+ {
+ Interval = 1;
+ }
+
+ BOOST_ASSERT( 0 < Interval );
+}
+
+bool PingInterval::can_speed_up() const
+{
+ PingIntervalType half_original = OriginalInterval / 2;
+
+ return ( Interval > half_original );
+}
#ifndef PINGINTERVAL_H
#define PINGINTERVAL_H
-#include <boost/assert.hpp>
+//-----------------------------------------------------------------------------
+// PingIntervalType
+//-----------------------------------------------------------------------------
+
+typedef long PingIntervalType;
//-----------------------------------------------------------------------------
// PingInterval
* with helper methods to encapsulate interval computation.
* Scope: one object per host.
*/
-template<typename T>
class PingInterval
{
public:
- PingInterval( T interval );
+ PingInterval( PingIntervalType interval );
~PingInterval();
- operator T();
+ operator PingIntervalType();
void back_to_original();
void speed_up();
bool can_speed_up() const;
private:
- const T OriginalInterval;
- T Interval;
+ const PingIntervalType OriginalInterval;
+ PingIntervalType Interval;
};
-
-template<typename T>
- PingInterval<T>::PingInterval(
- T interval
- ) :
- OriginalInterval( interval ),
- Interval( interval )
- {
- BOOST_ASSERT( 0 < interval );
- }
-
-template<typename T>
- PingInterval<T>::~PingInterval()
- {
- }
-
-template<typename T>
- PingInterval<T>::operator T()
- {
- BOOST_ASSERT( 0 < Interval );
-
- return Interval;
- }
-
-template<typename T>
- void PingInterval<T>::back_to_original()
- {
- Interval = OriginalInterval;
-
- BOOST_ASSERT( 0 < Interval );
- }
-
-template<typename T>
- void PingInterval<T>::speed_up()
- {
- BOOST_ASSERT( 0 < Interval );
-
- if ( can_speed_up() )
- {
- Interval = Interval / 2;
- }
-
- if ( Interval < 1 )
- {
- Interval = 1;
- }
-
- BOOST_ASSERT( 0 < Interval );
- }
-
-template<typename T>
- bool PingInterval<T>::can_speed_up() const
- {
- T half_original = OriginalInterval / 2;
-
- return ( Interval > half_original );
- }
-
-
#endif /* PINGINTERVAL_H */
std::string LocalNetworkInterfaceName;
boost::asio::deadline_timer NextPingTimer;
boost::posix_time::ptime TimeSentLastPing;
- PingInterval<long> PingIntervalInSec;
+ PingInterval PingIntervalInSec;
DnsResolver IpList;
HostStatusAnalyzer HostAnalyzer;