summaryrefslogtreecommitdiff
path: root/TAO/tao/default_resource.cpp
diff options
context:
space:
mode:
authorbala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-03-30 15:19:31 +0000
committerbala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-03-30 15:19:31 +0000
commitb1f0f87a0d065ff37863fc03e7ccc266913ae0e4 (patch)
tree407049f7d9d88418bafd5a1032ad53830af05882 /TAO/tao/default_resource.cpp
parentfd55e7c75d09a399a4224d51efca13de4e99fbcd (diff)
downloadATCD-b1f0f87a0d065ff37863fc03e7ccc266913ae0e4.tar.gz
ChangeLogTag: Sun Mar 30 09:17:09 2003 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu>
Diffstat (limited to 'TAO/tao/default_resource.cpp')
-rw-r--r--TAO/tao/default_resource.cpp200
1 files changed, 136 insertions, 64 deletions
diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp
index f51fc4c7a35..4e77647b3ae 100644
--- a/TAO/tao/default_resource.cpp
+++ b/TAO/tao/default_resource.cpp
@@ -1,6 +1,5 @@
// $Id$
-
#include "tao/default_resource.h"
#include "tao/ORB_Core.h"
@@ -37,21 +36,22 @@ ACE_RCSID (tao,
"$Id$")
TAO_Default_Resource_Factory::TAO_Default_Resource_Factory (void)
- : use_locked_data_blocks_ (1),
- parser_names_count_ (0),
- parser_names_ (0),
- protocol_factories_ (),
- connection_purging_type_ (TAO_CONNECTION_PURGING_STRATEGY),
- cache_maximum_ (TAO_CONNECTION_CACHE_MAXIMUM),
- purge_percentage_ (TAO_PURGE_PERCENT),
- max_muxed_connections_ (0),
- reactor_mask_signals_ (1),
- dynamically_allocated_reactor_ (0),
- options_processed_ (0),
- factory_disabled_ (0),
- cached_connection_lock_type_ (TAO_THREAD_LOCK),
- flushing_strategy_type_ (TAO_LEADER_FOLLOWER_FLUSHING),
- codeset_manager_ (0)
+ : use_locked_data_blocks_ (1)
+ , parser_names_count_ (0)
+ , parser_names_ (0)
+ , protocol_factories_ ()
+ , connection_purging_type_ (TAO_CONNECTION_PURGING_STRATEGY)
+ , cache_maximum_ (TAO_CONNECTION_CACHE_MAXIMUM)
+ , purge_percentage_ (TAO_PURGE_PERCENT)
+ , max_muxed_connections_ (0)
+ , reactor_mask_signals_ (1)
+ , dynamically_allocated_reactor_ (0)
+ , options_processed_ (0)
+ , factory_disabled_ (0)
+ , cached_connection_lock_type_ (TAO_THREAD_LOCK)
+ , flushing_strategy_type_ (TAO_LEADER_FOLLOWER_FLUSHING)
+ , codeset_manager_ (0)
+ , resource_usage_strategy_ (TAO_Resource_Factory::TAO_EAGER)
{
}
@@ -172,65 +172,71 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
ACE_LIB_TEXT("-ORBNativeCharCodeSet")) == 0)
{
curarg++;
- CONV_FRAME::CodeSetId ncs;
- if (ACE_Codeset_Registry::locale_to_registry(argv[curarg],
- ncs))
+ CONV_FRAME::CodeSetId ncs;
+ if (ACE_Codeset_Registry::locale_to_registry (argv[curarg],
+ ncs))
{
char **endPtr =0;
ncs = ACE_OS_String::strtoul(ACE_TEXT_ALWAYS_CHAR(argv[curarg]),
- endPtr, 0);
- }
- // Validate the CodesetId
- if (ACE_Codeset_Registry::get_max_bytes(ncs) == 0)
- {
- if (TAO_debug_level > 0)
- ACE_ERROR((LM_ERROR,
- ACE_TEXT("(%P|%t) Invalid NativeCharCodeSet, %x\n"),
- ncs));
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_THROW_RETURN (CORBA::BAD_PARAM (
- CORBA::SystemException::_tao_minor_code (
+ endPtr, 0);
+ }
+ // Validate the CodesetId
+ if (ACE_Codeset_Registry::get_max_bytes(ncs) == 0)
+ {
+ if (TAO_debug_level > 0)
+ ACE_ERROR((LM_ERROR,
+ ACE_TEXT("(%P|%t) Invalid NativeCharCodeSet, %x\n"),
+ ncs));
+
+ // @@Phil: This is *completely* busted!
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (
+ CORBA::SystemException::_tao_minor_code (
TAO_ORB_CORE_INIT_LOCATION_CODE,
EINVAL),
CORBA::COMPLETED_NO),
-1);
- }
- TAO_Codeset_Manager *csm = this->get_codeset_manager();
- if (csm)
- csm->set_ncs_c(ncs);
+ }
+ TAO_Codeset_Manager *csm =
+ this->get_codeset_manager ();
+ if (csm)
+ csm->set_ncs_c(ncs);
}
else if (ACE_OS::strcasecmp (argv[curarg],
ACE_LIB_TEXT("-ORBNativeWCharCodeSet")) == 0)
{
curarg++;
- CONV_FRAME::CodeSetId ncs;
+ CONV_FRAME::CodeSetId ncs;
if (!ACE_Codeset_Registry::locale_to_registry( argv[curarg],
- ncs))
+ ncs))
{
char **endPtr = 0;
ncs = ACE_OS_String::strtoul(ACE_TEXT_ALWAYS_CHAR(argv[curarg]),
- endPtr, 0);
- }
- // Validate the CodesetId
- int mb = ACE_Codeset_Registry::get_max_bytes(ncs);
- if (mb == 0 || ACE_static_cast(size_t,mb) > sizeof (ACE_CDR::WChar))
- {
- if (TAO_debug_level > 0)
- ACE_ERROR((LM_ERROR,
- ACE_TEXT("(%P|%t) Invalid NativeWCharCodeSet, %x\n"),
- ncs));
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_THROW_RETURN (CORBA::BAD_PARAM (
+ endPtr, 0);
+ }
+ // Validate the CodesetId
+ int mb = ACE_Codeset_Registry::get_max_bytes(ncs);
+ if (mb == 0 || ACE_static_cast(size_t,mb) > sizeof (ACE_CDR::WChar))
+ {
+ if (TAO_debug_level > 0)
+ ACE_ERROR((LM_ERROR,
+ ACE_TEXT("(%P|%t) Invalid NativeWCharCodeSet, %x\n"),
+ ncs));
+
+ // @@Phile: This is completely busted!
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (
CORBA::SystemException::_tao_minor_code (
- TAO_ORB_CORE_INIT_LOCATION_CODE,
+ TAO_ORB_CORE_INIT_LOCATION_CODE,
EINVAL),
CORBA::COMPLETED_NO),
-1);
- }
- TAO_Codeset_Manager *csm = this->get_codeset_manager();
- if (csm)
- csm->set_ncs_w(ncs,mb);
+ }
+
+ TAO_Codeset_Manager *csm = this->get_codeset_manager();
+ if (csm)
+ csm->set_ncs_w(ncs,mb);
}
else if (ACE_OS::strcasecmp (argv[curarg],
@@ -239,10 +245,10 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
curarg++;
if (curarg < argc)
{
- TAO_Codeset_Manager *csm = this->get_codeset_manager();
- if (csm)
- if (csm->add_char_translator(argv[curarg]) == -1)
- return -1;
+ TAO_Codeset_Manager *csm = this->get_codeset_manager();
+ if (csm)
+ if (csm->add_char_translator(argv[curarg]) == -1)
+ return -1;
}
}
@@ -252,12 +258,12 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
{
curarg++;
if (curarg < argc)
- {
- TAO_Codeset_Manager *csm = this->get_codeset_manager();
- if (csm)
- if (csm->add_wchar_translator(argv[curarg]) == -1)
- return -1;
- }
+ {
+ TAO_Codeset_Manager *csm = this->get_codeset_manager();
+ if (csm)
+ if (csm->add_wchar_translator(argv[curarg]) == -1)
+ return -1;
+ }
}
else if (ACE_OS::strcasecmp (argv[curarg],
@@ -380,6 +386,49 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
}
}
else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBCorbaObjectLock")) == 0)
+ {
+ curarg++;
+ if (curarg < argc)
+ {
+ ACE_TCHAR* name = argv[curarg];
+
+ if (ACE_OS::strcasecmp (name,
+ ACE_LIB_TEXT("thread")) == 0)
+ this->corba_object_lock_type_ = TAO_THREAD_LOCK;
+ else if (ACE_OS::strcasecmp (name,
+ ACE_LIB_TEXT("null")) == 0)
+ {
+ // @@ Bug 940 :This is a sort of hack now. We need to put
+ // this in a common place once we get the common
+ // switch that is documented in bug 940...
+ this->corba_object_lock_type_ = TAO_NULL_LOCK;
+ }
+ else
+ this->report_option_value_error (ACE_LIB_TEXT("-ORBCorbaObjectLock"), name);
+ }
+ }
+ else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBResourceUsage")) == 0)
+ {
+ curarg++;
+ if (curarg < argc)
+ {
+ ACE_TCHAR* name = argv[curarg];
+
+ if (ACE_OS::strcasecmp (name,
+ ACE_LIB_TEXT("eager")) == 0)
+ this->resource_usage_strategy_ = TAO_EAGER;
+ else if (ACE_OS::strcasecmp (name,
+ ACE_LIB_TEXT("lazy")) == 0)
+ {
+ this->resource_usage_strategy_ = TAO_LAZY;
+ }
+ else
+ this->report_option_value_error (ACE_LIB_TEXT("-ORBResourceUsage"), name);
+ }
+ }
+ else if (ACE_OS::strcasecmp (argv[curarg],
ACE_LIB_TEXT("-ORBFlushingStrategy")) == 0)
{
curarg++;
@@ -837,6 +886,23 @@ TAO_Default_Resource_Factory::locked_transport_cache (void)
}
+ACE_Lock *
+TAO_Default_Resource_Factory::create_corba_object_lock (void)
+{
+ ACE_Lock *the_lock = 0;
+
+ if (this->corba_object_lock_type_ == TAO_NULL_LOCK)
+ ACE_NEW_RETURN (the_lock,
+ ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX>,
+ 0);
+ else
+ ACE_NEW_RETURN (the_lock,
+ ACE_Lock_Adapter<TAO_SYNCH_MUTEX>,
+ 0);
+
+ return the_lock;
+}
+
TAO_Flushing_Strategy *
TAO_Default_Resource_Factory::create_flushing_strategy (void)
{
@@ -924,6 +990,12 @@ TAO_Default_Resource_Factory::get_codeset_manager()
return this->codeset_manager_;
}
+TAO_Resource_Factory::Resource_Usage
+TAO_Default_Resource_Factory::resource_usage_strategy (void)const
+{
+ return this->resource_usage_strategy_;
+}
+
// ****************************************************************
ACE_STATIC_SVC_DEFINE (TAO_Default_Resource_Factory,