From 2c849acf04c589ddfd4607d4463ac3c33f3d9857 Mon Sep 17 00:00:00 2001 From: wilson_d Date: Tue, 14 Oct 2003 20:26:18 +0000 Subject: ChangeLogTag: Tue Oct 14 15:21:19 2003 Dale Wilson --- TAO/ChangeLog | 10 + .../ReplicationManagerFaultConsumerAdapter.cpp | 294 +++++++-------------- .../ReplicationManagerFaultConsumerAdapter.h | 14 +- 3 files changed, 109 insertions(+), 209 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 2d69846aada..83ce2974ba9 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,13 @@ +Tue Oct 14 15:21:19 2003 Dale Wilson + + * orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.cpp: + * orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h: + change command line option that specify multiple + eliminate read_ior_file. Expect file:// ior on command line instead. + + + These changes were made in the oci_haft branch. + Tue Oct 14 13:52:18 2003 Steve Totten * orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp: diff --git a/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.cpp b/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.cpp index acebc05c5af..397c303a12a 100755 --- a/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.cpp +++ b/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.cpp @@ -13,10 +13,9 @@ ReplicationManagerFaultConsumerAdapter::ReplicationManagerFaultConsumerAdapter() : orb_(CORBA::ORB::_nil()) , quit_(0) , readyFile_(0) - , iorDetectorFile_(0) + , detector_ior_(0) , factory_(FT::FaultDetectorFactory::_nil()) - , replicaIorBuffer_(0) - , iorNotifierFile_(0) + , notifier_ior_(0) , notifier_(FT::FaultNotifier::_nil()) , p_fault_consumer_(0) , consumer_servant_(0) @@ -46,59 +45,17 @@ int ReplicationManagerFaultConsumerAdapter::parse_args (int argc, char * argv[]) { case 'r': { - if (this->replicaIorBuffer_ == 0) - { - const char * repNames = get_opts.opt_arg (); - size_t repNameLen = ACE_OS::strlen(repNames); - - // make a working copy of the string - ACE_NEW_NORETURN(this->replicaIorBuffer_, - char[repNameLen + 1]); - if ( this->replicaIorBuffer_ != 0) - { - ACE_OS::memcpy(this->replicaIorBuffer_, repNames, repNameLen+1); - - // tokenize the string on ',' - // into iorReplicaFiles_ - char * pos = this->replicaIorBuffer_; - while (pos != 0) - { - this->iorReplicaFiles_.push_back(pos); - // find a comma delimiter, and - // chop the string there. - pos = ACE_OS::strchr (pos, ','); - if (pos != 0) - { - *pos = '\0'; - pos += 1; - } - } - } - else - { - ACE_ERROR ((LM_ERROR, - "Command line option error: -r can't allocate buffer.\n" - )); - optionError = -1; - } - } - else - { - ACE_ERROR ((LM_ERROR, - "Command line option error: -r specified more than once.\n" - )); - optionError = -1; - } + this->replica_iors_.push_back (get_opts.opt_arg ()); break; } case 'd': { - this->iorDetectorFile_ = get_opts.opt_arg (); + this->detector_ior_ = get_opts.opt_arg (); break; } case 'n': { - this->iorNotifierFile_ = get_opts.opt_arg (); + this->notifier_ior_ = get_opts.opt_arg (); break; } case 'o': @@ -118,14 +75,14 @@ int ReplicationManagerFaultConsumerAdapter::parse_args (int argc, char * argv[]) if(! optionError) { - if (0 == this->replicaIorBuffer_) + if (0 == this->replica_iors_.size()) { ACE_ERROR ((LM_ERROR, "-r option is required.\n" )); optionError = -1; } - if (0 == this->iorDetectorFile_) + if (0 == this->detector_ior_) { ACE_ERROR ((LM_ERROR, "-d option is required.\n" @@ -138,7 +95,7 @@ int ReplicationManagerFaultConsumerAdapter::parse_args (int argc, char * argv[]) { ACE_ERROR ((LM_ERROR, "usage: %s" - " -r " + " -r " " -d " " -o " " -n " @@ -166,38 +123,25 @@ int ReplicationManagerFaultConsumerAdapter::init ( ////////////////////////////////////////// // resolve reference to detector factory - CORBA::String_var factoryIOR; ACE_DEBUG (( LM_DEBUG, ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") ACE_TEXT ("Getting ready to read iorDetectorFile.\n") )); - if (this->readIORFile(this->iorDetectorFile_, factoryIOR)) - { - CORBA::Object_var obj = this->orb_->string_to_object ( - factoryIOR.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - this->factory_ = ::FT::FaultDetectorFactory::_narrow ( - obj.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - if (CORBA::is_nil (this->factory_.in())) - { - ACE_ERROR_RETURN (( - LM_ERROR, - ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("FaultDetectorFactory IOR is nil: %s\n"), - this->iorDetectorFile_), - -1); - } - } - else + CORBA::Object_var detector_obj = this->orb_->string_to_object ( + this->detector_ior_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + this->factory_ = ::FT::FaultDetectorFactory::_narrow ( + detector_obj.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + if (CORBA::is_nil (this->factory_.in())) { ACE_ERROR_RETURN (( LM_ERROR, ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("Can't read %s\n"), - this->iorDetectorFile_), + ACE_TEXT ("FaultDetectorFactory IOR is nil: %s\n"), + this->detector_ior_), -1); } @@ -209,32 +153,19 @@ int ReplicationManagerFaultConsumerAdapter::init ( ACE_TEXT ("Getting ready to read Notifier IOR file.\n") )); - CORBA::String_var notifierIOR; - if (this->readIORFile(this->iorNotifierFile_, notifierIOR)) - { - CORBA::Object_var obj = this->orb_->string_to_object ( - notifierIOR.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - this->notifier_ = ::FT::FaultNotifier::_narrow ( - obj.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - if (CORBA::is_nil (this->notifier_.in())) - { - ACE_ERROR_RETURN (( - LM_ERROR, - ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("FaultNotifier IOR is nil: %s\n"), - this->iorNotifierFile_), - -1); - } - } - else + CORBA::Object_var notifier_ior = this->orb_->string_to_object ( + this->notifier_ior_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + this->notifier_ = ::FT::FaultNotifier::_narrow ( + notifier_ior.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + if (CORBA::is_nil (this->notifier_.in())) { ACE_ERROR_RETURN (( LM_ERROR, ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("Can't read %s\n"), - this->iorNotifierFile_), + ACE_TEXT ("FaultNotifier IOR is nil: %s\n"), + this->notifier_ior_), -1); } @@ -314,103 +245,90 @@ int ReplicationManagerFaultConsumerAdapter::init ( //////////////////////////////////// // resolve references to replicas // create a fault detector for each replica - size_t replicaCount = this->iorReplicaFiles_.size(); + size_t replicaCount = this->replica_iors_.size(); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Number of replicas being monitored: (%u)\n"), ACE_static_cast (unsigned int, replicaCount) )); for (size_t nRep = 0; result == 0 && nRep < replicaCount; ++nRep) { - const char * iorName = this->iorReplicaFiles_[nRep]; - CORBA::String_var ior; - if (this->readIORFile(iorName, ior)) + const char * iorName = this->replica_iors_[nRep]; + CORBA::Object_var replica_obj = this->orb_->string_to_object ( + iorName ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + FT::PullMonitorable_var replica = FT::PullMonitorable::_narrow ( + replica_obj.in() ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + if (CORBA::is_nil(replica.in())) { - CORBA::Object_var obj = this->orb_->string_to_object ( - ior.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - FT::PullMonitorable_var replica = FT::PullMonitorable::_narrow ( - obj.in() ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - if (CORBA::is_nil(replica.in())) + ACE_ERROR_RETURN (( + LM_ERROR, + ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") + ACE_TEXT ("Can't resolve Replica IOR: %s\n"), + iorName), + -1); + } + else + { + this->replicas_.push_back(replica); + + CORBA::String_var type_id = CORBA::string_dup("FaultDetector"); + + TAO_PG::Properties_Encoder encoder; + + PortableGroup::Value value; + value <<= notifier_; + encoder.add(::FT::FT_NOTIFIER, value); + + value <<= replica; + encoder.add(::FT::FT_MONITORABLE, value); + + FT::FTDomainId domain_id = 0; + value <<= domain_id; + encoder.add(::FT::FT_DOMAIN_ID, value); + + FT::Location object_location; + object_location.length(2); + object_location[0].id = CORBA::string_dup("test"); + object_location[1].id = CORBA::string_dup("Location_A"); + value <<= object_location; + encoder.add(::FT::FT_LOCATION, value); + + FT::TypeId_var object_type = CORBA::string_dup ( + "IDL:org.omg/CosNaming/NamingContextExt:1.0"); + value <<= object_type; + encoder.add(::FT::FT_TYPE_ID, value); + + FT::ObjectGroupId group_id = + ACE_static_cast (FT::ObjectGroupId, 6191982); + value <<= group_id; + encoder.add(::FT::FT_GROUP_ID, value); + + // allocate and populate the criteria + FT::Criteria_var criteria; + ACE_NEW_NORETURN (criteria, + FT::Criteria); + if (criteria.ptr() == 0) { ACE_ERROR_RETURN (( LM_ERROR, ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("Can't resolve Replica IOR: %s\n"), - iorName), + ACE_TEXT ("Error cannot allocate criteria.\n")), -1); } else { - this->replicas_.push_back(replica); - - CORBA::String_var type_id = CORBA::string_dup("FaultDetector"); - - TAO_PG::Properties_Encoder encoder; - - PortableGroup::Value value; - value <<= notifier_; - encoder.add(::FT::FT_NOTIFIER, value); - - value <<= replica; - encoder.add(::FT::FT_MONITORABLE, value); - - FT::FTDomainId domain_id = 0; - value <<= domain_id; - encoder.add(::FT::FT_DOMAIN_ID, value); - - FT::Location object_location; - object_location.length(2); - object_location[0].id = CORBA::string_dup("test"); - object_location[1].id = CORBA::string_dup("Location_A"); - value <<= object_location; - encoder.add(::FT::FT_LOCATION, value); - - FT::TypeId_var object_type = CORBA::string_dup ( - "IDL:org.omg/CosNaming/NamingContextExt:1.0"); - value <<= object_type; - encoder.add(::FT::FT_TYPE_ID, value); - - FT::ObjectGroupId group_id = - ACE_static_cast (FT::ObjectGroupId, 6191982); - value <<= group_id; - encoder.add(::FT::FT_GROUP_ID, value); - - // allocate and populate the criteria - FT::Criteria_var criteria; - ACE_NEW_NORETURN (criteria, - FT::Criteria); - if (criteria.ptr() == 0) - { - ACE_ERROR_RETURN (( - LM_ERROR, - ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("Error cannot allocate criteria.\n")), - -1); - } - else - { - encoder.encode(criteria); - FT::GenericFactory::FactoryCreationId_var factory_creation_id; - - this->factory_->create_object ( - type_id.in(), - criteria.in(), - factory_creation_id - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (-1); - } + encoder.encode(criteria); + FT::GenericFactory::FactoryCreationId_var factory_creation_id; + + this->factory_->create_object ( + type_id.in(), + criteria.in(), + factory_creation_id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); } } - else - { - ACE_ERROR_RETURN (( - LM_ERROR, - ACE_TEXT ("ReplicationManagerFaultConsumerAdapter::init: ") - ACE_TEXT ("Can't read %s\n"), - iorName), - -1); - } } // Signal that we are ready to go. @@ -455,32 +373,6 @@ int ReplicationManagerFaultConsumerAdapter::idle(int & result) return quit; } -int ReplicationManagerFaultConsumerAdapter::readIORFile( - const char * fileName, - CORBA::String_var & ior) -{ - int result = 0; - FILE *in = ACE_OS::fopen (fileName, "r"); - ACE_OS::fseek(in, 0, SEEK_END); - size_t fileSize = ACE_OS::ftell(in); - ACE_OS::fseek(in, 0, SEEK_SET); - char * buffer; - ACE_NEW_NORETURN (buffer, - char[fileSize+1]); - if (buffer != 0) - { - if( fileSize == ACE_OS::fread(buffer, 1, fileSize, in)) - { - buffer[fileSize] = '\0'; - ior = CORBA::string_dup(buffer); - ACE_TRY_CHECK; - result = 1; // success - } - delete[] buffer; - } - return result; -} - #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template instantiate ACE_Vector < const char * >; template ACE_Vector < FT::PullMonitorable_var > ; diff --git a/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h b/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h index 436e6ced685..2fa73dfdbfe 100755 --- a/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h +++ b/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h @@ -66,7 +66,6 @@ public: ///////////////// // Implementation private: - int readIORFile(const char * fileName, CORBA::String_var & ior); //////////////////// // Forbidden methods @@ -104,9 +103,9 @@ private: const char * readyFile_; /** - * A file from which the detecor's IOR should be read. + * Detecor's IOR */ - const char * iorDetectorFile_; + const char * detector_ior_; /** * The FaultDetectorFactory object reference. @@ -114,20 +113,19 @@ private: ::FT::FaultDetectorFactory_var factory_; /** - * A collection of files containing replica IORs + * A collection of replica IORs */ - ACE_Vector < const char * > iorReplicaFiles_; - char * replicaIorBuffer_; + ACE_Vector < const char * > replica_iors_; /** - * A collection of replica IORs + * A collection of replica references. */ ACE_Vector < FT::PullMonitorable_var > replicas_; /** * A file from which the notifier's IOR should be read. */ - const char * iorNotifierFile_; + const char * notifier_ior_; /** * the fault notifier -- cgit v1.2.1