#ifndef RTNET_SDO_EXAMPLE_CONNECTIONSTATUSMONITOR_H #define RTNET_SDO_EXAMPLE_CONNECTIONSTATUSMONITOR_H #include #include #include //#include // needs newer version of g++ using C++0x #include class ConnectionRequiredRunnable; class ConnectionStatusMonitor { public: ConnectionStatusMonitor(boost::shared_ptr& transport, boost::shared_ptr& timeMgr); ~ConnectionStatusMonitor(); void addListener(boost::shared_ptr listener); void disconnected(const ConnectionRequiredRunnable* noticer); void tryOpen(); void stop(); bool connected(); private: class Reconnect : public apache::thrift::concurrency::Runnable { public: Reconnect(ConnectionStatusMonitor* parent) : parent_(parent) {} void run() { parent_->tryOpen(); } private: ConnectionStatusMonitor* parent_; }; std::set > listeners_; boost::shared_ptr transport_; boost::shared_ptr timeMgr_; boost::shared_ptr thFactory_; //std::atomic connected_; //boost::atomic connected_; // need a higher version of boost or gcc than is available on kurenai boost::detail::atomic_count connected_; // need a higher version of boost or gcc than is available on kurenai }; #endif // RTNET_SDO_EXAMPLE_CONNECTIONSTATUSMONITOR_H