diff options
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp')
-rw-r--r-- | trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp b/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp new file mode 100644 index 00000000000..56d8c25b846 --- /dev/null +++ b/trunk/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp @@ -0,0 +1,90 @@ +// $Id$ + +#include "orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h" +#include "orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h" +#include "orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h" +#include "orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h" +#include "ace/SOCK_Acceptor.h" +#include "ace/SOCK_Connector.h" +#include "orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h" + +#include "ace/Acceptor.h" +#include "ace/OS_NS_strings.h" + +ACE_RCSID (EventChannel, + Fault_Detector_Loader, + "$Id$") + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +namespace FTRTEC { + typedef Fault_Detector_T< + ACE_Acceptor<ConnectionAcceptHandler<ACE_SOCK_STREAM> , ACE_SOCK_ACCEPTOR>, + ACE_SOCK_Connector, ConnectionDetectHandler<ACE_SOCK_STREAM> > + TCP_Fault_Detector; + + Fault_Detector_Loader::Fault_Detector_Loader (void) + { + } + + Fault_Detector_Loader::~Fault_Detector_Loader (void) + { + } + + int + Fault_Detector_Loader::init (int argc, + ACE_TCHAR* argv[]) + { + static int initialized = 0; + + // Only allow initialization once. + if (initialized) + return 0; + + initialized = 1; + + Fault_Detector* detector = 0; + + // Parse any service configurator parameters. + if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_TEXT("sctp")) == 0) + { +#if (TAO_HAS_SCIOP == 1) + ACE_AUTO_PTR_RESET(detector_, detector, Fault_Detector); +#else + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) SCTP not enabled. ", + " Enable SCTP and rebuild ACE+TAO \n")); +#endif /* TAO_HAS_SCIOP */ + argc--; argv++; + } + else { + ACE_NEW_RETURN(detector, TCP_Fault_Detector, -1); + ACE_AUTO_PTR_RESET(detector_, detector, Fault_Detector); + } + return detector_->init(argc, argv); + } + + Fault_Detector* + Fault_Detector_Loader::detector() + { + return detector_.get(); + } +} + +TAO_END_VERSIONED_NAMESPACE_DECL + + ///////////////////////////////////////////////////////////////////// + +ACE_FACTORY_NAMESPACE_DEFINE ( + TAO_FTRTEC, + Fault_Detector_Loader, + FTRTEC::Fault_Detector_Loader) + +ACE_STATIC_SVC_DEFINE ( + Fault_Detector_Loader, + ACE_TEXT ("FTRTEC_Fault_Detector"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Fault_Detector_Loader), + ACE_Service_Type::DELETE_THIS + | ACE_Service_Type::DELETE_OBJ, + 0) |