diff options
author | huangming <huangming@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-02-15 20:17:45 +0000 |
---|---|---|
committer | huangming <huangming@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-02-15 20:17:45 +0000 |
commit | 626b07c89d332c63af91ee5686f858e8693dcdb6 (patch) | |
tree | 56d4123842f31b406920a88dab70d1d9adbae30b /TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp | |
parent | 115b26023987dc439ac7664bac1fb0e3558c1636 (diff) | |
download | ATCD-626b07c89d332c63af91ee5686f858e8693dcdb6.tar.gz |
ChangeLogEntry: Sun Feb 15 14:06:33 2004 Huang-Ming Huang <hh1@cse.wustl.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp | 47 |
1 files changed, 38 insertions, 9 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp index 807c24d5ac4..fb3a89a15e0 100644 --- a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp @@ -4,6 +4,7 @@ #include "AMI_Replication_Strategy.h" #include "Basic_Replication_Strategy.h" #include "FTEC_ORBInitializer.h" +#include "../Utils/Log.h" #include "tao/ORBInitializer_Registry.h" @@ -17,6 +18,7 @@ namespace FTRTEC { namespace { auto_ptr<Replication_Strategy> replication_strategy; + int threads = 1; Replication_Service* service; } @@ -43,14 +45,30 @@ namespace FTRTEC return 0; initialized = 1; - - Replication_Strategy* strategy; + bool ami = false; // Parse any service configurator parameters. - if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("AMI")) == 0) - ACE_NEW_RETURN (strategy, AMI_Replication_Strategy, -1); - else - ACE_NEW_RETURN (strategy, Basic_Replication_Strategy, -1); + while (argc > 0) { + if (ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("AMI")) ==0 ) + ami = true; + if (ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("-threads")) ==0 && argc > 1) { + FTRTEC::threads = ACE_OS::atoi(argv[1]); + if (FTRTEC::threads ==0 ) + FTRTEC::threads = 1; + ++argv; --argc; + } + ++argv; --argc; + } + + Replication_Strategy* strategy; + if (ami) { + ACE_NEW_RETURN (strategy, AMI_Replication_Strategy(threads() > 1), -1); + TAO_FTRTEC::Log(3, "AMI replication strategy\n"); + } + else { + ACE_NEW_RETURN (strategy, Basic_Replication_Strategy(threads() > 1), -1); + TAO_FTRTEC::Log(3, "Basic replication strategy\n"); + } ACE_AUTO_PTR_RESET (replication_strategy, strategy, Replication_Strategy); @@ -120,27 +138,38 @@ namespace FTRTEC ACE_ENV_ARG_PARAMETER); } + void Replication_Service::add_member(const FTRT::ManagerInfo & info, + CORBA::ULong object_group_ref_version + ACE_ENV_ARG_DECL) + { + replication_strategy->add_member(info, object_group_ref_version ACE_ENV_ARG_PARAMETER); + } + int Replication_Service::acquire_read (void) { int r = replication_strategy->acquire_read(); - ACE_DEBUG((LM_DEBUG, "Read Lock acquired %d\n", r)); + TAO_FTRTEC::Log(3, "Read Lock acquired %d\n", r); return r; } int Replication_Service::acquire_write (void) { int r= replication_strategy->acquire_write(); - ACE_DEBUG((LM_DEBUG, "Write Lock acqured %d\n", r)); + TAO_FTRTEC::Log(3, "Write Lock acqured %d\n", r); return r; } int Replication_Service::release (void) { int r= replication_strategy->release(); - ACE_DEBUG((LM_DEBUG, "Lock Released %d\n", r)); + TAO_FTRTEC::Log(3, "Lock Released %d\n", r); return r; } + int Replication_Service::threads() const { + return FTRTEC::threads; + } + ACE_FACTORY_DEFINE (TAO_FTRTEC, Replication_Service) ACE_STATIC_SVC_DEFINE (Replication_Service, |