diff options
Diffstat (limited to 'ACE/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Activate.cpp')
-rw-r--r-- | ACE/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Activate.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ACE/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Activate.cpp b/ACE/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Activate.cpp new file mode 100644 index 00000000000..9485b217bec --- /dev/null +++ b/ACE/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Activate.cpp @@ -0,0 +1,78 @@ +#include "orbsvcs/FaultTolerance/FT_Service_Activate.h" +#include "orbsvcs/FaultTolerance/FT_Service_Callbacks.h" +#include "orbsvcs/FaultTolerance/FT_ORBInitializer.h" +#include "orbsvcs/FaultTolerance/FT_Endpoint_Selector_Factory.h" +#include "tao/ORB_Core.h" +#include "tao/Service_Callbacks.h" +#include "ace/Dynamic_Service.h" + +ACE_RCSID(FaultTolerance, FT_Service_Activate, "$Id$") + +static bool initialized = false; + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +TAO_FT_Service_Activate::TAO_FT_Service_Activate (void) +{ +} + +TAO_FT_Service_Activate::~TAO_FT_Service_Activate (void) +{ +} + +TAO_Service_Callbacks * +TAO_FT_Service_Activate::activate_services (TAO_ORB_Core *orb_core) +{ + TAO_FT_Service_Callbacks *ft_service_callback = 0; + + // Construct service callback object + ACE_NEW_RETURN (ft_service_callback, + TAO_FT_Service_Callbacks (orb_core), + 0); + + + return ft_service_callback; +} + + +int +TAO_FT_Service_Activate::Initializer (void) +{ + if (initialized == false) + { + ACE_Service_Config::static_svcs ()-> + insert (&ace_svc_desc_TAO_FT_Service_Activate); + + PortableInterceptor::ORBInitializer_ptr temp_orb_initializer = + PortableInterceptor::ORBInitializer::_nil (); + PortableInterceptor::ORBInitializer_var orb_initializer; + + // Register the RTCORBA ORBInitializer. + ACE_NEW_RETURN (temp_orb_initializer, + TAO_FT_ORBInitializer, + -1); + + orb_initializer = temp_orb_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in ()); + + // Set the name of the endpoint selector factory + TAO_ORB_Core::set_endpoint_selector_factory ("FT_Endpoint_Selector_Factory"); + ACE_Service_Config::process_directive (ace_svc_desc_TAO_FT_Endpoint_Selector_Factory); + + initialized = true; + } + + return 0; +} + +TAO_END_VERSIONED_NAMESPACE_DECL + +ACE_FACTORY_DEFINE (TAO_FT,TAO_FT_Service_Activate) + +ACE_STATIC_SVC_DEFINE (TAO_FT_Service_Activate, + ACE_TEXT ("FT_Service_Activate"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (TAO_FT_Service_Activate), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) |