diff options
Diffstat (limited to 'CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp')
-rw-r--r-- | CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp b/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp index 8ef95df1fa7..d8d9ede0f2c 100644 --- a/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp +++ b/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp @@ -10,6 +10,7 @@ #include "tao/Utils/PolicyList_Destroyer.h" #include "orbsvcs/CosNamingC.h" #include "orbsvcs/orbsvcs/Naming/Naming_Loader.h" +#include "orbsvcs/orbsvcs/LWFT/ReplicationManagerC.h" #include "ciao/CIAO_common.h" #include "ciao/Valuetype_Factories/Cookies.h" #include "ciao/FTComponentServer/CIAO_PropertiesC.h" @@ -63,6 +64,7 @@ FaultCorrelationManager_Module::usage (void) DANCE_TRACE ("FaultCorrelationManager_Module::usage"); return "Node Manager Options:\n" "\t-e,--exec-mgr\t\t [execution manager ior file name]\n" + "\t-r,--rep-mgr\t\t [replication manager ior file name]\n" "\t-d,--domain-nc [NC]\t Default naming context for domain objects.\n" "\t--instance-nc [NC]\t Default naming context for instance registration directives. No argument indicates Domain NC.\n" "\t-h,help\t\t\t print this help message\n"; @@ -73,12 +75,13 @@ FaultCorrelationManager_Module::parse_args (int argc, ACE_TCHAR * argv[]) { ACE_Get_Opt get_opts (argc, argv, - ACE_TEXT("d:e:p::c::h"), + ACE_TEXT("d:r:e:p::c::h"), 0, 0, ACE_Get_Opt::RETURN_IN_ORDER); get_opts.long_option (ACE_TEXT("exec-mgr"), 'e', ACE_Get_Opt::ARG_REQUIRED); + get_opts.long_option (ACE_TEXT("rep-mgr"), 'r', ACE_Get_Opt::ARG_REQUIRED); get_opts.long_option (ACE_TEXT("process-ns"), 'p', ACE_Get_Opt::ARG_OPTIONAL); get_opts.long_option (ACE_TEXT("create-plan-ns"), 'c', ACE_Get_Opt::ARG_OPTIONAL); get_opts.long_option (ACE_TEXT("domain-nc"), 'd', ACE_Get_Opt::ARG_REQUIRED); @@ -113,6 +116,9 @@ FaultCorrelationManager_Module::parse_args (int argc, ACE_TCHAR * argv[]) case 'e': this->options_.exec_mgr_ior_ = get_opts.opt_arg (); break; + case 'r': + this->options_.rep_mgr_ior_ = get_opts.opt_arg (); + break; case 'h': //case '?': // Display help for use of the server. @@ -317,6 +323,15 @@ FaultCorrelationManager_Module::create_object (CORBA::ORB_ptr orb, DAnCE::ExecutionManagerDaemon_var exec_mgr = DAnCE::ExecutionManagerDaemon::_narrow (obj.in ()); + if (CORBA::is_nil (exec_mgr.in ())) + { + DANCE_DEBUG ((LM_ERROR, + DLINFO "FaultCorrelationManager_Module::create_object - " + "could not resolve ExecutionManager.\n")); + + return CORBA::Object::_nil (); + } + //Creating node manager servant DAnCE::FaultCorrelationManager_Impl * fcm = 0; @@ -339,7 +354,7 @@ FaultCorrelationManager_Module::create_object (CORBA::ORB_ptr orb, PortableServer::string_to_ObjectId (FCM_OID); this->fcm_poa_->activate_object_with_id (oid, fcm); - // Getting node manager ior + // Getting node manager ior CORBA::Object_var fcm_obj = this->fcm_poa_->id_to_reference (oid.in ()); CORBA::String_var ior = orb->object_to_string (fcm_obj.in ()); @@ -371,6 +386,29 @@ FaultCorrelationManager_Module::create_object (CORBA::ORB_ptr orb, PortableServer::POAManager_var mgr = this->root_poa_->the_POAManager (); mgr->activate (); + // register FCM as a listener to ReplicationManager failure reports + + // TODO somewhere we have to unregister this again! + + obj = orb->string_to_object (this->options_.rep_mgr_ior_); + + ReplicationManager_var rep_mgr = + ReplicationManager::_narrow (obj.in ()); + + if (CORBA::is_nil (rep_mgr.in ())) + { + DANCE_DEBUG ((LM_ERROR, + DLINFO "FaultCorrelationManager_Module::create_object - " + "could not resolve ReplicationManager.\n")); + + return CORBA::Object::_nil (); + } + + FLARE::FaultNotification_var fn = + FLARE::FaultNotification::_narrow (fcm_obj.in ()); + + rep_mgr->register_fault_notification (fn.in ()); + // Finishing Deployment part DANCE_DEBUG ((LM_NOTICE, DLINFO "FaultCorrelationManager_Module::create_object - " "FaultCorrelationManager is running...\n")); |