summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp
diff options
context:
space:
mode:
authorhuangming <huangming@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-02-15 20:17:45 +0000
committerhuangming <huangming@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-02-15 20:17:45 +0000
commit626b07c89d332c63af91ee5686f858e8693dcdb6 (patch)
tree56d4123842f31b406920a88dab70d1d9adbae30b /TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp
parent115b26023987dc439ac7664bac1fb0e3558c1636 (diff)
downloadATCD-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.cpp47
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,