diff options
author | aky <aky@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2011-06-16 20:28:00 +0000 |
---|---|---|
committer | aky <aky@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2011-06-16 20:28:00 +0000 |
commit | ea2354fe1a7b7c40defc6c4094e1477051e91ca8 (patch) | |
tree | a8b4d98e24f547b93e62cb47f567b53daa7e31cd /TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp | |
parent | eb6d9d34c28a9b1ce979b4c4c962f06fce515aea (diff) | |
download | ATCD-ea2354fe1a7b7c40defc6c4094e1477051e91ca8.tar.gz |
Thu Jun 16 20:25:08 UTC 2011 Akshay V. Dabholkar <aky@dre.vanderbilt.edu>DeCoM
* orbsvcs/LWFT_Service:
* orbsvcs/LWFT_Service/LWFT_Service.mpc:
* orbsvcs/LWFT_Service/RMOptions.h:
* orbsvcs/LWFT_Service/RMOptions.cpp:
* orbsvcs/LWFT_Service/ReplicationManager_process.cpp:
* orbsvcs/LWFT_Service/host_monitor.cpp:
* orbsvcs/orbsvcs/LWFT:
* orbsvcs/orbsvcs/LWFT/AppInfo.idl:
* orbsvcs/orbsvcs/LWFT/AppOptions.h:
* orbsvcs/orbsvcs/LWFT/AppOptions.cpp:
* orbsvcs/orbsvcs/LWFT/AppSideMonitor_Handler.h:
* orbsvcs/orbsvcs/LWFT/AppSideMonitor_Handler.cpp:
* orbsvcs/orbsvcs/LWFT/AppSideMonitor_Thread.h:
* orbsvcs/orbsvcs/LWFT/AppSideMonitor_Thread.cpp:
* orbsvcs/orbsvcs/LWFT/AppSideReg.h:
* orbsvcs/orbsvcs/LWFT/AppSideReg.cpp:
* orbsvcs/orbsvcs/LWFT/Barrier_Guard.h:
* orbsvcs/orbsvcs/LWFT/Barrier_Guard.cpp:
* orbsvcs/orbsvcs/LWFT/Client_ORBInitializer.h:
* orbsvcs/orbsvcs/LWFT/Client_ORBInitializer.cpp:
* orbsvcs/orbsvcs/LWFT/Client_Request_Interceptor.h:
* orbsvcs/orbsvcs/LWFT/Client_Request_Interceptor.cpp:
* orbsvcs/orbsvcs/LWFT/CorbaStateUpdate.h:
* orbsvcs/orbsvcs/LWFT/CorbaStateUpdate.cpp:
* orbsvcs/orbsvcs/LWFT/DDSFailure.h:
* orbsvcs/orbsvcs/LWFT/DDSFailure.cpp:
* orbsvcs/orbsvcs/LWFT/DDSStateReaderListener_T.h:
* orbsvcs/orbsvcs/LWFT/DDSStateReaderListener_T.cpp:
* orbsvcs/orbsvcs/LWFT/DDSStateUpdate_T.h:
* orbsvcs/orbsvcs/LWFT/DDSStateUpdate_T.cpp:
* orbsvcs/orbsvcs/LWFT/Failure_Handler.h:
* orbsvcs/orbsvcs/LWFT/Failure_Handler.cpp:
* orbsvcs/orbsvcs/LWFT/FaultNotification.idl:
* orbsvcs/orbsvcs/LWFT/ForwardingAgent.h:
* orbsvcs/orbsvcs/LWFT/ForwardingAgent.cpp:
* orbsvcs/orbsvcs/LWFT/ForwardingAgent.idl:
* orbsvcs/orbsvcs/LWFT/HMOptions.h:
* orbsvcs/orbsvcs/LWFT/HMOptions.cpp:
* orbsvcs/orbsvcs/LWFT/HostMonitor.idl:
* orbsvcs/orbsvcs/LWFT/HostMonitorImpl.h:
* orbsvcs/orbsvcs/LWFT/HostMonitorImpl.cpp:
* orbsvcs/orbsvcs/LWFT/IOR_Interceptor.h:
* orbsvcs/orbsvcs/LWFT/IOR_Interceptor.cpp:
* orbsvcs/orbsvcs/LWFT/LWFT.mpc:
* orbsvcs/orbsvcs/LWFT/LWFTDataStructures.idl:
* orbsvcs/orbsvcs/LWFT/LWFT_Client.vcproj:
* orbsvcs/orbsvcs/LWFT/LWFT_Client_Init.h:
* orbsvcs/orbsvcs/LWFT/LWFT_Client_Init.cpp:
* orbsvcs/orbsvcs/LWFT/LWFT_Common.vcproj:
* orbsvcs/orbsvcs/LWFT/LWFT_ReplicationManager.vcproj:
* orbsvcs/orbsvcs/LWFT/LWFT_Server.vcproj:
* orbsvcs/orbsvcs/LWFT/LWFT_Server_Init.h:
* orbsvcs/orbsvcs/LWFT/LWFT_Server_Init.cpp:
* orbsvcs/orbsvcs/LWFT/LWFT_StateSyncAgent.vcproj:
* orbsvcs/orbsvcs/LWFT/Monitor_Manager.h:
* orbsvcs/orbsvcs/LWFT/Monitor_Manager.inl:
* orbsvcs/orbsvcs/LWFT/Monitor_Manager.cpp:
* orbsvcs/orbsvcs/LWFT/Monitor_Thread.h:
* orbsvcs/orbsvcs/LWFT/Monitor_Thread.cpp:
* orbsvcs/orbsvcs/LWFT/ObjectReferenceFactory.h:
* orbsvcs/orbsvcs/LWFT/ObjectReferenceFactory.cpp:
* orbsvcs/orbsvcs/LWFT/ObjectReferenceFactory.idl:
* orbsvcs/orbsvcs/LWFT/README:
* orbsvcs/orbsvcs/LWFT/RM_Proxy.h:
* orbsvcs/orbsvcs/LWFT/RM_Proxy.cpp:
* orbsvcs/orbsvcs/LWFT/ReplicatedApplication.idl:
* orbsvcs/orbsvcs/LWFT/ReplicationManager.h:
* orbsvcs/orbsvcs/LWFT/ReplicationManager.cpp:
* orbsvcs/orbsvcs/LWFT/ReplicationManager.idl:
* orbsvcs/orbsvcs/LWFT/ServerORBInitializer.h:
* orbsvcs/orbsvcs/LWFT/ServerORBInitializer.cpp:
* orbsvcs/orbsvcs/LWFT/StateSyncAgentTask.h:
* orbsvcs/orbsvcs/LWFT/StateSyncAgentTask.cpp:
* orbsvcs/orbsvcs/LWFT/StateSynchronizationAgent.idl:
* orbsvcs/orbsvcs/LWFT/StateSynchronizationAgent_i.h:
* orbsvcs/orbsvcs/LWFT/StateSynchronizationAgent_i.cpp:
* orbsvcs/orbsvcs/LWFT/StateSynchronizationAgent_i_T.cpp:
* orbsvcs/orbsvcs/LWFT/StatefulObject.h:
* orbsvcs/orbsvcs/LWFT/StatefulObject.cpp:
* orbsvcs/orbsvcs/LWFT/Timer.h:
* orbsvcs/orbsvcs/LWFT/Timer.cpp:
* orbsvcs/orbsvcs/LWFT/Utilization_Monitor.h:
* orbsvcs/orbsvcs/LWFT/Utilization_Monitor.cpp:
* orbsvcs/orbsvcs/LWFT/host_monitor_export.h:
* orbsvcs/orbsvcs/LWFT/lwft_client_export.h:
* orbsvcs/orbsvcs/LWFT/lwft_common_export.h:
* orbsvcs/orbsvcs/LWFT/lwft_server_export.h:
* orbsvcs/orbsvcs/LWFT/rm_export.h:
* orbsvcs/orbsvcs/LWFT/rm_impl_export.h:
* orbsvcs/orbsvcs/LWFT/ssa_export.h:
Merged additive orbsvcs of LWFT(FLARE) implementation
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp b/TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp new file mode 100644 index 00000000000..dee3a5698b7 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/LWFT/AppOptions.cpp @@ -0,0 +1,252 @@ +// -*- C++ -*- +// $Id$ + +#include "AppOptions.h" + +#include <sstream> + +#include "ace/Global_Macros.h" +#include "ace/Guard_T.h" +#include "ace/Log_Msg.h" +#include "ace/Arg_Shifter.h" + +/// Initialize the static data member. +AppOptions * volatile AppOptions::instance_ = 0; +ACE_Auto_Ptr<AppOptions> AppOptions::deleter_; +ACE_Thread_Mutex AppOptions::lock_; + +AppOptions::AppOptions (void) + : host_monitor_ior_ ("file://hm.ior"), + port_ (0), + role_ (2), + load_ (40.0), + use_dds_ (false), + debug_level_ (0) +{ + char hostname [100]; + gethostname (hostname, sizeof (hostname)); + host_id_ = hostname; +// ACE_DEBUG ((LM_DEBUG, "Hostname is %s.\n", hostname)); +} + +AppOptions * +AppOptions::instance (void) +{ + if (instance_ == 0) + { + ACE_GUARD_RETURN (ACE_Thread_Mutex, guard, lock_, 0); + + if (instance_ == 0) + { + instance_ = new AppOptions (); + deleter_.reset (instance_); + } + } + + return instance_; +} + +AppOptions::~AppOptions (void) +{ + monitor_->stop (); +} + +bool +AppOptions::parse_args (int &argc, char **argv) +{ + ACE_Arg_Shifter as (argc, argv); + + while (as.is_anything_left ()) + { + const ACE_TCHAR *arg = 0; + + if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-hm_port")))) + { + std::istringstream istr (arg); + + if (!(istr >> port_)) + { + return false; + } + + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-hm_ior")))) + { + host_monitor_ior_ = arg; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-host_id")))) + { + host_id_ = arg; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-proc_id")))) + { + process_id_ = arg; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-info_file")))) + { + object_info_file_ = arg; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-app_id")))) + { + app_id_ = arg; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-role")))) + { + std::istringstream istr (arg); + + if (!(istr >> role_)) + { + return false; + } + + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-load")))) + { + std::istringstream istr (arg); + + if (!(istr >> load_)) + { + return false; + } + + as.consume_arg (); + } + else if (as.cur_arg_strncasecmp (ACE_TEXT ("-use_dds")) == 0) + { + use_dds_ = true; + as.consume_arg (); + } + else if (0 != (arg = as.get_the_parameter (ACE_TEXT ("-debug")))) + { + std::istringstream istr (arg); + + if (!(istr >> debug_level_)) + { + return false; + } + + as.consume_arg (); + } + else + { + as.ignore_arg (); + } + } + + this->set_debug_level (); + + return true; +} + +std::string +AppOptions::host_id (void) const +{ + return host_id_; +} + +std::string +AppOptions::host_monitor_ior (void) const +{ + return host_monitor_ior_; +} + +u_short +AppOptions::port (void) const +{ + return port_; +} + +std::string +AppOptions::object_info_file (void) const +{ + return object_info_file_; +} + +std::string +AppOptions::process_id (void) const +{ + return process_id_; +} + +void +AppOptions::monitor (AppSideMonitor_Thread *mon) +{ + this->monitor_.reset (mon); +} + +std::string +AppOptions::app_id (void) const +{ + return app_id_; +} + +size_t +AppOptions::role (void) const +{ + return role_; +} + +double +AppOptions::load (void) const +{ + return load_; +} + +bool +AppOptions::use_dds (void) const +{ + return use_dds_; +} + +void +AppOptions::process_id (const std::string & id) +{ + process_id_ = id; +} + +void +AppOptions::set_debug_level (void) +{ + u_long mask = LM_EMERGENCY | LM_ALERT | LM_CRITICAL | LM_ERROR; + + switch (debug_level_) + { + case 0: break; + case 1: + { + mask |= LM_WARNING; + break; + } + case 2: + { + mask |= LM_WARNING | LM_DEBUG; + break; + } + case 3: + { + mask |= LM_WARNING | LM_DEBUG | LM_TRACE; + break; + } + case 4: + { + mask |= LM_WARNING | LM_DEBUG | LM_TRACE | LM_NOTICE; + break; + } + case 5: + { + mask |= LM_WARNING | LM_DEBUG | LM_TRACE | LM_NOTICE | LM_INFO; + break; + } + default: break; + } + + ACE_LOG_MSG->priority_mask (mask, + ACE_Log_Msg::PROCESS); +} |