Classes | |
| struct | array_traits |
| struct | bounded_array_allocation_traits |
| struct | bounded_reference_allocation_traits |
| struct | bounded_value_allocation_traits |
| class | generic_sequence |
| class | object_reference_const_sequence_element |
| class | object_reference_sequence_element |
| struct | object_reference_traits_base |
| struct | object_reference_traits_decorator |
| struct | object_reference_traits |
| struct | range_checking |
| Configurable traits to tradeoff safety vs. performance in the implementation of TAO sequences. More... | |
| class | string_const_sequence_element |
| class | string_sequence_element |
| struct | string_traits_base |
| struct | string_traits_base< char > |
| struct | string_traits_base< CORBA::WChar > |
| struct | string_traits_decorator |
| struct | string_traits |
| struct | unbounded_array_allocation_traits |
| struct | unbounded_reference_allocation_traits |
| struct | unbounded_value_allocation_traits |
| struct | value_traits |
Functions | |
| template<typename T> int | load_protocol_factory (TAO_ProtocolFactorySet &protocol_set, const char *name) |
|
||||||||||||||||
|
Definition at line 32 of file Load_Protocol_Factory_T.h. 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, TAO_Protocol_Item::protocol_name(), ACE_Auto_Basic_Ptr< X >::release(), TAO_debug_level, and TAO_ProtocolFactorySet.
00034 {
00035 TAO_Protocol_Factory *protocol_factory = 0;
00036 auto_ptr<TAO_Protocol_Factory> safe_protocol_factory;
00037
00038 TAO_Protocol_Item *item = 0;
00039
00040 // If a protocol factory is obtained from the Service
00041 // Configurator then do not transfer ownership to the
00042 // TAO_Protocol_Item.
00043 bool transfer_ownership = false;
00044
00045 protocol_factory =
00046 ACE_Dynamic_Service<TAO_Protocol_Factory>::instance (
00047 ACE_TEXT_CHAR_TO_TCHAR (name));
00048
00049 if (protocol_factory == 0)
00050 {
00051 if (TAO_debug_level > 0)
00052 ACE_ERROR ((LM_WARNING,
00053 ACE_TEXT("(%P|%t) WARNING - No <%s> found in Service")
00054 ACE_TEXT(" Repository. Using default instance.\n"),
00055 name));
00056
00057 ACE_NEW_RETURN (protocol_factory,
00058 T,
00059 -1);
00060
00061 ACE_AUTO_PTR_RESET (safe_protocol_factory,
00062 protocol_factory,
00063 TAO_Protocol_Factory);
00064
00065 transfer_ownership = true;
00066 }
00067 else
00068 {
00069 transfer_ownership = false;
00070 }
00071
00072 ACE_NEW_RETURN (item, TAO_Protocol_Item (name), -1);
00073 // If the TAO_Protocol_Item retains ownership of the
00074 // TAO_Protocol_Factory then we used an auto_ptr<> above, so
00075 // release the TAO_Protocol_Factory from it. Otherwise, we
00076 // obtained the TAO_Protocol_Factory from the Service
00077 // Configurator so an auto_ptr<> wasn't used since the Service
00078 // Configurator retains ownership, hence there was no need to
00079 // use an auto_ptr<> in this method.
00080 item->factory ((transfer_ownership ?
00081 safe_protocol_factory.release () :
00082 protocol_factory),
00083 transfer_ownership);
00084
00085 if (protocol_set.insert (item) == -1)
00086 {
00087 ACE_ERROR ((LM_ERROR,
00088 ACE_TEXT("TAO (%P|%t) Unable to add ")
00089 ACE_TEXT("<%s> to protocol factory set.\n"),
00090 ACE_TEXT_CHAR_TO_TCHAR(item->protocol_name ().c_str ())));
00091
00092 delete item;
00093
00094 if (transfer_ownership == false)
00095 delete protocol_factory;
00096
00097 return -1;
00098 }
00099
00100 if (TAO_debug_level > 0)
00101 {
00102 ACE_DEBUG ((LM_DEBUG,
00103 ACE_TEXT("TAO (%P|%t) Loaded default ")
00104 ACE_TEXT("protocol <%s>\n"),
00105 name));
00106 }
00107
00108 return 0;
00109 }
|
1.3.6