From e031774b4c5bd1b9b889f587cacb5c6f62f11351 Mon Sep 17 00:00:00 2001 From: wolff1 Date: Sat, 28 Feb 2009 03:21:24 +0000 Subject: ChangeLogTag: Sat Feb 28 03:21:27 UTC 2009 Friedhelm Wolf --- CIAO/ChangeLog | 7 ++++ .../FaultCorrelationManager_Module.cpp | 42 ++++++++++++++++++++-- .../FaultCorrelationManager_Module.h | 5 +-- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 91283609cc7..3d72ba208b1 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,10 @@ +Sat Feb 28 03:21:27 UTC 2009 Friedhelm Wolf + + * DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.h + * DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.cpp: + + Added registration with the FLARe ReplicationManager. + Fri Feb 27 18:39:39 UTC 2009 Friedhelm Wolf * DAnCE/Interfaces/FaultCorrelationManager.idl 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")); diff --git a/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.h b/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.h index 0a6080e2704..7c195a1904e 100644 --- a/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.h +++ b/CIAO/DAnCE/FaultCorrelationManager/FaultCorrelationManager_Module.h @@ -31,7 +31,6 @@ #include "tao/Object_Loader.h" #include "DAnCE/Deployment/DAnCE_Loader.h" #include "DAnCE/Deployment/Deployment_common.h" -//#include "FaultCorrelation_Task.h" namespace DAnCE { class FaultCorrelationManager_Impl; @@ -58,6 +57,7 @@ class FaultCorrelationManager_Module_Export FaultCorrelationManager_Module const char * domain_nc_; const char * instance_nc_; const char * exec_mgr_ior_; + const char * rep_mgr_ior_; SOptions() : process_ns_ (false), @@ -66,7 +66,8 @@ class FaultCorrelationManager_Module_Export FaultCorrelationManager_Module create_plan_ns_ior_ (0), domain_nc_ (0), instance_nc_ (0), - exec_mgr_ior_ (0) + exec_mgr_ior_ ("file://EM.ior"), + rep_mgr_ior_ ("file://RM.ior") { } }; -- cgit v1.2.1