#include <default_resource.h>
Inheritance diagram for TAO_Default_Resource_Factory:
Member Accessors | |
enum | { TAO_ALLOCATOR_THREAD_LOCK } |
int | get_parser_names (char **&names, int &number_of_names) |
int | cdr_allocator_source (void) |
Modify and get the source for the CDR allocators. | |
virtual int | use_locked_data_blocks (void) const |
virtual ACE_Reactor * | get_reactor (void) |
Return an ACE_Reactor to be utilized. | |
virtual void | reclaim_reactor (ACE_Reactor *) |
Reclaim reactor resources (e.g. deallocate, etc). | |
virtual TAO_Acceptor_Registry * | get_acceptor_registry (void) |
Return a reference to the acceptor registry. | |
virtual TAO_Connector_Registry * | get_connector_registry (void) |
Return a connector to be utilized. | |
virtual void | use_local_memory_pool (bool) |
Return the Allocator's memory pool type. | |
virtual ACE_Allocator * | input_cdr_dblock_allocator (void) |
virtual ACE_Allocator * | input_cdr_buffer_allocator (void) |
virtual ACE_Allocator * | input_cdr_msgblock_allocator (void) |
virtual int | input_cdr_allocator_type_locked (void) |
virtual ACE_Allocator * | output_cdr_dblock_allocator (void) |
virtual ACE_Allocator * | output_cdr_buffer_allocator (void) |
virtual ACE_Allocator * | output_cdr_msgblock_allocator (void) |
virtual ACE_Allocator * | amh_response_handler_allocator (void) |
Access the AMH response handler allocator. | |
virtual ACE_Allocator * | ami_response_handler_allocator (void) |
Access the AMI response handler allocator. | |
virtual TAO_ProtocolFactorySet * | get_protocol_factories (void) |
virtual int | init_protocol_factories (void) |
virtual TAO_Codeset_Manager * | codeset_manager (void) |
Gets the codeset manager. | |
virtual int | cache_maximum (void) const |
This denotes the maximum number of connections that can be cached. | |
virtual int | purge_percentage (void) const |
virtual int | max_muxed_connections (void) const |
virtual ACE_Lock * | create_cached_connection_lock (void) |
virtual ACE_Lock * | create_object_key_table_lock (void) |
Creates a lock needed for the table that stores the object keys. | |
virtual ACE_Lock * | create_corba_object_lock (void) |
Creates the lock for the CORBA Object. | |
virtual int | locked_transport_cache (void) |
virtual TAO_Flushing_Strategy * | create_flushing_strategy (void) |
virtual TAO_Connection_Purging_Strategy * | create_purging_strategy (void) |
Creates the connection purging strategy. | |
TAO_Resource_Factory::Resource_Usage | resource_usage_strategy (void) const |
Return the resource usage strategy. | |
virtual TAO_LF_Strategy * | create_lf_strategy (void) |
virtual auto_ptr< TAO_GIOP_Fragmentation_Strategy > | create_fragmentation_strategy (TAO_Transport *transport, CORBA::ULong max_message_size) const |
Outgoing fragment creation strategy. | |
virtual void | disable_factory (void) |
virtual bool | drop_replies_during_shutdown (void) const |
Public Types | |
Public Member Functions | |
TAO_Default_Resource_Factory (void) | |
Constructor. | |
virtual | ~TAO_Default_Resource_Factory (void) |
Destructor. | |
Service Configurator Hooks | |
virtual int | init (int argc, ACE_TCHAR *argv[]) |
Dynamic linking hook. | |
int | parse_args (int argc, ACE_TCHAR *argv[]) |
Parse svc.conf arguments. | |
Protected Types | |
enum | Output_CDR_Allocator_Type { LOCAL_MEMORY_POOL, DEFAULT } |
Protected Member Functions | |
virtual ACE_Reactor_Impl * | allocate_reactor_impl (void) const |
Obtain the reactor implementation. | |
int | add_to_ior_parser_names (const char *) |
Add a Parser name to the list of Parser names. | |
void | report_option_value_error (const ACE_TCHAR *option_name, const ACE_TCHAR *option_value) |
virtual int | load_default_protocols (void) |
Protected Attributes | |
int | use_locked_data_blocks_ |
The type of data blocks that the ORB should use. | |
int | parser_names_count_ |
The number of the different types of Parsers. | |
char ** | parser_names_ |
Array consisting of the names of the parsers. | |
int | index_ |
Index of the current element in the parser_names_ array. | |
TAO_ProtocolFactorySet | protocol_factories_ |
list of loaded protocol factories. | |
TAO_Resource_Factory::Purging_Strategy | connection_purging_type_ |
int | cache_maximum_ |
int | purge_percentage_ |
int | max_muxed_connections_ |
int | reactor_mask_signals_ |
If <0> then we create reactors with signal handling disabled. | |
int | dynamically_allocated_reactor_ |
int | options_processed_ |
int | factory_disabled_ |
Output_CDR_Allocator_Type | output_cdr_allocator_type_ |
Type of allocator to use for output CDR buffers. | |
bool | use_local_memory_pool_ |
Private Types | |
enum | Lock_Type { TAO_NULL_LOCK, TAO_THREAD_LOCK } |
enum | Flushing_Strategy_Type { TAO_LEADER_FOLLOWER_FLUSHING, TAO_REACTIVE_FLUSHING, TAO_BLOCKING_FLUSHING } |
Private Member Functions | |
void | init_codeset_descriptors (void) |
Private Attributes | |
Lock_Type | cached_connection_lock_type_ |
Type of lock used by the cached connector. | |
Lock_Type | object_key_table_lock_type_ |
Type of lock used by the corba object. | |
Lock_Type | corba_object_lock_type_ |
Type of lock used by the corba object. | |
Flushing_Strategy_Type | flushing_strategy_type_ |
Type of flushing strategy configured. | |
TAO_Codeset_Manager * | codeset_manager_ |
TAO_Codeset_Descriptor_Base * | char_codeset_descriptor_ |
TAO_Codeset_Descriptor_Base * | wchar_codeset_descriptor_ |
Resource_Usage | resource_usage_strategy_ |
Resource usage strategy. | |
bool | drop_replies_ |
ACE_Dynamic_Service_Dependency * | principal_ |
Using a <{resource source specifier}> as a discriminator, the factory can return resource instances which are, e.g., global, stored in thread-specific storage, stored in shared memory, etc.
Definition at line 69 of file default_resource.h.
|
Definition at line 98 of file default_resource.h.
00099 { 00100 TAO_ALLOCATOR_THREAD_LOCK 00101 }; |
|
Definition at line 253 of file default_resource.h.
00254 { 00255 TAO_LEADER_FOLLOWER_FLUSHING, 00256 TAO_REACTIVE_FLUSHING, 00257 TAO_BLOCKING_FLUSHING 00258 }; |
|
Definition at line 238 of file default_resource.h.
00239 { 00240 TAO_NULL_LOCK, 00241 TAO_THREAD_LOCK 00242 }; |
|
Definition at line 219 of file default_resource.h.
00220 { 00221 LOCAL_MEMORY_POOL, 00222 #ifdef ACE_HAS_SENDFILE 00223 MMAP_ALLOCATOR, 00224 #endif /* ACE_HAS_SENDFILE */ 00225 DEFAULT 00226 }; |
|
Constructor.
Definition at line 38 of file default_resource.cpp. References resource_usage_strategy_, TAO_CONNECTION_CACHE_MAXIMUM, TAO_CONNECTION_PURGING_STRATEGY, TAO_PURGE_PERCENT, TAO_USE_LOCAL_MEMORY_POOL, and TAO_USE_OUTPUT_CDR_MMAP_MEMORY_POOL.
00039 : use_locked_data_blocks_ (1) 00040 , parser_names_count_ (0) 00041 , parser_names_ (0) 00042 , protocol_factories_ () 00043 , connection_purging_type_ (TAO_CONNECTION_PURGING_STRATEGY) 00044 , cache_maximum_ (TAO_CONNECTION_CACHE_MAXIMUM) 00045 , purge_percentage_ (TAO_PURGE_PERCENT) 00046 , max_muxed_connections_ (0) 00047 , reactor_mask_signals_ (1) 00048 , dynamically_allocated_reactor_ (0) 00049 , options_processed_ (0) 00050 , factory_disabled_ (0) 00051 #if TAO_USE_OUTPUT_CDR_MMAP_MEMORY_POOL == 1 00052 , output_cdr_allocator_type_ (MMAP_ALLOCATOR) 00053 #else 00054 , output_cdr_allocator_type_ (DEFAULT) 00055 #endif 00056 #if TAO_USE_LOCAL_MEMORY_POOL == 1 00057 , use_local_memory_pool_ (true) 00058 #else 00059 , use_local_memory_pool_ (false) 00060 #endif 00061 , cached_connection_lock_type_ (TAO_THREAD_LOCK) 00062 , object_key_table_lock_type_ (TAO_THREAD_LOCK) 00063 , corba_object_lock_type_ (TAO_THREAD_LOCK) 00064 , flushing_strategy_type_ (TAO_LEADER_FOLLOWER_FLUSHING) 00065 , codeset_manager_ (0) 00066 , char_codeset_descriptor_ (0) 00067 , wchar_codeset_descriptor_ (0) 00068 , resource_usage_strategy_ (TAO_Resource_Factory::TAO_EAGER) 00069 , drop_replies_ (true) 00070 , principal_(0) 00071 { 00072 #if TAO_USE_LAZY_RESOURCE_USAGE_STRATEGY == 1 00073 this->resource_usage_strategy_ = 00074 TAO_Resource_Factory::TAO_LAZY; 00075 #endif /*TAO_USE_LAZY_RESOURCE_USAGE_STRATEGY*/ 00076 00077 00078 } |
|
Destructor.
Definition at line 80 of file default_resource.cpp. References ACE_Unbounded_Set< T >::begin(), codeset_manager_, ACE_Unbounded_Set< T >::end(), parser_names_, parser_names_count_, principal_, protocol_factories_, ACE_Unbounded_Set< T >::reset(), CORBA::string_free(), and TAO_ProtocolFactorySetItor.
00081 { 00082 const TAO_ProtocolFactorySetItor end = this->protocol_factories_.end (); 00083 00084 for (TAO_ProtocolFactorySetItor iterator = 00085 this->protocol_factories_.begin (); 00086 iterator != end; 00087 ++iterator) 00088 { 00089 delete *iterator; 00090 } 00091 00092 this->protocol_factories_.reset (); 00093 00094 for (int i = 0; i < this->parser_names_count_; ++i) 00095 CORBA::string_free (this->parser_names_[i]); 00096 00097 delete [] this->parser_names_; 00098 00099 delete codeset_manager_; 00100 codeset_manager_ = 0; 00101 00102 delete principal_; 00103 } |
|
Add a Parser name to the list of Parser names.
Definition at line 596 of file default_resource.cpp. References parser_names_, and CORBA::string_dup(). Referenced by init().
00597 { 00598 this->parser_names_[this->index_] = CORBA::string_dup (curarg); 00599 00600 ++this->index_; 00601 00602 return 0; 00603 } |
|
Obtain the reactor implementation.
Definition at line 792 of file default_resource.cpp. References ACE_NEW_RETURN, and ACE_Timer_Queue.
00793 { 00794 ACE_Reactor_Impl *impl = 0; 00795 /* 00796 * Hook to specialize TAO's reactor implementation. 00797 */ 00798 //@@ TAO_REACTOR_SPL_COMMENT_HOOK_START 00799 ACE_NEW_RETURN (impl, 00800 ACE_TP_Reactor (ACE::max_handles (), 00801 1, 00802 (ACE_Sig_Handler*)0, 00803 (ACE_Timer_Queue*)0, 00804 this->reactor_mask_signals_, 00805 ACE_Select_Reactor_Token::LIFO), 00806 0); 00807 //@@ TAO_REACTOR_SPL_COMMENT_HOOK_END 00808 return impl; 00809 } |
|
Access the AMH response handler allocator.
Reimplemented from TAO_Resource_Factory. Definition at line 993 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00994 { 00995 ACE_Allocator *allocator = 0; 00996 if (use_local_memory_pool_) 00997 { 00998 ACE_NEW_RETURN (allocator, 00999 LOCKED_ALLOCATOR_POOL, 01000 0); 01001 } 01002 else 01003 { 01004 ACE_NEW_RETURN (allocator, 01005 LOCKED_ALLOCATOR_NO_POOL, 01006 0); 01007 } 01008 01009 return allocator; 01010 } |
|
Access the AMI response handler allocator.
Reimplemented from TAO_Resource_Factory. Definition at line 1013 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
01014 { 01015 ACE_Allocator *allocator = 0; 01016 if (use_local_memory_pool_) 01017 { 01018 ACE_NEW_RETURN (allocator, 01019 LOCKED_ALLOCATOR_POOL, 01020 0); 01021 } 01022 else 01023 { 01024 ACE_NEW_RETURN (allocator, 01025 LOCKED_ALLOCATOR_NO_POOL, 01026 0); 01027 } 01028 01029 return allocator; 01030 } |
|
This denotes the maximum number of connections that can be cached.
Reimplemented from TAO_Resource_Factory. Definition at line 1033 of file default_resource.cpp.
01034 { 01035 return this->cache_maximum_; 01036 } |
|
Modify and get the source for the CDR allocators.
|
|
Gets the codeset manager.
Reimplemented from TAO_Resource_Factory. Definition at line 1240 of file default_resource.cpp. References codeset_manager_, TAO_Codeset_Manager_Factory_Base::create(), and ACE_Dynamic_Service< TYPE >::instance(). Referenced by init_codeset_descriptors().
01241 { 01242 if (this->codeset_manager_) 01243 return this->codeset_manager_; 01244 01245 TAO_Codeset_Manager_Factory_Base *factory = 01246 ACE_Dynamic_Service<TAO_Codeset_Manager_Factory_Base>::instance ("TAO_Codeset"); 01247 this->codeset_manager_ = factory->create (); 01248 01249 return this->codeset_manager_; 01250 } |
|
Creates the lock for the lock needed in the Cache Map Reimplemented from TAO_Resource_Factory. Definition at line 1052 of file default_resource.cpp. References ACE_NEW_RETURN, and cached_connection_lock_type_.
01053 { 01054 ACE_Lock *the_lock = 0; 01055 01056 if (this->cached_connection_lock_type_ == TAO_NULL_LOCK) 01057 ACE_NEW_RETURN (the_lock, 01058 ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX>, 01059 0); 01060 else 01061 ACE_NEW_RETURN (the_lock, 01062 ACE_Lock_Adapter<TAO_SYNCH_MUTEX>, 01063 0); 01064 01065 return the_lock; 01066 } |
|
Creates the lock for the CORBA Object.
Reimplemented from TAO_Resource_Factory. Definition at line 1096 of file default_resource.cpp. References ACE_NEW_RETURN, and corba_object_lock_type_.
01097 { 01098 ACE_Lock *the_lock = 0; 01099 01100 if (this->corba_object_lock_type_ == TAO_NULL_LOCK) 01101 ACE_NEW_RETURN (the_lock, 01102 ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX>, 01103 0); 01104 else 01105 ACE_NEW_RETURN (the_lock, 01106 ACE_Lock_Adapter<TAO_SYNCH_MUTEX>, 01107 0); 01108 01109 return the_lock; 01110 } |
|
Creates the flushing strategy. The new instance is owned by the caller. Implements TAO_Resource_Factory. Definition at line 1113 of file default_resource.cpp. References ACE_NEW_RETURN, flushing_strategy_type_, TAO_LEADER_FOLLOWER_FLUSHING, and TAO_REACTIVE_FLUSHING.
01114 { 01115 TAO_Flushing_Strategy *strategy = 0; 01116 if (this->flushing_strategy_type_ == TAO_LEADER_FOLLOWER_FLUSHING) 01117 ACE_NEW_RETURN (strategy, 01118 TAO_Leader_Follower_Flushing_Strategy, 01119 0); 01120 else if (this->flushing_strategy_type_ == TAO_REACTIVE_FLUSHING) 01121 ACE_NEW_RETURN (strategy, 01122 TAO_Reactive_Flushing_Strategy, 01123 0); 01124 else 01125 ACE_NEW_RETURN (strategy, 01126 TAO_Block_Flushing_Strategy, 01127 0); 01128 return strategy; 01129 } |
|
Outgoing fragment creation strategy.
Implements TAO_Resource_Factory. Definition at line 1167 of file default_resource.cpp. References ACE_AUTO_PTR_RESET, ACE_NEW_RETURN, TAO_DEF_GIOP_MAJOR, and TAO_DEF_GIOP_MINOR.
01170 { 01171 auto_ptr<TAO_GIOP_Fragmentation_Strategy> strategy (0); 01172 01173 TAO_GIOP_Fragmentation_Strategy * tmp = 0; 01174 01175 // Minimum GIOP message size is 24 (a multiple of 8): 01176 // 12 GIOP Message Header 01177 // 4 GIOP Fragment Header (request ID) 01178 // + 8 Smallest payload, including padding. 01179 // --- 01180 // 24 01181 static CORBA::ULong const min_message_size = 24; 01182 01183 // GIOP fragments are supported in GIOP 1.1 and better, but TAO only 01184 // supports them in 1.2 or better since GIOP 1.1 fragments do not 01185 // have a fragment message header. 01186 01187 01188 if (transport) // No transport. Cannot fragment. 01189 { 01190 if (max_message_size < min_message_size 01191 || (TAO_DEF_GIOP_MAJOR == 1 && TAO_DEF_GIOP_MINOR < 2)) 01192 { 01193 // No maximum was set by the user. 01194 ACE_NEW_RETURN (tmp, 01195 TAO_Null_Fragmentation_Strategy, 01196 strategy); 01197 01198 } 01199 else 01200 { 01201 ACE_NEW_RETURN (tmp, 01202 TAO_On_Demand_Fragmentation_Strategy ( 01203 transport, 01204 max_message_size), 01205 strategy); 01206 } 01207 } 01208 01209 ACE_AUTO_PTR_RESET (strategy, 01210 tmp, 01211 TAO_GIOP_Fragmentation_Strategy); 01212 01213 return strategy; 01214 } |
|
Creates the leader followers strategy. The new instance is owned by the caller. Implements TAO_Resource_Factory. Definition at line 1155 of file default_resource.cpp. References ACE_NEW_RETURN.
01156 { 01157 TAO_LF_Strategy *strategy = 0; 01158 01159 ACE_NEW_RETURN (strategy, 01160 TAO_LF_Strategy_Complete, 01161 0); 01162 01163 return strategy; 01164 } |
|
Creates a lock needed for the table that stores the object keys.
Reimplemented from TAO_Resource_Factory. Definition at line 1079 of file default_resource.cpp. References ACE_NEW_RETURN, and object_key_table_lock_type_.
01080 { 01081 ACE_Lock *the_lock = 0; 01082 01083 if (this->object_key_table_lock_type_ == TAO_NULL_LOCK) 01084 ACE_NEW_RETURN (the_lock, 01085 ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX>, 01086 0); 01087 else 01088 ACE_NEW_RETURN (the_lock, 01089 ACE_Lock_Adapter<TAO_SYNCH_MUTEX>, 01090 0); 01091 01092 return the_lock; 01093 } |
|
Creates the connection purging strategy.
Implements TAO_Resource_Factory. Definition at line 1132 of file default_resource.cpp. References ACE_ERROR, ACE_NEW_RETURN, ACE_TEXT, connection_purging_type_, and LM_ERROR.
01133 { 01134 TAO_Connection_Purging_Strategy *strategy = 0; 01135 01136 if (this->connection_purging_type_ == TAO_Resource_Factory::LRU) 01137 { 01138 ACE_NEW_RETURN (strategy, 01139 TAO_LRU_Connection_Purging_Strategy ( 01140 this->cache_maximum ()), 01141 0); 01142 } 01143 else 01144 { 01145 ACE_ERROR ((LM_ERROR, 01146 ACE_TEXT ("TAO (%P|%t) - ") 01147 ACE_TEXT ("no usable purging strategy ") 01148 ACE_TEXT ("was found.\n"))); 01149 } 01150 01151 return strategy; 01152 } |
|
Disables the factory. When a new factory is installed and used, this function should be called on the previously used (default) factory. This should result in proper error reporting if the user attempts to set options on an unused factory. Implements TAO_Resource_Factory. Definition at line 1228 of file default_resource.cpp. References ACE_DEBUG, ACE_TEXT, factory_disabled_, LM_WARNING, and options_processed_.
01229 { 01230 this->factory_disabled_ = 1; 01231 if (this->options_processed_) 01232 { 01233 ACE_DEBUG ((LM_WARNING, 01234 ACE_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ignored\n") 01235 ACE_TEXT ("Default Resource Factory is disabled\n"))); 01236 } 01237 } |
|
Return the value of the strategy that indicates whether the ORB should wait for the replies during shutdown or drop replies during shutdown. Implements TAO_Resource_Factory. Definition at line 1273 of file default_resource.cpp. References drop_replies_.
01274 { 01275 return this->drop_replies_; 01276 } |
|
Return a reference to the acceptor registry.
Reimplemented from TAO_Resource_Factory. Definition at line 768 of file default_resource.cpp. References ACE_NEW_RETURN.
00769 { 00770 TAO_Acceptor_Registry *ar = 0; 00771 00772 ACE_NEW_RETURN(ar, 00773 TAO_Acceptor_Registry, 00774 0); 00775 00776 return ar; 00777 } |
|
Return a connector to be utilized.
Reimplemented from TAO_Resource_Factory. Definition at line 780 of file default_resource.cpp. References ACE_NEW_RETURN.
00781 { 00782 TAO_Connector_Registry *cr = 0; 00783 00784 ACE_NEW_RETURN(cr, 00785 TAO_Connector_Registry, 00786 0); 00787 00788 return cr; 00789 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 554 of file default_resource.cpp. References names, parser_names_, parser_names_count_, and CORBA::string_dup().
00556 { 00557 if (this->parser_names_count_ != 0) 00558 { 00559 // The user used some -ORBIORParser options, just return those. 00560 names = this->parser_names_; 00561 number_of_names = this->parser_names_count_; 00562 00563 return 0; 00564 } 00565 00566 // OK fallback on the hardcoded ones.... 00567 this->parser_names_count_ = 5; // HOW MANY DO WE HAVE? 00568 this->parser_names_ = 00569 new char *[this->parser_names_count_]; 00570 00571 CORBA::ULong index = 0; 00572 00573 this->parser_names_[index] = CORBA::string_dup ("DLL_Parser"); 00574 ++index; 00575 00576 this->parser_names_[index] = CORBA::string_dup ("FILE_Parser"); 00577 ++index; 00578 00579 this->parser_names_[index] = CORBA::string_dup ("CORBALOC_Parser"); 00580 ++index; 00581 00582 this->parser_names_[index] = CORBA::string_dup ("CORBANAME_Parser"); 00583 ++index; 00584 00585 this->parser_names_[index] = CORBA::string_dup ("MCAST_Parser"); 00586 ++index; 00587 00588 names = this->parser_names_; 00589 00590 number_of_names = index; 00591 00592 return 0; 00593 } |
|
The protocol factory list is implemented in this class since a) it will be a global resource and b) it is initialized at start up and then not altered. Returns a container holding the list of loaded protocols. Reimplemented from TAO_Resource_Factory. Definition at line 762 of file default_resource.cpp. References protocol_factories_. Referenced by init().
00763 { 00764 return &protocol_factories_; 00765 } |
|
Return an ACE_Reactor to be utilized.
Reimplemented from TAO_Resource_Factory. Definition at line 812 of file default_resource.cpp. References ACE_NEW_RETURN, dynamically_allocated_reactor_, and ACE_Reactor::initialized().
00813 { 00814 ACE_Reactor *reactor = 0; 00815 ACE_NEW_RETURN (reactor, 00816 ACE_Reactor (this->allocate_reactor_impl (), 1), 00817 0); 00818 00819 if (reactor->initialized () == 0) 00820 { 00821 delete reactor; 00822 reactor = 0; 00823 } 00824 else 00825 this->dynamically_allocated_reactor_ = 1; 00826 00827 return reactor; 00828 } |
|
Dynamic linking hook. CodeSet Translators CodeSet Translators Reimplemented from ACE_Shared_Object. Definition at line 106 of file default_resource.cpp. References ACE_DEBUG, ACE_ERROR, ACE_NEW_RETURN, ACE_TCHAR, ACE_TEXT, ACE_TEXT_ALWAYS_CHAR, ACE_TRACE, add_to_ior_parser_names(), TAO_Codeset_Descriptor_Base::add_translator(), ACE_OS::atoi(), cached_connection_lock_type_, char_codeset_descriptor_, connection_purging_type_, corba_object_lock_type_, DEFAULT, drop_replies_, factory_disabled_, flushing_strategy_type_, get_protocol_factories(), init_codeset_descriptors(), ACE_Unbounded_Set< T >::insert(), LM_DEBUG, LM_ERROR, LM_WARNING, LOCAL_MEMORY_POOL, max_muxed_connections_, TAO_Codeset_Descriptor_Base::ncs(), object_key_table_lock_type_, options_processed_, output_cdr_allocator_type_, parser_names_, parser_names_count_, purge_percentage_, reactor_mask_signals_, report_option_value_error(), resource_usage_strategy_, ACE_OS::strcasecmp(), ACE_OS::strncmp(), TAO_BLOCKING_FLUSHING, TAO_LEADER_FOLLOWER_FLUSHING, TAO_ProtocolFactorySet, TAO_REACTIVE_FLUSHING, use_locked_data_blocks_, and wchar_codeset_descriptor_.
00107 { 00108 ACE_TRACE ("TAO_Default_Resource_Factory::init"); 00109 00110 // If this factory has already been disabled then 00111 // print a warning and exit because any options 00112 // are useless 00113 if (this->factory_disabled_) { 00114 ACE_DEBUG ((LM_WARNING, 00115 ACE_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ") 00116 ACE_TEXT ("ignored\n") 00117 ACE_TEXT ("Default Resource Factory is disabled\n"))); 00118 return 0; 00119 } 00120 this->options_processed_ = 1; 00121 00122 this->parser_names_count_ = 0; 00123 00124 int curarg = 0; 00125 00126 for (curarg = 0; curarg < argc; ++curarg) 00127 { 00128 // Parse thro' and find the number of Parsers to be loaded. 00129 if (ACE_OS::strcasecmp (argv[curarg], 00130 ACE_TEXT("-ORBIORParser")) == 0) 00131 ++this->parser_names_count_; 00132 00133 ++curarg; 00134 00135 if (curarg == (argc-1) && this->parser_names_count_ != 0) 00136 { 00137 // This is the last loop.. 00138 ACE_NEW_RETURN (this->parser_names_, 00139 char *[this->parser_names_count_], 00140 -1); 00141 00142 for (int i = 0; 00143 i < this->parser_names_count_; 00144 ++i) 00145 this->parser_names_[i] = 0; 00146 00147 this->index_ = 0; 00148 } 00149 } 00150 00151 for (curarg = 0; curarg < argc; ++curarg) 00152 { 00153 if (ACE_OS::strcasecmp (argv[curarg], 00154 ACE_TEXT("-ORBReactorMaskSignals")) == 0) 00155 { 00156 ++curarg; 00157 if (curarg < argc) 00158 { 00159 ACE_TCHAR* name = argv[curarg]; 00160 00161 if (ACE_OS::strcasecmp (name, ACE_TEXT("0")) == 0) 00162 this->reactor_mask_signals_ = 0; 00163 else if (ACE_OS::strcasecmp (name, ACE_TEXT("1")) == 0) 00164 this->reactor_mask_signals_= 1; 00165 else 00166 this->report_option_value_error (ACE_TEXT("-ORBReactorMaskSignals"), name); 00167 } 00168 } 00169 00170 else if (ACE_OS::strcasecmp (argv[curarg], 00171 ACE_TEXT("-ORBProtocolFactory")) == 0) 00172 { 00173 TAO_ProtocolFactorySet *pset = this->get_protocol_factories (); 00174 ++curarg; 00175 if (curarg < argc) 00176 { 00177 TAO_Protocol_Item *item = 0; 00178 ACE_NEW_RETURN (item, 00179 TAO_Protocol_Item (ACE_TEXT_ALWAYS_CHAR(argv[curarg])), 00180 -1); 00181 if (pset->insert (item) == -1) 00182 ACE_ERROR ((LM_ERROR, 00183 ACE_TEXT ("(%P|%t) Unable to add protocol factories ") 00184 ACE_TEXT ("for %s: %m\n"), 00185 argv[curarg])); 00186 } 00187 } 00188 00189 /// CodeSet Translators 00190 else if (ACE_OS::strcasecmp (argv[curarg], 00191 ACE_TEXT("-ORBNativeCharCodeSet")) == 0) 00192 { 00193 ++curarg; 00194 if (curarg < argc) 00195 { 00196 if (this->char_codeset_descriptor_ == 0) 00197 this->init_codeset_descriptors(); 00198 if (this->char_codeset_descriptor_) 00199 this->char_codeset_descriptor_->ncs (argv[curarg]); 00200 } 00201 } 00202 00203 else if (ACE_OS::strcasecmp (argv[curarg], 00204 ACE_TEXT("-ORBNativeWCharCodeSet")) == 0) 00205 { 00206 ++curarg; 00207 if (curarg < argc) 00208 { 00209 if (this->wchar_codeset_descriptor_ == 0) 00210 this->init_codeset_descriptors(); 00211 if (this->wchar_codeset_descriptor_) 00212 this->wchar_codeset_descriptor_->ncs (argv[curarg]); 00213 } 00214 } 00215 00216 else if (ACE_OS::strcasecmp (argv[curarg], 00217 ACE_TEXT("-ORBCharCodesetTranslator")) == 0) 00218 { 00219 ++curarg; 00220 if (curarg < argc) 00221 { 00222 if (this->char_codeset_descriptor_ == 0) 00223 this->init_codeset_descriptors(); 00224 if (this->char_codeset_descriptor_) 00225 this->char_codeset_descriptor_->add_translator (argv[curarg]); 00226 } 00227 } 00228 00229 /// CodeSet Translators 00230 else if (ACE_OS::strcasecmp (argv[curarg], 00231 ACE_TEXT("-ORBWCharCodesetTranslator")) == 0) 00232 { 00233 ++curarg; 00234 if (curarg < argc) 00235 { 00236 if (this->wchar_codeset_descriptor_ == 0) 00237 this->init_codeset_descriptors(); 00238 if (this->wchar_codeset_descriptor_) 00239 this->wchar_codeset_descriptor_->add_translator (argv[curarg]); 00240 } 00241 } 00242 00243 else if (ACE_OS::strcasecmp (argv[curarg], 00244 ACE_TEXT("-ORBConnectionCachingStrategy")) == 0) 00245 { 00246 ++curarg; 00247 00248 // @@todo: This needs to be removed after a few betas. The 00249 // note is being written during 1.2.3 timeframe. 00250 ACE_DEBUG ((LM_DEBUG, 00251 ACE_TEXT ("(%P|%t) This option would be deprecated \n") 00252 ACE_TEXT ("(%P|%t) Please use -ORBConnectionPurgingStrategy ") 00253 ACE_TEXT ("instead \n"))); 00254 00255 if (curarg < argc) 00256 { 00257 ACE_TCHAR* name = argv[curarg]; 00258 00259 if (ACE_OS::strcasecmp (name, 00260 ACE_TEXT ("lru")) == 0) 00261 this->connection_purging_type_ = 00262 TAO_Resource_Factory::LRU; 00263 else if (ACE_OS::strcasecmp (name, 00264 ACE_TEXT ("lfu")) == 0) 00265 this->connection_purging_type_ = 00266 TAO_Resource_Factory::LFU; 00267 else if (ACE_OS::strcasecmp (name, 00268 ACE_TEXT ("fifo")) == 0) 00269 this->connection_purging_type_ = 00270 TAO_Resource_Factory::FIFO; 00271 else if (ACE_OS::strcasecmp (name, 00272 ACE_TEXT ("null")) == 0) 00273 this->connection_purging_type_ = 00274 TAO_Resource_Factory::NOOP; 00275 else 00276 this->report_option_value_error (ACE_TEXT ("-ORBConnectionCachingStrategy"), name); 00277 } 00278 } 00279 else if (ACE_OS::strcasecmp (argv[curarg], 00280 ACE_TEXT("-ORBConnectionPurgingStrategy")) == 0) 00281 { 00282 ++curarg; 00283 00284 if (curarg < argc) 00285 { 00286 ACE_TCHAR* name = argv[curarg]; 00287 00288 if (ACE_OS::strcasecmp (name, 00289 ACE_TEXT("lru")) == 0) 00290 this->connection_purging_type_ = 00291 TAO_Resource_Factory::LRU; 00292 else if (ACE_OS::strcasecmp (name, 00293 ACE_TEXT("lfu")) == 0) 00294 this->connection_purging_type_ = 00295 TAO_Resource_Factory::LFU; 00296 else if (ACE_OS::strcasecmp (name, 00297 ACE_TEXT("fifo")) == 0) 00298 this->connection_purging_type_ = 00299 TAO_Resource_Factory::FIFO; 00300 else if (ACE_OS::strcasecmp (name, 00301 ACE_TEXT("null")) == 0) 00302 this->connection_purging_type_ = 00303 TAO_Resource_Factory::NOOP; 00304 else 00305 this->report_option_value_error (ACE_TEXT("-ORBConnectionPurgingStrategy"), name); 00306 } 00307 } 00308 else if (ACE_OS::strcasecmp (argv[curarg], 00309 ACE_TEXT("-ORBConnectionCacheMax")) == 0) 00310 { 00311 ++curarg; 00312 if (curarg < argc) 00313 this->cache_maximum_ = ACE_OS::atoi (argv[curarg]); 00314 else 00315 this->report_option_value_error (ACE_TEXT("-ORBConnectionCacheMax"), argv[curarg]); 00316 } 00317 00318 else if (ACE_OS::strcasecmp (argv[curarg], 00319 ACE_TEXT("-ORBConnectionCachePurgePercentage")) == 0) 00320 { 00321 ++curarg; 00322 if (curarg < argc) 00323 this->purge_percentage_ = ACE_OS::atoi (argv[curarg]); 00324 else 00325 this->report_option_value_error (ACE_TEXT("-ORBConnectionCachePurgePercentage"), 00326 argv[curarg]); 00327 } 00328 else if (ACE_OS::strcasecmp (argv[curarg], 00329 ACE_TEXT("-ORBIORParser")) == 0) 00330 { 00331 ++curarg; 00332 00333 if (curarg < argc) 00334 { 00335 this->add_to_ior_parser_names (ACE_TEXT_ALWAYS_CHAR(argv[curarg])); 00336 } 00337 } 00338 00339 else if (ACE_OS::strcasecmp (argv[curarg], 00340 ACE_TEXT("-ORBConnectionCacheLock")) == 0) 00341 { 00342 ++curarg; 00343 if (curarg < argc) 00344 { 00345 ACE_TCHAR* name = argv[curarg]; 00346 00347 if (ACE_OS::strcasecmp (name, 00348 ACE_TEXT("thread")) == 0) 00349 this->cached_connection_lock_type_ = TAO_THREAD_LOCK; 00350 else if (ACE_OS::strcasecmp (name, 00351 ACE_TEXT("null")) == 0) 00352 { 00353 // @@ Bug 940 :This is a sort of hack now. We need to put 00354 // this in a common place once we get the common 00355 // switch that is documented in bug 940... 00356 this->use_locked_data_blocks_ = 0; 00357 this->cached_connection_lock_type_ = TAO_NULL_LOCK; 00358 } 00359 else 00360 this->report_option_value_error (ACE_TEXT("-ORBConnectionCacheLock"), name); 00361 } 00362 } 00363 else if (ACE_OS::strcasecmp (argv[curarg], 00364 ACE_TEXT("-ORBObjectKeyTableLock")) == 0) 00365 { 00366 ++curarg; 00367 if (curarg < argc) 00368 { 00369 ACE_TCHAR* name = argv[curarg]; 00370 00371 if (ACE_OS::strcasecmp (name, 00372 ACE_TEXT("thread")) == 0) 00373 this->object_key_table_lock_type_ = TAO_THREAD_LOCK; 00374 else if (ACE_OS::strcasecmp (name, 00375 ACE_TEXT("null")) == 0) 00376 { 00377 // @@ Bug 940 :This is a sort of hack now. We need to put 00378 // this in a common place once we get the common 00379 // switch that is documented in bug 940... 00380 this->object_key_table_lock_type_ = TAO_NULL_LOCK; 00381 } 00382 else 00383 this->report_option_value_error (ACE_TEXT("-ORBObjectKeyTableLock"), name); 00384 } 00385 } 00386 else if (ACE_OS::strcasecmp (argv[curarg], 00387 ACE_TEXT("-ORBCorbaObjectLock")) == 0) 00388 { 00389 ++curarg; 00390 if (curarg < argc) 00391 { 00392 ACE_TCHAR* name = argv[curarg]; 00393 00394 if (ACE_OS::strcasecmp (name, 00395 ACE_TEXT("thread")) == 0) 00396 this->corba_object_lock_type_ = TAO_THREAD_LOCK; 00397 else if (ACE_OS::strcasecmp (name, 00398 ACE_TEXT("null")) == 0) 00399 { 00400 // @@ Bug 940 :This is a sort of hack now. We need to put 00401 // this in a common place once we get the common 00402 // switch that is documented in bug 940... 00403 this->corba_object_lock_type_ = TAO_NULL_LOCK; 00404 } 00405 else 00406 this->report_option_value_error (ACE_TEXT("-ORBCorbaObjectLock"), name); 00407 } 00408 } 00409 else if (ACE_OS::strcasecmp (argv[curarg], 00410 ACE_TEXT("-ORBResourceUsage")) == 0) 00411 { 00412 ++curarg; 00413 if (curarg < argc) 00414 { 00415 ACE_TCHAR* name = argv[curarg]; 00416 00417 if (ACE_OS::strcasecmp (name, 00418 ACE_TEXT("eager")) == 0) 00419 this->resource_usage_strategy_ = TAO_EAGER; 00420 else if (ACE_OS::strcasecmp (name, 00421 ACE_TEXT("lazy")) == 0) 00422 { 00423 this->resource_usage_strategy_ = TAO_LAZY; 00424 } 00425 else 00426 this->report_option_value_error (ACE_TEXT("-ORBResourceUsage"), name); 00427 } 00428 } 00429 else if (ACE_OS::strcasecmp (argv[curarg], 00430 ACE_TEXT("-ORBFlushingStrategy")) == 0) 00431 { 00432 ++curarg; 00433 /* 00434 * Hook to specialize TAO's Flushing strategy implementations 00435 */ 00436 //@@ FLUSHING_STRATEGY_SPL_COMMENT_HOOK_START 00437 if (curarg < argc) 00438 { 00439 ACE_TCHAR* name = argv[curarg]; 00440 00441 if (ACE_OS::strcasecmp (name, 00442 ACE_TEXT("leader_follower")) == 0) 00443 this->flushing_strategy_type_ = TAO_LEADER_FOLLOWER_FLUSHING; 00444 else if (ACE_OS::strcasecmp (name, 00445 ACE_TEXT("reactive")) == 0) 00446 this->flushing_strategy_type_ = TAO_REACTIVE_FLUSHING; 00447 else if (ACE_OS::strcasecmp (name, 00448 ACE_TEXT("blocking")) == 0) 00449 this->flushing_strategy_type_ = TAO_BLOCKING_FLUSHING; 00450 else 00451 this->report_option_value_error (ACE_TEXT("-ORBFlushingStrategy"), name); 00452 } 00453 //@@ FLUSHING_STRATEGY_SPL_COMMENT_HOOK_END 00454 } 00455 else if (ACE_OS::strcasecmp (argv[curarg], 00456 ACE_TEXT ("-ORBMuxedConnectionMax")) == 0) 00457 { 00458 ++curarg; 00459 if (curarg < argc) 00460 this->max_muxed_connections_ = 00461 ACE_OS::atoi (argv[curarg]); 00462 else 00463 this->report_option_value_error (ACE_TEXT("-ORBMuxedConnectionMax"), 00464 argv[curarg]); 00465 } 00466 else if (ACE_OS::strcasecmp (argv[curarg], 00467 ACE_TEXT("-ORBDropRepliesDuringShutdown")) == 0) 00468 { 00469 ++curarg; 00470 if (curarg < argc) 00471 { 00472 int tmp = ACE_OS::atoi (argv[curarg]); 00473 00474 if (tmp == 0) 00475 this->drop_replies_ = false; 00476 else 00477 this->drop_replies_ = true; 00478 } 00479 else 00480 this->report_option_value_error (ACE_TEXT("-ORBDropRepliesDuringShutdown"), 00481 argv[curarg]); 00482 } 00483 else if (0 == ACE_OS::strcasecmp (argv[curarg], 00484 ACE_TEXT("-ORBOutputCDRAllocator"))) 00485 { 00486 ++curarg; 00487 00488 if (curarg < argc) 00489 { 00490 ACE_TCHAR const * const current_arg = argv[curarg]; 00491 00492 if (ACE_OS::strcasecmp (current_arg, 00493 ACE_TEXT("mmap")) == 0) 00494 { 00495 #ifdef ACE_HAS_SENDFILE 00496 this->output_cdr_allocator_type_ = MMAP_ALLOCATOR; 00497 #else 00498 ACE_DEBUG ((LM_WARNING, 00499 ACE_TEXT ("MMAP allocator unsupport on this platform"))); 00500 #endif /* ACE_HAS_SENDFILE */ 00501 } 00502 else if (ACE_OS::strcasecmp (current_arg, 00503 ACE_TEXT("local_memory_pool")) == 0 00504 && this->output_cdr_allocator_type_ != DEFAULT) 00505 { 00506 this->output_cdr_allocator_type_ = LOCAL_MEMORY_POOL; 00507 } 00508 else if (ACE_OS::strcasecmp (current_arg, 00509 ACE_TEXT("default")) == 0) 00510 { 00511 this->output_cdr_allocator_type_ = DEFAULT; 00512 } 00513 else 00514 { 00515 this->report_option_value_error ( 00516 ACE_TEXT("-ORBOutputCDRAllocator"), current_arg); 00517 } 00518 } 00519 } 00520 else if (0 == ACE_OS::strcasecmp (argv[curarg], 00521 ACE_TEXT("-ORBZeroCopyWrite"))) 00522 { 00523 #ifdef ACE_HAS_SENDFILE 00524 this->output_cdr_allocator_type_ = MMAP_ALLOCATOR; 00525 #else 00526 ACE_DEBUG ((LM_WARNING, 00527 ACE_TEXT ("Zero copy writes unsupported on this platform\n"))); 00528 #endif /* ACE_HAS_SENDFILE */ 00529 } 00530 else if (ACE_OS::strncmp (argv[curarg], 00531 ACE_TEXT ("-ORB"), 00532 4) == 0) 00533 { 00534 // Can we assume there is an argument after the option? 00535 // ++curarg; 00536 ACE_ERROR ((LM_ERROR, 00537 ACE_TEXT ("Default_Resource_Factory - ") 00538 ACE_TEXT ("unknown option <%s>\n"), 00539 argv[curarg])); 00540 } 00541 else 00542 { 00543 ACE_DEBUG ((LM_DEBUG, 00544 ACE_TEXT ("Default_Resource_Factory - ") 00545 ACE_TEXT ("ignoring option <%s>\n"), 00546 argv[curarg])); 00547 } 00548 } 00549 00550 return 0; 00551 } |
|
Definition at line 1253 of file default_resource.cpp. References TAO_Codeset_Manager::char_codeset_descriptor(), char_codeset_descriptor_, codeset_manager(), codeset_manager_, TAO_Codeset_Manager::wchar_codeset_descriptor(), and wchar_codeset_descriptor_. Referenced by init().
01254 { 01255 if (this->char_codeset_descriptor_) 01256 return; 01257 if (this->codeset_manager() == 0) 01258 return; 01259 01260 this->char_codeset_descriptor_ = 01261 this->codeset_manager_->char_codeset_descriptor(); 01262 this->wchar_codeset_descriptor_ = 01263 this->codeset_manager_->wchar_codeset_descriptor(); 01264 } |
|
This method will loop through the protocol list and using the protocol name field this method will retrieve a pointer to the associated protocol factory from the service configurator. It is assumed that only one thread will call this method at ORB initialization. NON-THREAD-SAFE Reimplemented from TAO_Resource_Factory. Definition at line 719 of file default_resource.cpp. References ACE_CString, ACE_DEBUG, ACE_ERROR_RETURN, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, ACE_Unbounded_Set< T >::begin(), ACE_Unbounded_Set< T >::end(), LM_DEBUG, LM_ERROR, load_default_protocols(), protocol_factories_, TAO_debug_level, and TAO_ProtocolFactorySetItor.
00720 { 00721 const TAO_ProtocolFactorySetItor end = protocol_factories_.end (); 00722 TAO_ProtocolFactorySetItor factory = protocol_factories_.begin (); 00723 00724 if (factory == end) 00725 { 00726 return this->load_default_protocols (); 00727 } 00728 00729 for (; factory != end; ++factory) 00730 { 00731 const ACE_CString &name = (*factory)->protocol_name (); 00732 (*factory)->factory ( 00733 ACE_Dynamic_Service<TAO_Protocol_Factory>::instance (name.c_str ())); 00734 if ((*factory)->factory () == 0) 00735 { 00736 ACE_ERROR_RETURN ((LM_ERROR, 00737 ACE_TEXT ("TAO (%P|%t) Unable to load ") 00738 ACE_TEXT ("protocol <%s>, %p\n"), 00739 ACE_TEXT_CHAR_TO_TCHAR(name.c_str ()), 00740 ACE_TEXT ("")), 00741 -1); 00742 } 00743 00744 if (TAO_debug_level > 0) 00745 { 00746 ACE_DEBUG ((LM_DEBUG, 00747 ACE_TEXT ("TAO (%P|%t) Loaded protocol <%s>\n"), 00748 ACE_TEXT_CHAR_TO_TCHAR(name.c_str ()))); 00749 } 00750 } 00751 00752 return 0; 00753 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 912 of file default_resource.cpp.
00913 {
00914 return 1;
00915 }
|
|
Reimplemented from TAO_Resource_Factory. Definition at line 872 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00873 { 00874 ACE_Allocator *allocator = 0; 00875 if (use_local_memory_pool_) 00876 { 00877 ACE_NEW_RETURN (allocator, 00878 LOCKED_ALLOCATOR_POOL, 00879 0); 00880 } 00881 else 00882 { 00883 ACE_NEW_RETURN (allocator, 00884 LOCKED_ALLOCATOR_NO_POOL, 00885 0); 00886 } 00887 00888 return allocator; 00889 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 852 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00853 { 00854 ACE_Allocator *allocator = 0; 00855 if (use_local_memory_pool_) 00856 { 00857 ACE_NEW_RETURN (allocator, 00858 LOCKED_ALLOCATOR_POOL, 00859 0); 00860 } 00861 else 00862 { 00863 ACE_NEW_RETURN (allocator, 00864 LOCKED_ALLOCATOR_NO_POOL, 00865 0); 00866 } 00867 00868 return allocator; 00869 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 892 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00893 { 00894 ACE_Allocator *allocator = 0; 00895 if (use_local_memory_pool_) 00896 { 00897 ACE_NEW_RETURN (allocator, 00898 LOCKED_ALLOCATOR_POOL, 00899 0); 00900 } 00901 else 00902 { 00903 ACE_NEW_RETURN (allocator, 00904 LOCKED_ALLOCATOR_NO_POOL, 00905 0); 00906 } 00907 00908 return allocator; 00909 } |
|
Loads the default protocols. This method is used so that the advanced_resource.cpp can call the one in default_resource.cpp without calling unnecessary functions. Reimplemented from TAO_Resource_Factory. Definition at line 607 of file default_resource.cpp. References ACE_AUTO_PTR_RESET, ACE_DEBUG, ACE_ERROR, ACE_NEW_RETURN, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, TAO_Protocol_Item::factory(), ACE_Unbounded_Set< T >::insert(), ACE_Dynamic_Service< TYPE >::instance(), LM_DEBUG, LM_ERROR, LM_WARNING, protocol_factories_, TAO_Protocol_Item::protocol_name(), ACE_Auto_Basic_Ptr< X >::release(), and TAO_debug_level. Referenced by init_protocol_factories().
00608 { 00609 #if defined (TAO_HAS_IIOP) && (TAO_HAS_IIOP != 0) 00610 // If the user did not list any protocols in her svc.conf file 00611 // then default to TAO's basic protocols. 00612 // You do *NOT* need modify this code to add your own protocol, 00613 // instead simply add the following to your svc.conf file: 00614 // 00615 // dynamic PP_Factory Service_Object * LIB:_make_PP_Protocol_Factory() "" 00616 // static Resource_Factory "-ORBProtocolFactory PP_Factory" 00617 // 00618 // where "PP_Factory" is the name of your protocol, i.e. the 00619 // second argument passed to the ACE_STATIC_SVC_DEFINE macro: 00620 // 00621 // ACE_STATIC_SVC_DEFINE (PP_Protocol_Factory, 00622 // ACE_TEXT ("PP_Factory"), ...) 00623 // 00624 // "PP_Protocol_Factory" is the name of your protocol factory 00625 // class. A "_make_" is prepended to your protocol factory 00626 // class name by the ACE_FACTORY_DECLARE macro. The resulting 00627 // factory function "_make_PP_Protocol_Factory()" is what should 00628 // be used in the "dynamic" line in your svc.conf file. 00629 // 00630 // LIB is the base name of the shared library that implements 00631 // the protocol. The directory containing your library must be 00632 // in your library search path, typically defined by the 00633 // LD_LIBRARY_PATH environment variable on UNIX systems, and/or 00634 // the `/etc/ld.so.conf' file on some UNIX systems. Remember to 00635 // run "ldconfig" if you modify `/etc/ld.so.conf'. 00636 00637 TAO_Protocol_Factory *protocol_factory = 0; 00638 auto_ptr<TAO_Protocol_Factory> safe_protocol_factory; 00639 00640 TAO_Protocol_Item *item = 0; 00641 00642 // If a protocol factory is obtained from the Service 00643 // Configurator then do not transfer ownership to the 00644 // TAO_Protocol_Item. 00645 bool transfer_ownership = false; 00646 00647 protocol_factory = 00648 ACE_Dynamic_Service<TAO_Protocol_Factory>::instance ("IIOP_Factory"); 00649 00650 if (protocol_factory == 0) 00651 { 00652 if (TAO_debug_level > 0) 00653 ACE_ERROR ((LM_WARNING, 00654 ACE_TEXT ("TAO (%P|%t) No %s found in ") 00655 ACE_TEXT ("Service Repository. ") 00656 ACE_TEXT ("Using default instance IIOP ") 00657 ACE_TEXT ("Protocol Factory.\n"), 00658 ACE_TEXT ("IIOP Protocol Factory"))); 00659 00660 ACE_NEW_RETURN (protocol_factory, 00661 TAO_IIOP_Protocol_Factory, 00662 -1); 00663 00664 ACE_AUTO_PTR_RESET (safe_protocol_factory, 00665 protocol_factory, 00666 TAO_Protocol_Factory); 00667 00668 transfer_ownership = true; 00669 00670 } 00671 else 00672 { 00673 transfer_ownership = false; 00674 } 00675 00676 ACE_NEW_RETURN (item, 00677 TAO_Protocol_Item ("IIOP_Factory"), 00678 -1); 00679 // If the TAO_Protocol_Item retains ownership of the 00680 // TAO_Protocol_Factory then we used an auto_ptr<> above, so 00681 // release the TAO_Protocol_Factory from it. Otherwise, we 00682 // obtained the TAO_Protocol_Factory from the Service 00683 // Configurator so an auto_ptr<> wasn't used since the Service 00684 // Configurator retains ownership, hence there was no need to 00685 // use an auto_ptr<> in this method. 00686 item->factory ((transfer_ownership ? 00687 safe_protocol_factory.release () : 00688 protocol_factory), 00689 transfer_ownership); 00690 00691 if (this->protocol_factories_.insert (item) == -1) 00692 { 00693 ACE_ERROR ((LM_ERROR, 00694 ACE_TEXT ("TAO (%P|%t) Unable to add ") 00695 ACE_TEXT ("<%s> to protocol factory set.\n"), 00696 ACE_TEXT_CHAR_TO_TCHAR (item->protocol_name ().c_str ()))); 00697 00698 delete item; 00699 00700 if (transfer_ownership == 0) 00701 delete protocol_factory; 00702 00703 return -1; 00704 } 00705 00706 if (TAO_debug_level > 0) 00707 { 00708 ACE_DEBUG ((LM_DEBUG, 00709 ACE_TEXT ("TAO (%P|%t) Loaded default ") 00710 ACE_TEXT ("protocol <IIOP_Factory>\n"))); 00711 } 00712 00713 #endif /* TAO_HAS_IIOP && TAO_HAS_IIOP != 0 */ 00714 00715 return 0; 00716 } |
|
Should the transport cache have a lock or not? Return 1 if the transport cache needs to be locked else return 0 Reimplemented from TAO_Resource_Factory. Definition at line 1069 of file default_resource.cpp. References cached_connection_lock_type_.
01070 { 01071 if (this->cached_connection_lock_type_ == TAO_NULL_LOCK) 01072 return 0; 01073 01074 return 1; 01075 } |
|
Return the number of muxed connections that are allowed for a remote endpoint Reimplemented from TAO_Resource_Factory. Definition at line 1045 of file default_resource.cpp. References max_muxed_connections_.
01046 { 01047 return this->max_muxed_connections_; 01048 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 938 of file default_resource.cpp. References ACE_NEW_RETURN, DEFAULT, LOCAL_MEMORY_POOL, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and output_cdr_allocator_type_.
00939 { 00940 ACE_Allocator *allocator = 0; 00941 00942 switch (this->output_cdr_allocator_type_) 00943 { 00944 case LOCAL_MEMORY_POOL: 00945 ACE_NEW_RETURN (allocator, 00946 LOCKED_ALLOCATOR_POOL, 00947 0); 00948 00949 break; 00950 00951 #ifdef ACE_HAS_SENDFILE 00952 case MMAP_ALLOCATOR: 00953 ACE_NEW_RETURN (allocator, 00954 TAO_MMAP_Allocator, 00955 0); 00956 00957 break; 00958 #endif /* ACE_HAS_SENDFILE */ 00959 00960 case DEFAULT: 00961 default: 00962 ACE_NEW_RETURN (allocator, 00963 LOCKED_ALLOCATOR_NO_POOL, 00964 0); 00965 00966 break; 00967 } 00968 00969 return allocator; 00970 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 918 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00919 { 00920 ACE_Allocator *allocator = 0; 00921 if (use_local_memory_pool_) 00922 { 00923 ACE_NEW_RETURN (allocator, 00924 LOCKED_ALLOCATOR_POOL, 00925 0); 00926 } 00927 else 00928 { 00929 ACE_NEW_RETURN (allocator, 00930 LOCKED_ALLOCATOR_NO_POOL, 00931 0); 00932 } 00933 00934 return allocator; 00935 } |
|
Reimplemented from TAO_Resource_Factory. Definition at line 973 of file default_resource.cpp. References ACE_NEW_RETURN, LOCKED_ALLOCATOR_NO_POOL, LOCKED_ALLOCATOR_POOL, and use_local_memory_pool_.
00974 { 00975 ACE_Allocator *allocator = 0; 00976 if (use_local_memory_pool_) 00977 { 00978 ACE_NEW_RETURN (allocator, 00979 LOCKED_ALLOCATOR_POOL, 00980 0); 00981 } 00982 else 00983 { 00984 ACE_NEW_RETURN (allocator, 00985 LOCKED_ALLOCATOR_NO_POOL, 00986 0); 00987 } 00988 00989 return allocator; 00990 } |
|
Parse svc.conf arguments.
|
|
This denotes the amount of entries to remove from the connection cache. Reimplemented from TAO_Resource_Factory. Definition at line 1039 of file default_resource.cpp. References purge_percentage_.
01040 { 01041 return this->purge_percentage_; 01042 } |
|
Reclaim reactor resources (e.g. deallocate, etc).
Reimplemented from TAO_Resource_Factory. Definition at line 831 of file default_resource.cpp. References dynamically_allocated_reactor_.
00832 { 00833 if (this->dynamically_allocated_reactor_ == 1) 00834 delete reactor; 00835 } |
|
Definition at line 1217 of file default_resource.cpp. References ACE_DEBUG, ACE_TEXT, and LM_DEBUG. Referenced by init().
01220 { 01221 ACE_DEBUG((LM_DEBUG, 01222 ACE_TEXT ("Default_Resource_Factory - unknown argument") 01223 ACE_TEXT (" <%s> for <%s>\n"), 01224 option_value, option_name)); 01225 } |
|
Return the resource usage strategy.
Implements TAO_Resource_Factory. Definition at line 1267 of file default_resource.cpp. References resource_usage_strategy_.
01268 { 01269 return this->resource_usage_strategy_; 01270 } |
|
Return the Allocator's memory pool type.
Reimplemented from TAO_Resource_Factory. Definition at line 843 of file default_resource.cpp. References DEFAULT, LOCAL_MEMORY_POOL, output_cdr_allocator_type_, and use_local_memory_pool_.
00844 { 00845 this->use_local_memory_pool_ = flag; 00846 00847 if (this->output_cdr_allocator_type_ == DEFAULT) 00848 this->output_cdr_allocator_type_ = LOCAL_MEMORY_POOL; 00849 } |
|
@ Backwards compatibility, return 1 if the ORB core should use Locked_Data_Blocks Reimplemented from TAO_Resource_Factory. Definition at line 756 of file default_resource.cpp. References use_locked_data_blocks_.
00757 { 00758 return this->use_locked_data_blocks_; 00759 } |
|
Specifies the maximum number of connections which should get cached in the ORB. Definition at line 180 of file default_resource.h. |
|
Type of lock used by the cached connector.
Definition at line 245 of file default_resource.h. Referenced by create_cached_connection_lock(), init(), and locked_transport_cache(). |
|
Definition at line 264 of file default_resource.h. Referenced by init(), and init_codeset_descriptors(). |
|
Definition at line 263 of file default_resource.h. Referenced by codeset_manager(), init_codeset_descriptors(), and ~TAO_Default_Resource_Factory(). |
|
Specifies the typeof purging strategy we should use for cleaning up unused connections Definition at line 176 of file default_resource.h. Referenced by create_purging_strategy(), and init(). |
|
Type of lock used by the corba object.
Definition at line 251 of file default_resource.h. Referenced by create_corba_object_lock(), and init(). |
|
Flag to indicate whether replies should be dropped during ORB shutdown. Definition at line 272 of file default_resource.h. Referenced by drop_replies_during_shutdown(), and init(). |
|
Flag that is set to 1 if the reactor obtained from the get_reactor() method is dynamically allocated. If this flag is set to 1, then the reclaim_reactor() method with call the delete operator on the given reactor. This flag is necessary to make sure that a reactor not allocated by the default resource factory is not reclaimed by the default resource factory. Such a situation can occur when a resource factory derived from the default one overrides the get_reactor() method but does not override the reclaim_reactor() method. Definition at line 205 of file default_resource.h. Referenced by get_reactor(), and reclaim_reactor(). |
|
This flag specifies whether the factory has been disabled. If it has been disabled we should print warnings if options were processed before (or later). Definition at line 217 of file default_resource.h. Referenced by disable_factory(), and init(). |
|
Type of flushing strategy configured.
Definition at line 261 of file default_resource.h. Referenced by create_flushing_strategy(), and init(). |
|
Index of the current element in the parser_names_ array.
Definition at line 169 of file default_resource.h. |
|
Specifies the limit on the number of muxed connections allowed per-property for the ORB. A value of 0 indicates no limit Definition at line 189 of file default_resource.h. Referenced by init(), and max_muxed_connections(). |
|
Type of lock used by the corba object.
Definition at line 248 of file default_resource.h. Referenced by create_object_key_table_lock(), and init(). |
|
This flag is used to determine whether options have been processed via the init() function. It is necessary to properly report errors when the default factory is replaced. Definition at line 212 of file default_resource.h. Referenced by disable_factory(), and init(). |
|
Type of allocator to use for output CDR buffers.
Definition at line 229 of file default_resource.h. Referenced by init(), output_cdr_buffer_allocator(), and use_local_memory_pool(). |
|
Array consisting of the names of the parsers.
Definition at line 166 of file default_resource.h. Referenced by add_to_ior_parser_names(), get_parser_names(), init(), and ~TAO_Default_Resource_Factory(). |
|
The number of the different types of Parsers.
Definition at line 163 of file default_resource.h. Referenced by get_parser_names(), init(), and ~TAO_Default_Resource_Factory(). |
|
Definition at line 278 of file default_resource.h. Referenced by ~TAO_Default_Resource_Factory(). |
|
list of loaded protocol factories.
Definition at line 172 of file default_resource.h. Referenced by get_protocol_factories(), init_protocol_factories(), load_default_protocols(), and ~TAO_Default_Resource_Factory(). |
|
Specifies the percentage of entries which should get purged on demand. Definition at line 184 of file default_resource.h. Referenced by init(), and purge_percentage(). |
|
If <0> then we create reactors with signal handling disabled.
Definition at line 192 of file default_resource.h. Referenced by init(). |
|
Resource usage strategy.
Definition at line 268 of file default_resource.h. Referenced by init(), resource_usage_strategy(), and TAO_Default_Resource_Factory(). |
|
This flag is used to determine whether the CDR allocators should use the local memory pool or not. Definition at line 233 of file default_resource.h. Referenced by amh_response_handler_allocator(), ami_response_handler_allocator(), input_cdr_buffer_allocator(), input_cdr_dblock_allocator(), input_cdr_msgblock_allocator(), output_cdr_dblock_allocator(), output_cdr_msgblock_allocator(), and use_local_memory_pool(). |
|
The type of data blocks that the ORB should use.
Definition at line 160 of file default_resource.h. Referenced by init(), and use_locked_data_blocks(). |
|
Definition at line 265 of file default_resource.h. Referenced by init(), and init_codeset_descriptors(). |