diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp new file mode 100644 index 00000000000..a7cc3c7a391 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp @@ -0,0 +1,75 @@ +// $Id$ + +#include "ace/Reactor.h" +#include "orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h" +#include "ace/Select_Reactor.h" + +ACE_RCSID (EventChannel, + Fault_Detector, + "$Id$") + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +Fault_Detector::ReactorTask::ReactorTask() + : reactor_(new ACE_Select_Reactor, 1) +{ +} + +int +Fault_Detector::ReactorTask::svc (void) +{ + this->reactor_.owner(ACE_OS::thr_self()); + this->reactor_.run_reactor_event_loop(); + return 0; +} + + +Fault_Detector::~Fault_Detector() +{ +} + +const FTRT::Location& Fault_Detector::my_location() const +{ + return location_; +} + +namespace { + Fault_Detector* detector; +} + +Fault_Detector* Fault_Detector::instance() +{ + return detector; +} + +int Fault_Detector::init(int argc, char** argv) +{ + detector = this; + if (this->parse_conf(argc, argv)==0 && + this->init_acceptor() ==0) + { + if (!reactor_task_.thr_count() && + reactor_task_.activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0) + ACE_ERROR_RETURN ((LM_ERROR,"Cannot activate reactor thread\n"), + -1); + return 0; + } + return -1; +} + +void Fault_Detector::stop() +{ + reactor_task_.reactor_.end_reactor_event_loop(); +} + +void Fault_Detector::set_listener(TAO_FTEC_Fault_Listener* listener) +{ + listener_ = listener; +} + +int Fault_Detector::parse_conf(int , char** ) +{ + return 0; +} + +TAO_END_VERSIONED_NAMESPACE_DECL |