summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
Diffstat (limited to 'TAO')
-rw-r--r--TAO/CIAO/ChangeLog93
-rw-r--r--TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp8
-rw-r--r--TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h2
-rw-r--r--TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp11
-rw-r--r--TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h5
-rw-r--r--TAO/CIAO/DAnCE/TargetManager/DomainDataManager.h7
-rw-r--r--TAO/CIAO/DAnCE/TargetManager/TargetManager.mpc4
-rw-r--r--TAO/CIAO/ciao/Deployment_Core.idl2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/ADD_Handler.cpp4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/CCD_Handler.cpp12
-rw-r--r--TAO/CIAO/tools/Config_Handlers/CEPE_Handler.cpp4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/CEPE_Handler.h76
-rw-r--r--TAO/CIAO/tools/Config_Handlers/CPD_Handler.cpp2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/CPD_Handler.h76
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Config_Handlers.mpc14
-rw-r--r--TAO/CIAO/tools/Config_Handlers/DP_Handler.cpp8
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Deployment.hpp190
-rw-r--r--TAO/CIAO/tools/Config_Handlers/ERE_Handler.cpp4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/ERE_Handler.h75
-rw-r--r--TAO/CIAO/tools/Config_Handlers/MDD_Handler.cpp2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/PCD_Handler.cpp2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/PCD_Handler.h4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp28
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp413
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp11
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h8
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp11
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp3
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h5
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp31
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp6
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc7
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Property_Handler.cpp2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Property_Handler.h79
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Req_Handler.cpp4
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Req_Handler.h76
-rw-r--r--TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp2
-rw-r--r--TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h78
-rw-r--r--TAO/CIAO/tools/Config_Handlers/Utils/Functors.h88
-rw-r--r--TAO/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp10
-rw-r--r--TAO/CIAO/tools/Config_Handlers/XML_File_Intf.cpp6
-rw-r--r--TAO/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp81
-rw-r--r--TAO/CIAO/tools/Config_Handlers/XSCRT/XML.hpp10
-rw-r--r--TAO/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp10
-rw-r--r--TAO/CIAO/tools/Config_Handlers/cdp.hpp976
-rw-r--r--TAO/CIAO/tools/Config_Handlers/toplevel.hpp193
-rw-r--r--TAO/ChangeLog1453
-rw-r--r--TAO/NEWS4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp10
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp6
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp85
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp18
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp23
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp83
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp33
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp28
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp11
-rw-r--r--TAO/TAO_IDL/fe/fe_lookup.cpp117
-rw-r--r--TAO/TAO_IDL/fe/idl.yy22
-rw-r--r--TAO/TAO_IDL/fe/y.tab.cpp22
-rw-r--r--TAO/docs/Options.html35
-rw-r--r--TAO/orbsvcs/examples/ORT/Server_IORInterceptor.cpp2
-rw-r--r--TAO/orbsvcs/examples/ORT/Server_IORInterceptor.h2
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp2
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h2
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/GOA.cpp68
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/GOA.h4
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp2
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h2
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp4
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.cpp44
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h73
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Offer_Database.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Offer_Database.h6
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp26
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h18
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader.h2
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp6
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h6
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp61
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h9
-rw-r--r--TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp2
-rw-r--r--TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp2
-rw-r--r--TAO/orbsvcs/tests/Trading/TTest.idl19
-rw-r--r--TAO/performance-tests/AMI_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/AMI_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp75
-rw-r--r--TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h61
-rw-r--r--TAO/performance-tests/AMI_Latency/Server_Task.cpp24
-rw-r--r--TAO/performance-tests/AMI_Latency/client.cpp185
-rw-r--r--TAO/performance-tests/AMI_Latency/server.cpp155
-rw-r--r--TAO/performance-tests/DII_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/DII_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/DII_Latency/client.cpp178
-rw-r--r--TAO/performance-tests/DII_Latency/server.cpp136
-rw-r--r--TAO/performance-tests/DSI_Latency/Roundtrip.cpp97
-rw-r--r--TAO/performance-tests/DSI_Latency/Roundtrip.h48
-rw-r--r--TAO/performance-tests/DSI_Latency/client.cpp163
-rw-r--r--TAO/performance-tests/DSI_Latency/server.cpp142
-rw-r--r--TAO/performance-tests/Deferred_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/Deferred_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/Deferred_Latency/client.cpp203
-rw-r--r--TAO/performance-tests/Deferred_Latency/server.cpp136
-rw-r--r--TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile616
-rw-r--r--TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/Single_Threaded_Latency/client.cpp164
-rw-r--r--TAO/performance-tests/Single_Threaded_Latency/server.cpp136
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp65
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h46
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp149
-rw-r--r--TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp136
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp65
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/Client_Task.h46
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp26
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h46
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp24
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/client.cpp149
-rw-r--r--TAO/performance-tests/Thread_Pool_Latency/server.cpp139
-rw-r--r--TAO/tao/AnyTypeCode/PI_ForwardA.h5
-rw-r--r--TAO/tao/AnyTypeCode/skip.cpp6
-rw-r--r--TAO/tao/Blocked_Connect_Strategy.cpp12
-rw-r--r--TAO/tao/Blocked_Connect_Strategy.h6
-rw-r--r--TAO/tao/Bounded_Sequence_CDR_T.h35
-rw-r--r--TAO/tao/CORBALOC_Parser.cpp3
-rw-r--r--TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp4
-rw-r--r--TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h2
-rw-r--r--TAO/tao/CSD_Framework/CSD_POA.cpp4
-rw-r--r--TAO/tao/CSD_Framework/CSD_POA.h4
-rw-r--r--TAO/tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp2
-rw-r--r--TAO/tao/Client_Strategy_Factory.cpp6
-rw-r--r--TAO/tao/Client_Strategy_Factory.h9
-rw-r--r--TAO/tao/Codeset/Codeset_Manager_i.cpp5
-rw-r--r--TAO/tao/Codeset/Codeset_Manager_i.h10
-rw-r--r--TAO/tao/Connect_Strategy.cpp40
-rw-r--r--TAO/tao/Connect_Strategy.h20
-rw-r--r--TAO/tao/DLL_Parser.cpp6
-rw-r--r--TAO/tao/Endpoint.cpp9
-rw-r--r--TAO/tao/Endpoint.h21
-rw-r--r--TAO/tao/IIOP_Connection_Handler.cpp47
-rw-r--r--TAO/tao/IIOP_Connection_Handler.h5
-rw-r--r--TAO/tao/IIOP_Connector.cpp307
-rw-r--r--TAO/tao/IIOP_Connector.h33
-rw-r--r--TAO/tao/IIOP_Endpoint.cpp85
-rw-r--r--TAO/tao/IIOP_Endpoint.h27
-rw-r--r--TAO/tao/IIOP_Profile.cpp75
-rw-r--r--TAO/tao/IIOP_Profile.h12
-rw-r--r--TAO/tao/IORInterceptor/IORInfo.cpp6
-rw-r--r--TAO/tao/IORInterceptor/IORInfo.h2
-rw-r--r--TAO/tao/IORInterceptor/IORInfoC.h2
-rw-r--r--TAO/tao/IORInterceptor/IORInterceptorC.h2
-rw-r--r--TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp2
-rw-r--r--TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.h2
-rw-r--r--TAO/tao/IORInterceptor_Adapter.h2
-rw-r--r--TAO/tao/Invocation_Endpoint_Selectors.cpp138
-rw-r--r--TAO/tao/Invocation_Endpoint_Selectors.h1
-rw-r--r--TAO/tao/LF_CH_Event.h11
-rw-r--r--TAO/tao/LF_Connect_Strategy.cpp26
-rw-r--r--TAO/tao/LF_Connect_Strategy.h10
-rw-r--r--TAO/tao/LF_Event.h7
-rw-r--r--TAO/tao/MProfile.cpp15
-rw-r--r--TAO/tao/MProfile.h8
-rw-r--r--TAO/tao/MProfile.i4
-rw-r--r--TAO/tao/Makefile.am110
-rw-r--r--TAO/tao/Messaging/ExceptionHolderC.cpp44
-rw-r--r--TAO/tao/Messaging/ExceptionHolderC.h7
-rw-r--r--TAO/tao/ORB.cpp98
-rw-r--r--TAO/tao/ORB_Core.cpp420
-rw-r--r--TAO/tao/ORB_Core.h34
-rw-r--r--TAO/tao/ORB_Core.i40
-rw-r--r--TAO/tao/ObjRefTemplate/Default_ORTC.cpp47
-rw-r--r--TAO/tao/ObjRefTemplate/Default_ORTC.h69
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp70
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.h9
-rw-r--r--TAO/tao/Object.cpp2
-rw-r--r--TAO/tao/Object.h4
-rw-r--r--TAO/tao/PI/ORBInitializer_Registry_Impl.cpp65
-rw-r--r--TAO/tao/PI/ORBInitializer_Registry_Impl.h11
-rw-r--r--TAO/tao/PI/PI.cpp58
-rw-r--r--TAO/tao/PI/PI.h16
-rw-r--r--TAO/tao/PI/PolicyFactory_Loader.cpp9
-rw-r--r--TAO/tao/PI/PolicyFactory_Loader.h6
-rw-r--r--TAO/tao/PI_Forward.pidl2
-rw-r--r--TAO/tao/PI_ForwardC.h5
-rw-r--r--TAO/tao/Parser_Registry.cpp3
-rw-r--r--TAO/tao/PortableServer/Default_Acceptor_Filter.h2
-rw-r--r--TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp2
-rw-r--r--TAO/tao/PortableServer/Default_Servant_Dispatcher.h2
-rw-r--r--TAO/tao/PortableServer/Object_Adapter.cpp28
-rw-r--r--TAO/tao/PortableServer/Object_Adapter.h4
-rw-r--r--TAO/tao/PortableServer/POAManager.cpp28
-rw-r--r--TAO/tao/PortableServer/POAManager.h40
-rw-r--r--TAO/tao/PortableServer/POAManager.i23
-rw-r--r--TAO/tao/PortableServer/POAManager.pidl2
-rw-r--r--TAO/tao/PortableServer/POAManagerC.h7
-rw-r--r--TAO/tao/PortableServer/POAManagerFactory.cpp2
-rw-r--r--TAO/tao/PortableServer/PortableServer.h1
-rw-r--r--TAO/tao/PortableServer/PortableServer.pidl6
-rw-r--r--TAO/tao/PortableServer/PortableServerC.h26
-rw-r--r--TAO/tao/PortableServer/Regular_POA.cpp2
-rw-r--r--TAO/tao/PortableServer/Regular_POA.h2
-rw-r--r--TAO/tao/PortableServer/Root_POA.cpp87
-rw-r--r--TAO/tao/PortableServer/Root_POA.h21
-rw-r--r--TAO/tao/PortableServer/Servant_Dispatcher.h8
-rw-r--r--TAO/tao/Profile.cpp43
-rw-r--r--TAO/tao/Profile.h35
-rw-r--r--TAO/tao/Profile_Transport_Resolver.cpp62
-rw-r--r--TAO/tao/Profile_Transport_Resolver.h22
-rw-r--r--TAO/tao/RTPortableServer/RT_POA.cpp4
-rw-r--r--TAO/tao/RTPortableServer/RT_POA.h4
-rw-r--r--TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp2
-rw-r--r--TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h2
-rw-r--r--TAO/tao/Reactive_Connect_Strategy.cpp27
-rw-r--r--TAO/tao/Reactive_Connect_Strategy.h10
-rw-r--r--TAO/tao/Strategies/OC_Endpoint_Selector_Loader.cpp17
-rw-r--r--TAO/tao/Strategies/OC_Endpoint_Selector_Loader.h7
-rw-r--r--TAO/tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp2
-rw-r--r--TAO/tao/TAO_Internal.cpp632
-rw-r--r--TAO/tao/TAO_Internal.h21
-rw-r--r--TAO/tao/Transport.cpp2
-rw-r--r--TAO/tao/Transport_Connector.cpp183
-rw-r--r--TAO/tao/Transport_Connector.h31
-rw-r--r--TAO/tao/Transport_Descriptor_Interface.cpp2
-rw-r--r--TAO/tao/Transport_Descriptor_Interface.h4
-rw-r--r--TAO/tao/Transport_Descriptor_Interface.inl6
-rw-r--r--TAO/tao/Unbounded_Sequence_CDR_T.h33
-rw-r--r--TAO/tao/Valuetype/AbstractBase.cpp6
-rw-r--r--TAO/tao/Valuetype/AbstractBase.h1
-rw-r--r--TAO/tao/Valuetype/StringValueC.cpp16
-rw-r--r--TAO/tao/Valuetype/StringValueC.h114
-rw-r--r--TAO/tao/Valuetype/StringValueC.inl15
-rw-r--r--TAO/tao/Valuetype/ValueBase.cpp619
-rw-r--r--TAO/tao/Valuetype/ValueBase.h157
-rw-r--r--TAO/tao/Valuetype/ValueBase.inl34
-rw-r--r--TAO/tao/Valuetype/Value_CORBA_methods.h1
-rw-r--r--TAO/tao/default_client.cpp6
-rw-r--r--TAO/tao/default_client.h8
-rw-r--r--TAO/tao/default_resource.cpp17
-rw-r--r--TAO/tao/default_resource.h7
-rw-r--r--TAO/tao/orbconf.h4
-rw-r--r--TAO/tao/params.cpp4
-rw-r--r--TAO/tao/params.h29
-rw-r--r--TAO/tao/params.i36
-rw-r--r--TAO/tao/tao.mpc35
-rw-r--r--TAO/tests/AMI/ami_test.idl10
-rw-r--r--TAO/tests/Bug_1676_Regression/client.cpp48
-rw-r--r--TAO/tests/DLL_ORB/Test_Client_Module.cpp56
-rw-r--r--TAO/tests/DLL_ORB/Test_Server_Module.cpp40
-rw-r--r--TAO/tests/ORT/ORT_test_IORInterceptor.cpp2
-rw-r--r--TAO/tests/ORT/ORT_test_IORInterceptor.h2
-rw-r--r--TAO/tests/POA/README14
-rw-r--r--TAO/tests/Param_Test/svc.conf2
-rw-r--r--TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp2
-rw-r--r--TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h2
-rw-r--r--TAO/tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc8
-rw-r--r--TAO/tests/Smart_Proxies/Benchmark/client.cpp2
-rw-r--r--TAO/tests/Smart_Proxies/Policy/client.cpp2
-rw-r--r--TAO/tests/Smart_Proxies/client.cpp2
-rw-r--r--TAO/tests/Smart_Proxies/dtor/client.cpp2
270 files changed, 6873 insertions, 6924 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index 76e0c4ecf02..9a09cf0140a 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1272,6 +1272,99 @@ Wed Feb 1 21:21:35 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
Wed Feb 1 20:42:42 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ * tools/Config_Handlers/Utils/Functors.h
+
+ Introduced a workaround for a ICE in GCC 4.0.22.
+
+Wed Apr 26 13:10:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/DP_Handler.cpp:
+ * tools/Config_Handlers/XML_File_Intf.cpp:
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp:
+ * tools/Config_Handlers/XSCRT/XMLSchema.hpp:
+ * tools/Config_Handlers/XSCRT/Elements.hpp:
+ * tools/Config_Handlers/XSCRT/XML.hpp:
+ Removed workarounds for vc6 again
+
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h:
+ Added missing post.h
+
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h:
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.h:
+ Fixed incorrect file tags
+
+Wed Apr 26 08:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ Fixed compile problem in gcc4 build
+
+Tue Apr 25 21:27:05 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc
+
+ Linking problems for Borland.
+
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+
+ More compile fixes for Borland.
+Tue Apr 25 20:12:25 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * ciao/Deployment_Core.idl
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/CCD_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.h
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ERE_Handler.cpp
+ * tools/Config_Handlers/ERE_Handler.h
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.h
+ * tools/Config_Handlers/Property_Handler.cpp
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/Req_Handler.cpp
+ * tools/Config_Handlers/Req_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.cpp
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.h
+
+ Compilation fixes for borland, some cosmetic fixes as well.
+
+Tue Apr 25 09:00:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/CPD_Handler.h:
+ ComponentPortDescription is a struct, so also forward declare it
+ as a struct
+
+Mon Apr 24 18:53:22 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
* CIDLC/ServantSourceGenerator.cpp
Fixed a code generation problem caused by careless merging.
diff --git a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp
index 5edb7a51b3a..0cd1d7954b2 100644
--- a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp
+++ b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp
@@ -413,13 +413,13 @@ CIAO::NodeApplication_Impl::passivate_component (const char * name
"CIAO::NodeApplication_Impl::passivate_component, "
"invalid instance [%s] \n",
name));
- ACE_TRY_THROW (Deployment::StartError ());
+ ACE_TRY_THROW (Components::RemoveFailure ());
}
if (CORBA::is_nil (comp_state.objref_.in ()))
{
ACE_DEBUG ((LM_DEBUG, "comp is nil\n"));
- throw Deployment::StartError ();
+ throw Components::RemoveFailure ();
}
comp_state.objref_->ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER);
@@ -430,7 +430,7 @@ void
CIAO::NodeApplication_Impl::activate_component (const char * name
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Components::RemoveFailure))
+ ::Deployment::StartError))
{
Component_State_Info comp_state;
@@ -438,7 +438,7 @@ CIAO::NodeApplication_Impl::activate_component (const char * name
{
ACE_ERROR ((LM_ERROR,
"CIAO (%P|%t) - NodeApplication_Impl.cpp, "
- "CIAO::NodeApplication_Impl::passivate_component, "
+ "CIAO::NodeApplication_Impl::activate_component, "
"invalid instance [%s] \n",
name));
ACE_TRY_THROW (Deployment::StartError ());
diff --git a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
index 8a08e3456c5..ee1878ff07d 100644
--- a/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
+++ b/TAO/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
@@ -183,7 +183,7 @@ namespace CIAO
virtual void activate_component (const char * name
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((::CORBA::SystemException,
- ::Components::RemoveFailure));
+ ::Deployment::StartError));
virtual void passivate_component (const char * name
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
diff --git a/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp b/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
index df31c704651..352a005515a 100644
--- a/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+++ b/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
@@ -272,9 +272,11 @@ namespace CIAO
// For svnt/exec artifacts
for (CORBA::ULong j = 0; j < artifact_num; ++j)
{
- const Deployment::ArtifactDeploymentDescription & arti =
+ Deployment::ArtifactDeploymentDescription arti =
this->plan_.artifact[ impl.artifactRef[j] ];
+ // @Stoyan: Is there any particular reason the repository
+ // manager should only work on Windows? -Will
#if defined (ACE_WIN32) || defined (ACE_WIN64)
for (size_t loc_num = 0;
loc_num < arti.location.length ();
@@ -292,8 +294,11 @@ namespace CIAO
"Containers_Info_Map::insert_instance_into_container -"
"ERROR: Unable to resolve HTTP ref to location[%d] of %s\n",
loc_num, arti.name.in ()));
-
- arti.location[loc_num] = CORBA::string_dup ("HTTP_failure");
+
+ // @Stoyan: This is an inappropriate response to
+ // this type of failure. Please throw an
+ // exception, Deployment::UnknownImplId would be appropriate.
+ arti.location[loc_num] = "HTTP_failure";
}
else
{
diff --git a/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h b/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h
index 4fb23a46f19..a60cbe662b3 100644
--- a/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h
+++ b/TAO/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h
@@ -87,7 +87,10 @@ namespace CIAO
* any references to HTTP URLs
*/
protected:
-
+
+ // @Stoyan - Please follow ACE coding guideines when naming your
+ //member variables. In particular, please use lower case and
+ //follow the name with a trailing underscore.
//directory in which to download the libraries obtained via HTTP
ACE_CString HTTP_DOWNLOAD_PATH;
diff --git a/TAO/CIAO/DAnCE/TargetManager/DomainDataManager.h b/TAO/CIAO/DAnCE/TargetManager/DomainDataManager.h
index 84e50a5fabf..ea704259a0e 100644
--- a/TAO/CIAO/DAnCE/TargetManager/DomainDataManager.h
+++ b/TAO/CIAO/DAnCE/TargetManager/DomainDataManager.h
@@ -201,10 +201,9 @@ namespace CIAO
* @param available The available Properties
*/
- void CIAO::DomainDataManager::
- match_properties (
- ::Deployment::Properties deployed,
- ::Deployment::SatisfierProperties& available);
+ void match_properties (
+ ::Deployment::Properties deployed,
+ ::Deployment::SatisfierProperties& available);
/// The different actiona that can take place
diff --git a/TAO/CIAO/DAnCE/TargetManager/TargetManager.mpc b/TAO/CIAO/DAnCE/TargetManager/TargetManager.mpc
index b5a7aaa5458..07200eb0eca 100644
--- a/TAO/CIAO/DAnCE/TargetManager/TargetManager.mpc
+++ b/TAO/CIAO/DAnCE/TargetManager/TargetManager.mpc
@@ -22,7 +22,7 @@ project(CIAO_TargetManager_stub): ciao_client_dnc, ciao_deployment_stub {
project(CIAO_TargetManager_svnt) : ciao_servant_dnc {
after += CIAO_TargetManager_stub
sharedname = TargetManager_svnt
- libs += TargetManager_stub
+ libs += TargetManager_stub NodeManager_stub
idlflags += -Wb,export_macro=TARGETMANAGER_SVNT_Export -Wb,export_include=TargetManager_svnt_export.h
dynamicflags = TARGETMANAGER_SVNT_BUILD_DLL
@@ -47,7 +47,7 @@ project(CIAO_TargetManager_svnt) : ciao_servant_dnc {
project(CIAO_TargetManager_exec) : ciao_servant_dnc, ciao_config_handlers, ciao_domainapplicationmanager_dnc {
after += CIAO_TargetManager_svnt
sharedname = TargetManager_exec
- libs += TargetManager_stub TargetManager_svnt
+ libs += TargetManager_stub TargetManager_svnt NodeManager_stub
idlflags += -Wb,export_macro=TARGETMANAGER_EXEC_Export -Wb,export_include=TargetManager_exec_export.h
dynamicflags = TARGETMANAGER_EXEC_BUILD_DLL
diff --git a/TAO/CIAO/ciao/Deployment_Core.idl b/TAO/CIAO/ciao/Deployment_Core.idl
index bfb58b6e2c8..6f0a465f7e2 100644
--- a/TAO/CIAO/ciao/Deployment_Core.idl
+++ b/TAO/CIAO/ciao/Deployment_Core.idl
@@ -284,7 +284,7 @@ module Deployment
/// CIAO specific extensions
/// Activate a component instance from the NodeApplication
void activate_component (in string inst_name)
- raises (::Components::RemoveFailure);
+ raises (::Deployment::StartError);
/// CIAO specific extensions
/// Passivate a component instance from the NodeApplication
diff --git a/TAO/CIAO/tools/Config_Handlers/ADD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/ADD_Handler.cpp
index 204bd665a70..0a81e4c4859 100644
--- a/TAO/CIAO/tools/Config_Handlers/ADD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/ADD_Handler.cpp
@@ -84,8 +84,8 @@ namespace CIAO
adcb != adce;
++adcb)
{
- Property_Handler::get_property ((*adcb),
- dest.execParameter[len++]);
+ Property_Handler::handle_property ((*adcb),
+ dest.execParameter[len++]);
}
if (src.id_p ())
diff --git a/TAO/CIAO/tools/Config_Handlers/CCD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/CCD_Handler.cpp
index 70104131917..f7e4a7e82d3 100644
--- a/TAO/CIAO/tools/Config_Handlers/CCD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/CCD_Handler.cpp
@@ -70,8 +70,8 @@ namespace CIAO
pstart != pend;
++pstart)
{
- Property_Handler::get_property (*pstart,
- toconfig.configProperty [pos++]);
+ Property_Handler::handle_property (*pstart,
+ toconfig.configProperty [pos++]);
}
pos = 0;
@@ -81,8 +81,7 @@ namespace CIAO
port != desc.end_port ();
++port)
{
- CPD_Handler::component_port_description (
- *port,
+ CPD_Handler::handle_component_port_description (*port,
toconfig.port[pos++]);
}
@@ -105,9 +104,8 @@ namespace CIAO
infoProp != desc.end_infoProperty();
infoProp++)
{
- Property_Handler::get_property (
- *infoProp,
- toconfig.infoProperty[pos]);
+ Property_Handler::handle_property (*infoProp,
+ toconfig.infoProperty[pos]);
}
}
diff --git a/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.cpp
index b061c426987..3131ce5735b 100644
--- a/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.cpp
@@ -24,13 +24,13 @@ namespace CIAO
eeci_b != eeci_e;
++eeci_b)
{
- CEPE_Handler::external_port_endpoint ((*eeci_b),
+ CEPE_Handler::handle_external_port_endpoint ((*eeci_b),
dest[pos++]);
}
}
void
- CEPE_Handler::external_port_endpoint (
+ CEPE_Handler::handle_external_port_endpoint (
const ComponentExternalPortEndpoint &src,
::Deployment::ComponentExternalPortEndpoint &dest)
{
diff --git a/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.h b/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.h
index 681fcb1ec43..f0ba7f0d2fb 100644
--- a/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/CEPE_Handler.h
@@ -1,11 +1,11 @@
//==============================================================
/**
-* @file CEPE_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file CEPE_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================================
#ifndef CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H
@@ -21,48 +21,46 @@
namespace Deployment
{
-class ComponentExternalPortEndpoints;
-struct ComponentExternalPortEndpoint;
+ class ComponentExternalPortEndpoints;
+ struct ComponentExternalPortEndpoint;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-class PlanConnectionDescription;
-class ComponentExternalPortEndpoint;
+ namespace Config_Handlers
+ {
+ class PlanConnectionDescription;
+ class ComponentExternalPortEndpoint;
-/*
-* @class CEPE_Handler
-*
-* @brief Handler class for <ComponentExternalPortEndpoint> types.
-*
-* This class defines handler methods to map values from
-* XSC ComponentExternalPortEndpoint objects, parsed from
-* the descriptor files, to the corresponding CORBA IDL type.
-*
-*/
+ /*
+ * @class CEPE_Handler
+ *
+ * @brief Handler class for <ComponentExternalPortEndpoint> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC ComponentExternalPortEndpoint objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
-class Config_Handlers_Export CEPE_Handler
-{
-public:
-static void external_port_endpoints (
-const PlanConnectionDescription &src,
-::Deployment::ComponentExternalPortEndpoints &dest);
+ class Config_Handlers_Export CEPE_Handler
+ {
+ public:
+ static void external_port_endpoints (const PlanConnectionDescription &src,
+ ::Deployment::ComponentExternalPortEndpoints &dest);
-static ComponentExternalPortEndpoint
-external_port_endpoint (
-const ::Deployment::ComponentExternalPortEndpoint &src);
+ static ComponentExternalPortEndpoint
+ external_port_endpoint (const ::Deployment::ComponentExternalPortEndpoint &src);
-static void external_port_endpoint (const ComponentExternalPortEndpoint &src,
-::Deployment::ComponentExternalPortEndpoint &dest);
-};
+ static void handle_external_port_endpoint (const ComponentExternalPortEndpoint &src,
+ ::Deployment::ComponentExternalPortEndpoint &dest);
+ };
-typedef Sequence_Handler < ComponentExternalPortEndpoint,
-::Deployment::ComponentExternalPortEndpoints,
-::Deployment::ComponentExternalPortEndpoint,
-CEPE_Handler::external_port_endpoint > CEPE_Functor;
-}
+ typedef Sequence_Handler < ComponentExternalPortEndpoint,
+ ::Deployment::ComponentExternalPortEndpoints,
+ ::Deployment::ComponentExternalPortEndpoint,
+ CEPE_Handler::handle_external_port_endpoint > CEPE_Functor;
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/CPD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/CPD_Handler.cpp
index 67fcc0901c6..0b7b54d1adf 100644
--- a/TAO/CIAO/tools/Config_Handlers/CPD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/CPD_Handler.cpp
@@ -10,7 +10,7 @@ namespace CIAO
namespace Config_Handlers
{
void
- CPD_Handler::component_port_description (
+ CPD_Handler::handle_component_port_description (
const ComponentPortDescription& desc,
Deployment::ComponentPortDescription& toconfig)
{
diff --git a/TAO/CIAO/tools/Config_Handlers/CPD_Handler.h b/TAO/CIAO/tools/Config_Handlers/CPD_Handler.h
index 31737241b51..57c97bc5b60 100644
--- a/TAO/CIAO/tools/Config_Handlers/CPD_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/CPD_Handler.h
@@ -1,11 +1,11 @@
//================================================
/**
-* @file CPD_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file CPD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================
#ifndef CIAO_CONFIG_HANDLERS_CPD_HANDLER_H
@@ -22,48 +22,46 @@
namespace Deployment
{
-class ComponentPortDescription;
-class ComponentPortDescriptions;
+ struct ComponentPortDescription;
+ class ComponentPortDescriptions;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-class ComponentPortDescription;
-/*
-* @class CPD_Handler
-*
-* @brief Handler class for <CCMComponentPortDescription> types.
-*
-* This class defines handler methods to map values from
-* XSC objects, parsed from the descriptor files, to the
-* corresponding CORBA IDL type for the schema element.
-*
-*/
+ namespace Config_Handlers
+ {
+ class ComponentPortDescription;
+ /*
+ * @class CPD_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
-class Config_Handlers_Export CPD_Handler
-{
+ class Config_Handlers_Export CPD_Handler
+ {
-public:
-/// Maps the values from the XSC object
-/// <ComponentInterfaceDescription> to the CORBA IDL type
-/// <Deployment::ComponentInterfaceDescription>.
-static void component_port_description (
-const ComponentPortDescription &desc,
-::Deployment::ComponentPortDescription &toconfig);
+ public:
+ /// Maps the values from the XSC object
+ /// <ComponentInterfaceDescription> to the CORBA IDL type
+ /// <Deployment::ComponentInterfaceDescription>.
+ static void handle_component_port_description (const ComponentPortDescription &desc,
+ ::Deployment::ComponentPortDescription &toconfig);
-static ComponentPortDescription
-component_port_description (
-const Deployment::ComponentPortDescription& src);
-};
+ static ComponentPortDescription
+ component_port_description (const Deployment::ComponentPortDescription& src);
+ };
-typedef Sequence_Handler < ComponentPortDescription,
-::Deployment::ComponentPortDescriptions,
-::Deployment::ComponentPortDescription,
-CPD_Handler::component_port_description > CPD_Functor;
+ typedef Sequence_Handler < ComponentPortDescription,
+ ::Deployment::ComponentPortDescriptions,
+ ::Deployment::ComponentPortDescription,
+ CPD_Handler::handle_component_port_description > CPD_Functor;
-}
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/Config_Handlers.mpc b/TAO/CIAO/tools/Config_Handlers/Config_Handlers.mpc
index e4f3bb21e66..da9f5d0ba3e 100644
--- a/TAO/CIAO/tools/Config_Handlers/Config_Handlers.mpc
+++ b/TAO/CIAO/tools/Config_Handlers/Config_Handlers.mpc
@@ -1,11 +1,6 @@
//$Id$
project (XSC_XML_Handlers) : acelib, xerces {
-
- verbatim(gnuace, macros) {
- override no_hidden_visibility = 1
- }
-
sharedname += XSC_XML_Handlers
dynamicflags = XSC_XML_HANDLERS_BUILD_DLL
macros += XML_USE_PTHREADS
@@ -28,14 +23,13 @@ project (XSC_XML_Handlers) : acelib, xerces {
Header_Files {
XSC_XML_Handlers_Export.h
}
-}
-
-project (XSC_Config_Handlers) : ciao_deployment_stub, xerces, dynamicany, typecodefactory {
verbatim(gnuace, macros) {
override no_hidden_visibility = 1
}
+}
+project (XSC_Config_Handlers) : ciao_deployment_stub, xerces, dynamicany, typecodefactory {
after += CIAO_Events_Handlers RT_CCM_Config_Handlers XSC_XML_Handlers XSC_DynAny_Handler
sharedname = XSC_Config_Handlers
dynamicflags = CONFIG_HANDLERS_BUILD_DLL
@@ -82,6 +76,10 @@ project (XSC_Config_Handlers) : ciao_deployment_stub, xerces, dynamicany, typeco
Header_Files {
Config_Handlers_Export.h
}
+
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
}
project (XSC_Config_Handlers_Tests) : ciao_component_dnc, ciao_config_handlers, ifr_client {
diff --git a/TAO/CIAO/tools/Config_Handlers/DP_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/DP_Handler.cpp
index fb66b16fa41..0953c705cd5 100644
--- a/TAO/CIAO/tools/Config_Handlers/DP_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/DP_Handler.cpp
@@ -1,8 +1,4 @@
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-#pragma warning (disable: 4018)
-#pragma warning (disable: 4284)
-#pragma warning (disable: 4146)
-#endif
+// $Id$
#include "DP_Handler.h"
#include "ace/UUID.h"
@@ -175,7 +171,7 @@ ACE_RCSID (Config_Handlers,
}
else
{
- Property_Handler::get_property (*pstart,
+ Property_Handler::handle_property (*pstart,
this->idl_dp_->infoProperty [len]);
}
}
diff --git a/TAO/CIAO/tools/Config_Handlers/Deployment.hpp b/TAO/CIAO/tools/Config_Handlers/Deployment.hpp
index 6c6cea3596f..ca6cf839a75 100644
--- a/TAO/CIAO/tools/Config_Handlers/Deployment.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/Deployment.hpp
@@ -1,13 +1,13 @@
/* $Id$
-* This code was generated by the XML Schema Compiler.
-*
-* Changes made to this code will most likely be overwritten
-* when the handlers are recompiled.
-*
-* If you find errors or feel that there are bugfixes to be made,
-* please contact the current XSC maintainer:
-* Will Otte <wotte@dre.vanderbilt.edu>
-*/
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
// Fix for Borland compilers, which seem to have a broken
@@ -24,9 +24,9 @@
//
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
#include <memory>
@@ -45,109 +45,109 @@ namespace Config_Handlers
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::Domain
-domain (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::DeploymentPlan
-deploymentPlan (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::ImplementationArtifactDescription
-implementationArtifactDescription (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::ComponentInterfaceDescription
-componentInterfaceDescription (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::ComponentImplementationDescription
-componentImplementationDescription (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::ComponentPackageDescription
-componentPackageDescription (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::PackageConfiguration
-packageConfiguration (xercesc::DOMDocument const*);
-
-XSC_XML_Handlers_Export
-::CIAO::Config_Handlers::TopLevelPackageDescription
-topLevelPackageDescription (xercesc::DOMDocument const*);
-}
+ namespace Config_Handlers
+ {
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::Domain
+ domain (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::DeploymentPlan
+ deploymentPlan (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ImplementationArtifactDescription
+ implementationArtifactDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription
+ componentInterfaceDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentImplementationDescription
+ componentImplementationDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentPackageDescription
+ componentPackageDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::PackageConfiguration
+ packageConfiguration (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::TopLevelPackageDescription
+ topLevelPackageDescription (xercesc::DOMDocument const*);
+ }
}
#include "XMLSchema/Traversal.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Traversal
-{
-}
-}
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ }
+ }
}
#include "XMLSchema/Writer.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Writer
-{
-}
-}
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ }
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-XSC_XML_Handlers_Export
-void
-domain (::CIAO::Config_Handlers::Domain const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-deploymentPlan (::CIAO::Config_Handlers::DeploymentPlan const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const&, xercesc::DOMDocument*);
-
-XSC_XML_Handlers_Export
-void
-topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const&, xercesc::DOMDocument*);
-}
+ namespace Config_Handlers
+ {
+ XSC_XML_Handlers_Export
+ void
+ domain (::CIAO::Config_Handlers::Domain const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ deploymentPlan (::CIAO::Config_Handlers::DeploymentPlan const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const&, xercesc::DOMDocument*);
+ }
}
#endif // DEPLOYMENT_HPP
diff --git a/TAO/CIAO/tools/Config_Handlers/ERE_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/ERE_Handler.cpp
index 200282aa792..d64528cfdeb 100644
--- a/TAO/CIAO/tools/Config_Handlers/ERE_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/ERE_Handler.cpp
@@ -24,13 +24,13 @@ namespace CIAO
erep_b != erep_e;
++erep_b)
{
- ERE_Handler::external_ref_endpoint ((*erep_b),
+ ERE_Handler::handle_external_ref_endpoint ((*erep_b),
dest[pos++]);
}
}
void
- ERE_Handler::external_ref_endpoint (
+ ERE_Handler::handle_external_ref_endpoint (
const ExternalReferenceEndpoint &src,
Deployment::ExternalReferenceEndpoint &dest)
{
diff --git a/TAO/CIAO/tools/Config_Handlers/ERE_Handler.h b/TAO/CIAO/tools/Config_Handlers/ERE_Handler.h
index 934e2273bf5..c3bad772118 100644
--- a/TAO/CIAO/tools/Config_Handlers/ERE_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/ERE_Handler.h
@@ -1,11 +1,11 @@
//==============================================================
/**
-* @file ERE_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file ERE_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================================
#ifndef CIAO_CONFIG_HANDLERS_ERE_HANDLER_H
@@ -22,49 +22,48 @@
namespace Deployment
{
-class ExternalReferenceEndpoints;
-struct ExternalReferenceEndpoint;
+ class ExternalReferenceEndpoints;
+ struct ExternalReferenceEndpoint;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-class PlanConnectionDescription;
-class ExternalReferenceEndpoint;
+ namespace Config_Handlers
+ {
+ class PlanConnectionDescription;
+ class ExternalReferenceEndpoint;
-/*
-* @class ERE_Handler
-*
-* @brief Handler class for <ExternalReferenceEndpoint> types.
-*
-* This class defines handler methods to map values from
-* XSC ExternalReferenceEndpoint objects, parsed from
-* the descriptor files, to the corresponding CORBA IDL type.
-*
-*/
+ /*
+ * @class ERE_Handler
+ *
+ * @brief Handler class for <ExternalReferenceEndpoint> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC ExternalReferenceEndpoint objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
-class Config_Handlers_Export ERE_Handler
-{
-public:
-static void external_ref_endpoints (
-const PlanConnectionDescription &src,
-::Deployment::ExternalReferenceEndpoints &dest);
+ class Config_Handlers_Export ERE_Handler
+ {
+ public:
+ static void external_ref_endpoints (const PlanConnectionDescription &src,
+ ::Deployment::ExternalReferenceEndpoints &dest);
-static ExternalReferenceEndpoint external_ref_endpoint (
-const Deployment::ExternalReferenceEndpoint& src);
+ static ExternalReferenceEndpoint external_ref_endpoint (
+ const Deployment::ExternalReferenceEndpoint& src);
-static void external_ref_endpoint (const ExternalReferenceEndpoint &src,
-Deployment::ExternalReferenceEndpoint &dest);
-};
+ static void handle_external_ref_endpoint (const ExternalReferenceEndpoint &src,
+ Deployment::ExternalReferenceEndpoint &dest);
+ };
-typedef Sequence_Handler < ExternalReferenceEndpoint,
-::Deployment::ExternalReferenceEndpoints,
-::Deployment::ExternalReferenceEndpoint,
-ERE_Handler::external_ref_endpoint > ERE_Functor;
+ typedef Sequence_Handler < ExternalReferenceEndpoint,
+ ::Deployment::ExternalReferenceEndpoints,
+ ::Deployment::ExternalReferenceEndpoint,
+ ERE_Handler::handle_external_ref_endpoint > ERE_Functor;
-}
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/MDD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/MDD_Handler.cpp
index 9006956d2de..c86d6dc1da1 100644
--- a/TAO/CIAO/tools/Config_Handlers/MDD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/MDD_Handler.cpp
@@ -87,7 +87,7 @@ namespace CIAO
epcb != epce;
++epcb)
{
- Property_Handler::get_property ((*epcb),
+ Property_Handler::handle_property ((*epcb),
toconfig.execParameter[len++]);
}
diff --git a/TAO/CIAO/tools/Config_Handlers/PCD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/PCD_Handler.cpp
index bcb5e4d917c..23b332d471e 100644
--- a/TAO/CIAO/tools/Config_Handlers/PCD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/PCD_Handler.cpp
@@ -26,7 +26,7 @@ namespace CIAO
///This method takes a <Deployment::PlanConnectionDescription>
///and maps the values from the passed in XSC
///PlanConnectionDescription to its members.
- void PCD_Handler::get_PlanConnectionDescription (const PlanConnectionDescription& desc,
+ void PCD_Handler::handle_PlanConnectionDescription (const PlanConnectionDescription& desc,
Deployment::PlanConnectionDescription& toconfig)
{
CIAO_TRACE("PCD_Handler::get_PlanConnectionDescription");
diff --git a/TAO/CIAO/tools/Config_Handlers/PCD_Handler.h b/TAO/CIAO/tools/Config_Handlers/PCD_Handler.h
index edac698d7b6..7b852203f60 100644
--- a/TAO/CIAO/tools/Config_Handlers/PCD_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/PCD_Handler.h
@@ -53,7 +53,7 @@ namespace CIAO
///This method takes a <Deployment::PlanConnectionDescription>
///and maps the values from the passed in XSC
///PlanConnectionDescription to its members.
- static void get_PlanConnectionDescription (const PlanConnectionDescription& desc,
+ static void handle_PlanConnectionDescription (const PlanConnectionDescription& desc,
Deployment::PlanConnectionDescription& toconfig);
//This method takes a <Deployment::PlanConnectionDescription>
@@ -66,7 +66,7 @@ namespace CIAO
typedef Sequence_Handler < PlanConnectionDescription,
::Deployment::PlanConnectionDescriptions,
::Deployment::PlanConnectionDescription,
- PCD_Handler::get_PlanConnectionDescription > PCD_Functor;
+ PCD_Handler::handle_PlanConnectionDescription > PCD_Functor;
}
}
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
index d9756f3c07f..ec3bb20e539 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
@@ -21,7 +21,7 @@ namespace CIAO
{
struct SPE_Handler
{
- static void get_spe (const SubcomponentPortEndpoint &desc,
+ static void handle_spe (const SubcomponentPortEndpoint &desc,
::Deployment::SubcomponentPortEndpoint &toconfig)
{
CIAO_TRACE("SPE_Handler::get_spe");
@@ -50,11 +50,11 @@ namespace CIAO
typedef Sequence_Handler < SubcomponentPortEndpoint,
::Deployment::SubcomponentPortEndpoints,
::Deployment::SubcomponentPortEndpoint,
- SPE_Handler::get_spe > SPE_Functor;
+ SPE_Handler::handle_spe > SPE_Functor;
struct ACD_Handler
{
- static void get_acd (const AssemblyConnectionDescription &desc,
+ static void handle_acd (const AssemblyConnectionDescription &desc,
::Deployment::AssemblyConnectionDescription &toconfig)
{
CIAO_TRACE("ACD_Handler::get_acd");
@@ -67,6 +67,9 @@ namespace CIAO
Requirement_Functor (toconfig.deployRequirement));
toconfig.internalEndpoint.length (desc.count_internalEndpoint ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (SPE_Handler::handle_spe,
+ desc.begin_internalEndpoint (),
+ toconfig.internalEndpoint);
std::for_each (desc.begin_internalEndpoint (),
desc.end_internalEndpoint (),
SPE_Functor (toconfig.internalEndpoint));
@@ -113,12 +116,12 @@ namespace CIAO
typedef Sequence_Handler < AssemblyConnectionDescription,
::Deployment::AssemblyConnectionDescriptions,
::Deployment::AssemblyConnectionDescription,
- ACD_Handler::get_acd > ACD_Functor;
+ ACD_Handler::handle_acd > ACD_Functor;
struct SPR_Handler
{
- static void get_spr (const SubcomponentPropertyReference &desc,
+ static void handle_spr (const SubcomponentPropertyReference &desc,
::Deployment::SubcomponentPropertyReference &toconfig)
{
CIAO_TRACE("SPR_Handler::get_spr");
@@ -149,11 +152,11 @@ namespace CIAO
typedef Sequence_Handler < SubcomponentPropertyReference,
::Deployment::SubcomponentPropertyReferences,
::Deployment::SubcomponentPropertyReference,
- SPR_Handler::get_spr > SPR_Functor;
+ SPR_Handler::handle_spr > SPR_Functor;
struct APM_Handler
{
- static void get_apm (const AssemblyPropertyMapping &desc,
+ static void handle_apm (const AssemblyPropertyMapping &desc,
::Deployment::AssemblyPropertyMapping &toconfig)
{
CIAO_TRACE("APM_Handler::get_apm");
@@ -162,6 +165,9 @@ namespace CIAO
toconfig.externalName = desc.externalName ().c_str ();
toconfig.delegatesTo.length (desc.count_delegatesTo ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (SPR_Handler::handle_spr,
+ desc.begin_delegatesTo (),
+ toconfig.delegatesTo);
std::for_each (desc.begin_delegatesTo (),
desc.end_delegatesTo (),
SPR_Functor (toconfig.delegatesTo));
@@ -185,7 +191,7 @@ namespace CIAO
typedef Sequence_Handler < AssemblyPropertyMapping,
::Deployment::AssemblyPropertyMappings,
::Deployment::AssemblyPropertyMapping,
- APM_Handler::get_apm > APM_Functor;
+ APM_Handler::handle_apm > APM_Functor;
}
@@ -204,11 +210,17 @@ namespace CIAO
/* @@ MAJO: Implement Locality */
toconfig.connection.length (desc.count_connection ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (ACD_Handler::handle_acd,
+ desc.begin_connection (),
+ toconfig.connection);
std::for_each (desc.begin_connection (),
desc.end_connection (),
ACD_Functor (toconfig.connection));
toconfig.externalProperty.length (desc.count_externalProperty ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (APM_Handler::handle_apm,
+ desc.begin_externalProperty (),
+ toconfig.externalProperty);
std::for_each (desc.begin_externalProperty (),
desc.end_externalProperty (),
APM_Functor (toconfig.externalProperty));
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
index 782027a38fb..d5e39d485da 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
@@ -27,218 +27,222 @@ namespace CIAO
IDREF_Base<CORBA::ULong> CID_Handler::IDREF;
- namespace
+ struct Capability_Handler
{
- struct Capability_Handler
- {
- static void get_capability (const Capability &desc,
- ::Deployment::Capability &toconfig)
- {
- CIAO_TRACE ("Capability_Handler::get_capability");
-
- toconfig.name = desc.name ().c_str ();
-
- toconfig.resourceType.length (desc.count_resourceType ());
- std::for_each (desc.begin_resourceType (),
- desc.end_resourceType (),
- String_Seq_Functor (toconfig.resourceType));
-
- toconfig.property.length (desc.count_property ());
- std::for_each (desc.begin_property (),
- desc.end_property (),
- SatisfierProperty_Functor (toconfig.property));
- }
-
- static Capability get_capability (const ::Deployment::Capability &src)
- {
- CIAO_TRACE ("Capability_Handler::get_capability - reverse");
-
- Capability retval (src.name.in ());
-
- for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
- retval.add_resourceType (src.resourceType[i]);
-
- for (CORBA::ULong i = 0; i < src.property.length (); ++i)
- retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i]));
-
- return retval;
- }
- };
-
- typedef Sequence_Handler < Capability,
- ::Deployment::Capabilities,
- ::Deployment::Capability,
- Capability_Handler::get_capability > Capability_Functor;
-
- struct IR_Handler
- {
- static void get_ir (const ImplementationRequirement &desc,
- ::Deployment::ImplementationRequirement &toconfig)
- {
- CIAO_TRACE ("IR_Handler::get_ir");
-
- if (desc.resourceUsage_p ())
- {
- switch (desc.resourceUsage ().integral ())
- {
- case ResourceUsageKind::None_l:
- toconfig.resourceUsage = Deployment::None;
- break;
-
- case ResourceUsageKind::InstanceUsesResource_l:
- toconfig.resourceUsage = Deployment::InstanceUsesResource;
- break;
-
- case ResourceUsageKind::ResourceUsesInstance_l:
- toconfig.resourceUsage = Deployment::ResourceUsesInstance;
- break;
-
- case ResourceUsageKind::PortUsesResource_l:
- toconfig.resourceUsage = Deployment::PortUsesResource;
- break;
-
- case ResourceUsageKind::ResourceUsesPort_l:
- toconfig.resourceUsage = Deployment::ResourceUsesPort;
- break;
-
- default:
- throw Config_Error (desc.name (),
- "Unknown ResourceUsageKind.");
- break;
- }
- }
-
- if (desc.resourcePort_p ())
- toconfig.resourcePort = desc.resourcePort ().c_str ();
-
- if (desc.componentPort_p ())
- toconfig.componentPort = desc.componentPort ().c_str ();
-
- toconfig.resourceType = desc.resourceType ().c_str ();
- toconfig.name = desc.name ().c_str ();
-
- std::for_each (desc.begin_property (),
- desc.end_property (),
- Property_Functor (toconfig.property ));
- }
-
- static ImplementationRequirement
- get_ir (const ::Deployment::ImplementationRequirement &src)
- {
- CIAO_TRACE ("IR_Handler::get_ir - reverse");
-
- ImplementationRequirement retval (src.resourceType.in (),
- src.name.in ());
-
- if (src.resourceUsage.length () == 1)
- switch (src.resourceUsage[0])
- {
- case Deployment::None:
- retval.resourceUsage (ResourceUsageKind::None);
- break;
+ static void handle_capability (const Capability &desc,
+ ::Deployment::Capability &toconfig)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability");
- case Deployment::InstanceUsesResource:
- retval.resourceUsage (ResourceUsageKind::InstanceUsesResource);
- break;
+ toconfig.name = desc.name ().c_str ();
- case Deployment::ResourceUsesInstance:
- retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
- break;
+ toconfig.resourceType.length (desc.count_resourceType ());
+ std::for_each (desc.begin_resourceType (),
+ desc.end_resourceType (),
+ String_Seq_Functor (toconfig.resourceType));
- case Deployment::PortUsesResource:
- retval.resourceUsage (ResourceUsageKind::PortUsesResource);
- break;
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ SatisfierProperty_Functor (toconfig.property));
+ }
- case Deployment::ResourceUsesPort:
- retval.resourceUsage (ResourceUsageKind::ResourceUsesPort);
- break;
+ static Capability get_capability (const ::Deployment::Capability &src)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability - reverse");
- default:
- throw Config_Error (src.name.in (),
- "Unknown ResourceUsageKind.");
- break;
- }
+ Capability retval (src.name.in ());
- retval.resourcePort (src.resourcePort.in ());
+ for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
+ retval.add_resourceType (src.resourceType[i]);
- retval.componentPort (src.componentPort.in ());
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i]));
- for (CORBA::ULong i = 0; i < src.property.length (); ++i)
- retval.add_property (Property_Handler::get_property (src.property[i]));
+ return retval;
+ }
+ };
- return retval;
- }
- };
-
- typedef Sequence_Handler < ImplementationRequirement,
- ::Deployment::ImplementationRequirements,
- ::Deployment::ImplementationRequirement,
- IR_Handler::get_ir > IR_Functor;
-
-
-
- struct MID_Handler
- {
- static void get_mid (const MonolithicImplementationDescription &desc,
- ::Deployment::MonolithicImplementationDescription &toconfig)
- {
- CIAO_TRACE ("MID_Handler::get_mid");
-
- toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ());
- std::for_each (desc.begin_nodeExecParameter (),
- desc.end_nodeExecParameter (),
- Property_Functor (toconfig.nodeExecParameter));
-
- toconfig.componentExecParameter.length (desc.count_componentExecParameter ());
- std::for_each (desc.begin_componentExecParameter (),
- desc.end_componentExecParameter (),
- Property_Functor (toconfig.componentExecParameter));
-
- toconfig.deployRequirement.length (desc.count_deployRequirement ());
- std::for_each (desc.begin_deployRequirement (),
- desc.end_deployRequirement (),
- IR_Functor (toconfig.deployRequirement));
-
- toconfig.primaryArtifact.length (desc.count_primaryArtifact ());
- std::for_each (desc.begin_primaryArtifact (),
- desc.end_primaryArtifact (),
- NIA_Functor (toconfig.primaryArtifact));
- }
-
- static MonolithicImplementationDescription
- get_mid (const ::Deployment::MonolithicImplementationDescription &src)
- {
- CIAO_TRACE ("MID_Handler::get_mid - reverse");
-
- MonolithicImplementationDescription retval;
+ typedef Sequence_Handler < Capability,
+ ::Deployment::Capabilities,
+ ::Deployment::Capability,
+ Capability_Handler::handle_capability > Capability_Functor;
- for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i)
- retval.add_nodeExecParameter
- (Property_Handler::get_property (src.nodeExecParameter[i]));
-
- for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i)
- retval.add_componentExecParameter
- (Property_Handler::get_property (src.componentExecParameter[i]));
-
- for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
- retval.add_deployRequirement
- (IR_Handler::get_ir (src.deployRequirement[i]));
-
- for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i)
- retval.add_primaryArtifact
- (NIA_Handler::get_nia (src.primaryArtifact[i]));
-
- return retval;
- }
-
- };
-
- typedef Sequence_Handler < MonolithicImplementationDescription,
- ::Deployment::MonolithicImplementationDescriptions,
- ::Deployment::MonolithicImplementationDescription,
- MID_Handler::get_mid > MID_Functor;
-
- }
+ struct IR_Handler
+ {
+ static void handle_ir (const ImplementationRequirement &desc,
+ ::Deployment::ImplementationRequirement &toconfig)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir");
+
+ if (desc.resourceUsage_p ())
+ {
+ switch (desc.resourceUsage ().integral ())
+ {
+ case ResourceUsageKind::None_l:
+ toconfig.resourceUsage = Deployment::None;
+ break;
+
+ case ResourceUsageKind::InstanceUsesResource_l:
+ toconfig.resourceUsage = Deployment::InstanceUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesInstance_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesInstance;
+ break;
+
+ case ResourceUsageKind::PortUsesResource_l:
+ toconfig.resourceUsage = Deployment::PortUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesPort_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesPort;
+ break;
+
+ default:
+ throw Config_Error (desc.name (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+ }
+
+ if (desc.resourcePort_p ())
+ toconfig.resourcePort = desc.resourcePort ().c_str ();
+
+ if (desc.componentPort_p ())
+ toconfig.componentPort = desc.componentPort ().c_str ();
+
+ toconfig.resourceType = desc.resourceType ().c_str ();
+ toconfig.name = desc.name ().c_str ();
+
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property ));
+ }
+
+ static ImplementationRequirement
+ get_ir (const ::Deployment::ImplementationRequirement &src)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir - reverse");
+
+ ImplementationRequirement retval (src.resourceType.in (),
+ src.name.in ());
+
+ if (src.resourceUsage.length () == 1)
+ switch (src.resourceUsage[0])
+ {
+ case Deployment::None:
+ retval.resourceUsage (ResourceUsageKind::None);
+ break;
+
+ case Deployment::InstanceUsesResource:
+ retval.resourceUsage (ResourceUsageKind::InstanceUsesResource);
+ break;
+
+ case Deployment::ResourceUsesInstance:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
+ break;
+
+ case Deployment::PortUsesResource:
+ retval.resourceUsage (ResourceUsageKind::PortUsesResource);
+ break;
+
+ case Deployment::ResourceUsesPort:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesPort);
+ break;
+
+ default:
+ throw Config_Error (src.name.in (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ retval.resourcePort (src.resourcePort.in ());
+
+ retval.componentPort (src.componentPort.in ());
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (Property_Handler::get_property (src.property[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < ImplementationRequirement,
+ ::Deployment::ImplementationRequirements,
+ ::Deployment::ImplementationRequirement,
+ IR_Handler::handle_ir > IR_Functor;
+
+ struct MID_Handler
+ {
+ static void handle_mid (const MonolithicImplementationDescription &desc,
+ ::Deployment::MonolithicImplementationDescription &toconfig)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid");
+
+ toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ());
+ std::for_each (desc.begin_nodeExecParameter (),
+ desc.end_nodeExecParameter (),
+ Property_Functor (toconfig.nodeExecParameter));
+
+ toconfig.componentExecParameter.length (desc.count_componentExecParameter ());
+ std::for_each (desc.begin_componentExecParameter (),
+ desc.end_componentExecParameter (),
+ Property_Functor (toconfig.componentExecParameter));
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ while (0)
+ {
+ IR_Handler::handle_ir (*desc.begin_deployRequirement (),
+ toconfig.deployRequirement[0]);
+ }
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ IR_Functor (toconfig.deployRequirement));
+
+ toconfig.primaryArtifact.length (desc.count_primaryArtifact ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia,
+ desc.begin_primaryArtifact (),
+ toconfig.primaryArtifact);
+ std::for_each (desc.begin_primaryArtifact (),
+ desc.end_primaryArtifact (),
+ NIA_Functor (toconfig.primaryArtifact));
+ }
+
+ static MonolithicImplementationDescription
+ get_mid (const ::Deployment::MonolithicImplementationDescription &src)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid - reverse");
+
+ MonolithicImplementationDescription retval;
+
+ for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i)
+ retval.add_nodeExecParameter
+ (Property_Handler::get_property (src.nodeExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i)
+ retval.add_componentExecParameter
+ (Property_Handler::get_property (src.componentExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
+ retval.add_deployRequirement
+ (IR_Handler::get_ir (src.deployRequirement[i]));
+
+ for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i)
+ retval.add_primaryArtifact
+ (NIA_Handler::get_nia (src.primaryArtifact[i]));
+
+ return retval;
+ }
+
+ };
+
+ typedef Sequence_Handler < MonolithicImplementationDescription,
+ ::Deployment::MonolithicImplementationDescriptions,
+ ::Deployment::MonolithicImplementationDescription,
+ MID_Handler::handle_mid > MID_Functor;
+
+
void
CID_Handler::component_impl_descr (
@@ -279,8 +283,8 @@ namespace CIAO
else if (cid->monolithicImpl_p ())
{
toconfig.monolithicImpl.length (1);
- MID_Handler::get_mid (cid->monolithicImpl (),
- toconfig.monolithicImpl[0]);
+ MID_Handler::handle_mid (cid->monolithicImpl (),
+ toconfig.monolithicImpl[0]);
}
else
throw Plan_Error ("ComponentImplementationDescription must have either assemblyImpl or monolithicImpl");
@@ -293,6 +297,9 @@ namespace CIAO
// capability
toconfig.capability.length (cid->count_capability ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (Capability_Handler::handle_capability,
+ cid->begin_capability (),
+ toconfig.capability);
std::for_each (cid->begin_capability (),
cid->end_capability (),
Capability_Functor (toconfig.capability));
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
index dc3976ce698..f7c37953b97 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
@@ -19,7 +19,7 @@ namespace CIAO
{
struct PCI_Handler
{
- static void get_pci (const PackagedComponentImplementation &desc,
+ static void handle_pci (const PackagedComponentImplementation &desc,
::Deployment::PackagedComponentImplementation &toconfig)
{
CIAO_TRACE ("PCI_Handler::get_pci");
@@ -41,11 +41,11 @@ namespace CIAO
typedef Sequence_Handler < PackagedComponentImplementation,
::Deployment::PackagedComponentImplementations,
::Deployment::PackagedComponentImplementation,
- PCI_Handler::get_pci > PCI_Functor;
+ PCI_Handler::handle_pci > PCI_Functor;
}
void
- CPD_Handler::component_package_descr (const ComponentPackageDescription &desc,
+ CPD_Handler::handle_component_package_descr (const ComponentPackageDescription &desc,
::Deployment::ComponentPackageDescription &toconfig)
{
CIAO_TRACE ("CPD_Handler::component_package_descr");
@@ -83,6 +83,9 @@ namespace CIAO
// Packaged Component Implementations
toconfig.implementation.length ( cpd->count_implementation ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (PCI_Handler::handle_pci,
+ cpd->begin_implementation (),
+ toconfig.implementation);
std::for_each (cpd->begin_implementation (),
cpd->end_implementation (),
PCI_Functor (toconfig.implementation));
@@ -136,7 +139,7 @@ namespace CIAO
{
CIAO_TRACE ("CPD_Handler::resolve_cpd");
if (!XML_HELPER->is_initialized ())
- return false;
+ return 0;
xercesc::DOMDocument* dom =
XML_HELPER->create_dom (uri);
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h
index 92b05187fa8..9535d24eef2 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h
@@ -1,6 +1,6 @@
//================================================
/**
- * @file STD_CPD_Handler.h
+ * @file CPD_Handler.h
*
* $Id$
*
@@ -50,11 +50,11 @@ namespace CIAO
/// Maps the values from the XSC object
/// <ComponentPackageDescription> to the CORBA IDL type
/// <Deployment::ComponentPackageDescription>.
- static void component_package_descr (const ComponentPackageDescription &desc,
+ static void handle_component_package_descr (const ComponentPackageDescription &desc,
::Deployment::ComponentPackageDescription &toconfig);
static ComponentPackageDescription
- component_package_descr (const Deployment::ComponentPackageDescription& src);
+ component_package_descr (const Deployment::ComponentPackageDescription& src);
private:
static ComponentPackageDescription * resolve_cpd (const char *uri);
@@ -63,7 +63,7 @@ namespace CIAO
typedef Sequence_Handler < ComponentPackageDescription,
::Deployment::ComponentPackageDescriptions,
::Deployment::ComponentPackageDescription,
- CPD_Handler::component_package_descr > CPD_Functor;
+ CPD_Handler::handle_component_package_descr > CPD_Functor;
}
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
index ea487980046..801519dc987 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
@@ -16,11 +16,9 @@ namespace CIAO
{
namespace Packaging
{
- namespace
- {
struct Comp_Prop_Handler
{
- static void get_cpd (const ComponentPropertyDescription &desc,
+ static void handle_cpd (const ComponentPropertyDescription &desc,
::Deployment::ComponentPropertyDescription &toconfig)
{
CIAO_TRACE ("Comp_Prop_Handler::get_cpd");
@@ -44,8 +42,8 @@ namespace CIAO
typedef Sequence_Handler < ComponentPropertyDescription,
::Deployment::ComponentPropertyDescriptions,
::Deployment::ComponentPropertyDescription,
- Comp_Prop_Handler::get_cpd > Comp_Prop_Functor;
- }
+ Comp_Prop_Handler::handle_cpd > Comp_Prop_Functor;
+
void
Comp_Intf_Descr_Handler::comp_intf_descr (
@@ -96,6 +94,9 @@ namespace CIAO
CIAO::Config_Handlers::CPD_Functor (toconfig.port));
toconfig.property.length (cid->count_property ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (Comp_Prop_Handler::handle_cpd,
+ cid->begin_property (),
+ toconfig.property);
std::for_each (cid->begin_property (),
cid->end_property (),
Comp_Prop_Functor (toconfig.property));
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
index f77a5f092f1..c0010429df6 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
@@ -49,6 +49,9 @@ namespace CIAO
String_Seq_Functor (toconfig.location));
toconfig.dependsOn.length (iad->count_dependsOn ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia,
+ desc.begin_dependsOn (),
+ toconfig.dependsOn);
std::for_each (iad->begin_dependsOn (),
iad->end_dependsOn (),
NIA_Functor (toconfig.dependsOn));
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h
index 6ad2767104b..edc5fe7fa6c 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h
@@ -34,7 +34,7 @@ namespace CIAO
class Packaging_Handlers_Export NIA_Handler
{
public:
- static void get_nia (const NamedImplementationArtifact &desc,
+ static void handle_nia (const NamedImplementationArtifact &desc,
::Deployment::NamedImplementationArtifact &toconfig)
{
toconfig.name = desc.name ().c_str ();
@@ -55,10 +55,11 @@ namespace CIAO
typedef Sequence_Handler < NamedImplementationArtifact,
::Deployment::NamedImplementationArtifacts,
::Deployment::NamedImplementationArtifact,
- NIA_Handler::get_nia > NIA_Functor;
+ NIA_Handler::handle_nia > NIA_Functor;
}
}
}
+#include /**/ "ace/post.h"
#endif /* CIAO_PACKAGING_NIA_HANDLER_H */
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
index 922c1fac252..675060fd082 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
@@ -1,19 +1,19 @@
// $Id$
#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "ciao/CIAO_common.h"
+#include "ciao/Packaging_DataC.h"
+#include "Utils/XML_Helper.h"
+#include "Utils/XercesString.h"
+#include "Utils/Exceptions.h"
#include "Package_Handlers/PCD_Handler.h"
#include "Package_Handlers/CPD_Handler.h"
-#include "Basic_Deployment_Data.hpp"
-#include "ciao/Packaging_DataC.h"
#include "Deployment.hpp"
#include "Property_Handler.h"
#include "Req_Handler.h"
-#include "Utils/XercesString.h"
-#include "Utils/Exceptions.h"
-#include <memory>
-#include "ciao/CIAO_common.h"
+#include "Basic_Deployment_Data.hpp"
-#include <xercesc/util/XMLString.hpp>
+#include <memory>
namespace CIAO
{
@@ -25,13 +25,20 @@ namespace CIAO
PCD_Handler::package_config (const ACE_TCHAR *uri,
::Deployment::PackageConfiguration &toconfig)
{
- xercesc::DOMDocument *dom = XML_HELPER->create_dom (uri);
+ const xercesc::DOMDocument *dom = XML_HELPER->create_dom (uri);
+
+ if (dom == 0)
+ {
+ std::string error ("Unable to open file: ");
+ error += uri;
+ throw Parse_Error (error);
+ }
- XStr root = dom->getDocumentElement ()->getTagName ();
+ XStr root = dom->getDocumentElement ()->getTagName ();
if (root == XStr ("Deployment:topLevelPackageDescription"))
{
- TopLevelPackageDescription tpd (topLevelPackageDescription (dom));
+ TopLevelPackageDescription tpd = topLevelPackageDescription (dom);
PCD_Handler::package_config (tpd.package (),
toconfig);
}
@@ -83,8 +90,8 @@ namespace CIAO
if (pcd->basePackage_p ())
{
toconfig.basePackage.length (1);
- CPD_Handler::component_package_descr (pcd->basePackage (),
- toconfig.basePackage [0]);
+ CPD_Handler::handle_component_package_descr (pcd->basePackage (),
+ toconfig.basePackage [0]);
}
// @@ MAJO: Support other elements present here.
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
index 334245559fa..e265295d040 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
@@ -1,11 +1,5 @@
// $Id$
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-#pragma warning (disable: 4018)
-#pragma warning (disable: 4284)
-#pragma warning (disable: 4146)
-#endif
-
#include "STD_PC_Intf.h"
#include "Utils/XML_Helper.h"
#include "Deployment.hpp"
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h
index d280fb5c655..c15ae0389b9 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h
@@ -1,6 +1,6 @@
//==============================================================
/**
- * @file STD_PC_Intf.h
+ * @file PC_Intf.h
*
* $Id$
*
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
index fce4f459738..e73d5790a70 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
@@ -29,6 +29,10 @@ project (Package_Config_Handlers) : acelib, ciao_deployment_stub, xerces {
PCD_Handler.h
SID_Handler.h
}
+
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
}
project (Package_Config_Handlers_Tests) : ciao_component_dnc, ciao_config_handlers, ifr_client {
@@ -40,6 +44,9 @@ project (Package_Config_Handlers_Tests) : ciao_component_dnc, ciao_config_handle
Source_Files {
test.cpp
}
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
}
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
index 4cca9747789..34eadf9ea32 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
@@ -19,7 +19,7 @@ namespace CIAO
IDREF_Base<CORBA::ULong> SID_Handler::IDREF;
void
- SID_Handler::sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
+ SID_Handler::handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
::Deployment::SubcomponentInstantiationDescription &toconfig)
{
CIAO_TRACE ("SID_Handler::sub_comp_inst_descr");
@@ -28,7 +28,7 @@ namespace CIAO
if (desc.basePackage_p ())
{
toconfig.basePackage.length (1);
- CPD_Handler::component_package_descr (desc.basePackage (),
+ CPD_Handler::handle_component_package_descr (desc.basePackage (),
toconfig.basePackage[0]);
}
else if (desc.specializedConfig_p ())
diff --git a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h
index c166fcd6294..1bcb73e751e 100644
--- a/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h
@@ -43,7 +43,7 @@ namespace CIAO
}
public:
- static void sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
+ static void handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
::Deployment::SubcomponentInstantiationDescription &toconfig);
static SubcomponentInstantiationDescription
@@ -61,7 +61,7 @@ namespace CIAO
typedef Sequence_Handler < SubcomponentInstantiationDescription,
::Deployment::SubcomponentInstantiationDescriptions,
::Deployment::SubcomponentInstantiationDescription,
- SID_Handler::sub_comp_inst_descr > SID_Functor;
+ SID_Handler::handle_sub_comp_inst_descr > SID_Functor;
}
}
diff --git a/TAO/CIAO/tools/Config_Handlers/Property_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Property_Handler.cpp
index 273fe8c8e69..41129007618 100644
--- a/TAO/CIAO/tools/Config_Handlers/Property_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Property_Handler.cpp
@@ -19,7 +19,7 @@ namespace CIAO
}
void
- Property_Handler::get_property (
+ Property_Handler::handle_property (
const Property& desc,
Deployment::Property& toconfig)
{
diff --git a/TAO/CIAO/tools/Config_Handlers/Property_Handler.h b/TAO/CIAO/tools/Config_Handlers/Property_Handler.h
index 07044faed8e..5180244465e 100644
--- a/TAO/CIAO/tools/Config_Handlers/Property_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/Property_Handler.h
@@ -1,11 +1,11 @@
//================================================
/**
-* @file Property_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file Property_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================
#ifndef CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H
@@ -22,50 +22,49 @@
namespace Deployment
{
-struct Property;
-class Properties;
+ struct Property;
+ class Properties;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-class Property;
+ namespace Config_Handlers
+ {
+ class Property;
-/*
-* @class Property_Handler
-*
-* @brief Handler class for <CCMComponentPortDescription> types.
-*
-* This class defines handler methods to map values from
-* XSC objects, parsed from the descriptor files, to the
-* corresponding CORBA IDL type for the schema element.
-*
-*/
+ /*
+ * @class Property_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
-class Config_Handlers_Export Property_Handler
-{
-public:
-Property_Handler (void);
-virtual ~Property_Handler (void);
+ class Config_Handlers_Export Property_Handler
+ {
+ public:
+ Property_Handler (void);
+ virtual ~Property_Handler (void);
-typedef Sequence_Iterator< const ::Deployment::Properties, const ::Deployment::Property > prop_iter;
+ /// This method maps the values from the XSC object
+ /// <CIAO::Config_Handlers::Property> to the CORBA IDL type
+ /// <Deployment::Property>.
+ static void handle_property (const Property& desc,
+ ::Deployment::Property& toconfig);
+ static Property get_property (
+ const ::Deployment::Property& src);
+ };
-/// This method maps the values from the XSC object
-/// <CIAO::Config_Handlers::Property> to the CORBA IDL type
-/// <Deployment::Property>.
-static void get_property (const Property& desc,
-::Deployment::Property& toconfig);
-static Property get_property (
-const ::Deployment::Property& src);
-};
-typedef Sequence_Handler < Property,
-::Deployment::Properties,
-::Deployment::Property,
-Property_Handler::get_property> Property_Functor;
+ typedef Sequence_Handler < Property,
+ ::Deployment::Properties,
+ ::Deployment::Property,
+ Property_Handler::handle_property > Property_Functor;
-}
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/Req_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/Req_Handler.cpp
index 37fd441ac92..c20d5e428f2 100644
--- a/TAO/CIAO/tools/Config_Handlers/Req_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/Req_Handler.cpp
@@ -18,8 +18,8 @@ namespace CIAO
}
void
- Req_Handler::get_requirement (const Requirement& desc,
- Deployment::Requirement& toconfig)
+ Req_Handler::handle_requirement (const Requirement& desc,
+ Deployment::Requirement& toconfig)
{
CIAO_TRACE("Req_Handler::get_Requirement");
diff --git a/TAO/CIAO/tools/Config_Handlers/Req_Handler.h b/TAO/CIAO/tools/Config_Handlers/Req_Handler.h
index 315eee76579..be35f55e0a8 100644
--- a/TAO/CIAO/tools/Config_Handlers/Req_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/Req_Handler.h
@@ -1,11 +1,11 @@
//==============================================================
/**
-* @file Req_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file Req_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================================
#ifndef CIAO_CONFIG_HANDLERS_REQ_HANDLER_H
@@ -22,49 +22,49 @@
namespace Deployment
{
-struct Requirement;
-class Requirements;
+ struct Requirement;
+ class Requirements;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-/*
-* @class REQ_Handler
-*
-* @brief Handler class for <Requirement> types.
-*
-* This class defines handler methods to map values from
-* XSC Requirement objects, parsed from
-* the descriptor files, to the corresponding CORBA IDL type.
-*
-*/
+ namespace Config_Handlers
+ {
+ /*
+ * @class REQ_Handler
+ *
+ * @brief Handler class for <Requirement> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC Requirement objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
-class Config_Handlers_Export Req_Handler
-{
-public:
+ class Config_Handlers_Export Req_Handler
+ {
+ public:
-Req_Handler (void);
-virtual ~Req_Handler (void);
+ Req_Handler (void);
+ virtual ~Req_Handler (void);
-///This method takes a <Deployment::Requirement>
-///and maps the values from the passed in XSC
-///Requirement to its members.
-static void get_requirement (const Requirement& desc,
-Deployment::Requirement& toconfig);
-static Requirement
-get_requirement (const Deployment::Requirement& src);
-};
+ ///This method takes a <Deployment::Requirement>
+ ///and maps the values from the passed in XSC
+ ///Requirement to its members.
+ static void handle_requirement (const Requirement& desc,
+ Deployment::Requirement& toconfig);
+ static Requirement
+ get_requirement (const Deployment::Requirement& src);
+ };
-typedef Sequence_Handler < Requirement,
-::Deployment::Requirements,
-::Deployment::Requirement,
-Req_Handler::get_requirement > Requirement_Functor;
+ typedef Sequence_Handler < Requirement,
+ ::Deployment::Requirements,
+ ::Deployment::Requirement,
+ Req_Handler::handle_requirement > Requirement_Functor;
-}
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp b/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
index 0a50d889b0b..31f4d937a49 100644
--- a/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
@@ -20,7 +20,7 @@ namespace CIAO
}
void
- SatisfierProperty_Handler::get_sat_property (
+ SatisfierProperty_Handler::handle_sat_property (
const SatisfierProperty& desc,
Deployment::SatisfierProperty& toconfig)
{
diff --git a/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h b/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h
index 2c2f671cb02..55bf12af241 100644
--- a/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h
+++ b/TAO/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h
@@ -1,11 +1,11 @@
//================================================
/**
-* @file SatisfierProperty_Handler.h
-*
-* $Id$
-*
-* @author Jules White <jules@dre.vanderbilt.edu>
-*/
+ * @file SatisfierProperty_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
//================================================
#ifndef CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H
@@ -22,49 +22,47 @@
namespace Deployment
{
-struct SatisfierProperty;
-class SatisfierProperties;
+ struct SatisfierProperty;
+ class SatisfierProperties;
}
namespace CIAO
{
-namespace Config_Handlers
-{
-class SatisfierProperty;
-
-/*
-* @class SatisfierProperty_Handler
-*
-* @brief Handler class for <CCMComponentPortDescription> types.
-*
-* This class defines handler methods to map values from
-* XSC objects, parsed from the descriptor files, to the
-* corresponding CORBA IDL type for the schema element.
-*
-*/
+ namespace Config_Handlers
+ {
+ class SatisfierProperty;
-class Config_Handlers_Export SatisfierProperty_Handler
-{
-public:
-SatisfierProperty_Handler (void);
-virtual ~SatisfierProperty_Handler (void);
+ /*
+ * @class SatisfierProperty_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
-typedef Sequence_Iterator< const ::Deployment::SatisfierProperties, const ::Deployment::SatisfierProperty > sat_prop_iter;
+ class Config_Handlers_Export SatisfierProperty_Handler
+ {
+ public:
+ SatisfierProperty_Handler (void);
+ virtual ~SatisfierProperty_Handler (void);
-/// This method maps the values from the XSC object
-/// <CIAO::Config_Handlers::SatisfierProperty> to the CORBA IDL type
-/// <Deployment::SatisfierProperty>.
-static void get_sat_property (const SatisfierProperty& desc,
-::Deployment::SatisfierProperty& toconfig);
-static SatisfierProperty get_sat_property (const ::Deployment::SatisfierProperty& src);
-};
+ /// This method maps the values from the XSC object
+ /// <CIAO::Config_Handlers::SatisfierProperty> to the CORBA IDL type
+ /// <Deployment::SatisfierProperty>.
+ static void handle_sat_property (const SatisfierProperty& desc,
+ ::Deployment::SatisfierProperty& toconfig);
+ static SatisfierProperty get_sat_property (const ::Deployment::SatisfierProperty& src);
+ };
-typedef Sequence_Handler < SatisfierProperty,
-::Deployment::SatisfierProperties,
-::Deployment::SatisfierProperty,
-SatisfierProperty_Handler::get_sat_property> SatisfierProperty_Functor;
+ typedef Sequence_Handler < SatisfierProperty,
+ ::Deployment::SatisfierProperties,
+ ::Deployment::SatisfierProperty,
+ SatisfierProperty_Handler::handle_sat_property> SatisfierProperty_Functor;
-}
+ }
}
#include /**/ "ace/post.h"
diff --git a/TAO/CIAO/tools/Config_Handlers/Utils/Functors.h b/TAO/CIAO/tools/Config_Handlers/Utils/Functors.h
index 34702cd60d0..19f6a5c9ea4 100644
--- a/TAO/CIAO/tools/Config_Handlers/Utils/Functors.h
+++ b/TAO/CIAO/tools/Config_Handlers/Utils/Functors.h
@@ -17,80 +17,10 @@ namespace CIAO
{
namespace Config_Handlers
{
- template <typename Seq_Type, typename T>
- class Sequence_Iterator :
- public std::iterator <std::forward_iterator_tag, //iterator type
- T, // Type pointed to by the iterator
- CORBA::ULong> // Distance type
- {
- public:
- Sequence_Iterator (void)
- : pos_ (0),
- seq_ (0)
- {
- }
-
- Sequence_Iterator (const Seq_Type &seq, CORBA::ULong pos = 0)
- : pos_ (pos),
- seq_ (&seq)
- {
- }
-
- Sequence_Iterator (const Sequence_Iterator &s)
- {
- *this = s;
- }
-
- Sequence_Iterator& operator= (const Sequence_Iterator &s)
- {
- this->seq_ = s.seq_;
- this->pos_ = s.pos_;
- return *this;
- }
-
- bool operator== (Sequence_Iterator &s)
- {
- return (this->seq_ == s.seq_) && (this->pos_ == s.pos_);
- }
-
- bool operator!= (Sequence_Iterator &s)
- {
- return !(*this == s);
- }
-
- T& operator* (void)
- {
- return (*seq_)[pos_];
- }
-
- T& operator-> (void)
- {
- return *(*this);
- }
-
- // Prefix operator
- Sequence_Iterator& operator++ ()
- {
- ++pos_;
- return *this;
- }
-
- Sequence_Iterator& operator++ (int)
- {
- Sequence_Iterator ans (*this);
- ++(*this);
- return ans;
- }
-
- private:
- CORBA::ULong pos_;
- Seq_Type *seq_;
- };
-
template <typename Source,
typename Dest,
typename Dest_Type,
- void (*Func)(const Source &, Dest_Type &)>
+ void (&Func)(const Source &, Dest_Type &)>
struct Sequence_Handler
{
Sequence_Handler (Dest &dest, CORBA::ULong pos = 0)
@@ -109,6 +39,22 @@ namespace CIAO
CORBA::ULong pos_;
};
+ /*
+ * This is a workaround for a GCC bug that for some reason causes
+ * functions that appear ONLY in a Sequence_Handler typedef to not
+ * be present in the compiled object file.
+ * This bug was first observed in GCC 4.02.
+ *
+ * W: The function we want to be defined
+ * X: First argument to the function
+ * Y: Second argument to the function
+ */
+#define SEQ_HAND_GCC_BUG_WORKAROUND(W, X, Y) \
+ while(0) { \
+ W (*X, Y[0]); \
+ }
+
+
template <typename Dest, typename Dest_Type>
struct String_Seq_Handler
{
diff --git a/TAO/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp b/TAO/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp
index 93c2a003606..a23d7f2cdd9 100644
--- a/TAO/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp
@@ -29,19 +29,9 @@ namespace XMLSchema
typedef XSCRT::FundamentalType<ACE_INT32> int_;
typedef XSCRT::FundamentalType<ACE_UINT32> unsignedInt;
- //@@ VC6
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-
- typedef XSCRT::FundamentalType<__int64> long_;
- typedef XSCRT::FundamentalType<unsigned __int64> unsignedLong;
-
-#else
-
typedef XSCRT::FundamentalType<ACE_INT64> long_;
typedef XSCRT::FundamentalType<ACE_UINT64> unsignedLong;
-#endif
-
//@@ It would be nice to use some arbitrary-length integer class.
//
typedef long_ decimal;
diff --git a/TAO/CIAO/tools/Config_Handlers/XML_File_Intf.cpp b/TAO/CIAO/tools/Config_Handlers/XML_File_Intf.cpp
index 041b369884a..d7d55058b25 100644
--- a/TAO/CIAO/tools/Config_Handlers/XML_File_Intf.cpp
+++ b/TAO/CIAO/tools/Config_Handlers/XML_File_Intf.cpp
@@ -1,11 +1,5 @@
// $Id$
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-#pragma warning (disable: 4018)
-#pragma warning (disable: 4284)
-#pragma warning (disable: 4146)
-#endif
-
#include "XML_File_Intf.h"
#include "Utils/XML_Helper.h"
#include "Deployment.hpp"
diff --git a/TAO/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp b/TAO/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp
index 0d84a6bc28a..26dfbc8e695 100644
--- a/TAO/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp
@@ -12,87 +12,6 @@
#include "XSCRT/Parser.hpp"
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-
-
-// Stuff for broken VC6. Don't like what you see - use better compiler!
-//
-
-
-inline
-std::wistream&
-operator>> (std::wistream& is, __int64& v)
-{
- long t;
- is >> t;
- v = t;
- return is;
-}
-
-inline
-std::wistream&
-operator>> (std::wistream& is, unsigned __int64& v)
-{
- unsigned long t;
- is >> t;
- v = t;
- return is;
-}
-
-inline
-std::wostream&
-operator<< (std::wostream& os, __int64 const& v)
-{
- os << long (v);
- return os;
-}
-
-inline
-std::wostream&
-operator<< (std::wostream& os, unsigned __int64 const& v)
-{
- os << unsigned long (v);
- return os;
-}
-
-inline
-std::istream&
-operator>> (std::istream& is, __int64& v)
-{
- long t;
- is >> t;
- v = t;
- return is;
-}
-
-inline
-std::istream&
-operator>> (std::istream& is, unsigned __int64& v)
-{
- unsigned long t;
- is >> t;
- v = t;
- return is;
-}
-
-inline
-std::ostream&
-operator<< (std::ostream& os, __int64 const& v)
-{
- os << long (v);
- return os;
-}
-
-inline
-std::ostream&
-operator<< (std::ostream& os, unsigned __int64 const& v)
-{
- os << unsigned long (v);
- return os;
-}
-
-#endif
-
namespace XSCRT
{
struct IdentityProvider
diff --git a/TAO/CIAO/tools/Config_Handlers/XSCRT/XML.hpp b/TAO/CIAO/tools/Config_Handlers/XSCRT/XML.hpp
index b12fda738d2..1f11533e2bb 100644
--- a/TAO/CIAO/tools/Config_Handlers/XSCRT/XML.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/XSCRT/XML.hpp
@@ -11,16 +11,6 @@
#include <xercesc/dom/DOM.hpp>
#include <xercesc/util/XMLString.hpp>
-
-//@@ VC6
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-
-namespace std
-{
- typedef ::size_t size_t;
-}
-#endif
-
namespace XSCRT
{
namespace XML
diff --git a/TAO/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp b/TAO/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp
index 31bad0bc207..6f810782953 100644
--- a/TAO/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp
@@ -21,19 +21,9 @@ namespace XMLSchema
typedef XSCRT::FundamentalType<int> int_;
typedef XSCRT::FundamentalType<unsigned int> unsignedInt;
- //@@ VC6
-#if defined (_MSC_VER) && (_MSC_VER < 1300)
-
- typedef XSCRT::FundamentalType<__int64> long_;
- typedef XSCRT::FundamentalType<unsigned __int64> unsignedLong;
-
-#else
-
typedef XSCRT::FundamentalType<long long> long_;
typedef XSCRT::FundamentalType<unsigned long long> unsignedLong;
-#endif
-
//@@ It would be nice to use some arbitrary-length integer class.
//
typedef long_ decimal;
diff --git a/TAO/CIAO/tools/Config_Handlers/cdp.hpp b/TAO/CIAO/tools/Config_Handlers/cdp.hpp
index 8c8cb56e04f..f6033db9fca 100644
--- a/TAO/CIAO/tools/Config_Handlers/cdp.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/cdp.hpp
@@ -1,13 +1,13 @@
/* $Id$
-* This code was generated by the XML Schema Compiler.
-*
-* Changes made to this code will most likely be overwritten
-* when the handlers are recompiled.
-*
-* If you find errors or feel that there are bugfixes to be made,
-* please contact the current XSC maintainer:
-* Will Otte <wotte@dre.vanderbilt.edu>
-*/
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
// Fix for Borland compilers, which seem to have a broken
@@ -25,10 +25,10 @@
//
namespace CIAO
{
-namespace Config_Handlers
-{
-class DeploymentPlan;
-}
+ namespace Config_Handlers
+ {
+ class DeploymentPlan;
+ }
}
#include <memory>
@@ -39,665 +39,665 @@ class DeploymentPlan;
namespace CIAO
{
-namespace Config_Handlers
-{
-class XSC_XML_Handlers_Export DeploymentPlan : public ::XSCRT::Type
-{
-//@@ VC6 anathema
-typedef ::XSCRT::Type Base__;
-
-// label
-//
-public:
-bool label_p () const;
-::XMLSchema::string< ACE_TCHAR > const& label () const;
-void label (::XMLSchema::string< ACE_TCHAR > const& );
-
-protected:
-::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
-
-// UUID
-//
-public:
-bool UUID_p () const;
-::XMLSchema::string< ACE_TCHAR > const& UUID () const;
-void UUID (::XMLSchema::string< ACE_TCHAR > const& );
-
-protected:
-::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
-
-// realizes
-//
-public:
-bool realizes_p () const;
-::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const;
-void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& );
-
-protected:
-::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_;
-
-// implementation
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::iterator implementation_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::const_iterator implementation_const_iterator;
-implementation_iterator begin_implementation ();
-implementation_iterator end_implementation ();
-implementation_const_iterator begin_implementation () const;
-implementation_const_iterator end_implementation () const;
-void add_implementation (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& );
-size_t count_implementation (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription > implementation_;
-
-// instance
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::iterator instance_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::const_iterator instance_const_iterator;
-instance_iterator begin_instance ();
-instance_iterator end_instance ();
-instance_const_iterator begin_instance () const;
-instance_const_iterator end_instance () const;
-void add_instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& );
-size_t count_instance (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription > instance_;
-
-// connection
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::iterator connection_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::const_iterator connection_const_iterator;
-connection_iterator begin_connection ();
-connection_iterator end_connection ();
-connection_const_iterator begin_connection () const;
-connection_const_iterator end_connection () const;
-void add_connection (::CIAO::Config_Handlers::PlanConnectionDescription const& );
-size_t count_connection (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription > connection_;
-
-// dependsOn
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::iterator dependsOn_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::const_iterator dependsOn_const_iterator;
-dependsOn_iterator begin_dependsOn ();
-dependsOn_iterator end_dependsOn ();
-dependsOn_const_iterator begin_dependsOn () const;
-dependsOn_const_iterator end_dependsOn () const;
-void add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& );
-size_t count_dependsOn (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::ImplementationDependency > dependsOn_;
-
-// artifact
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::iterator artifact_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::const_iterator artifact_const_iterator;
-artifact_iterator begin_artifact ();
-artifact_iterator end_artifact ();
-artifact_const_iterator begin_artifact () const;
-artifact_const_iterator end_artifact () const;
-void add_artifact (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& );
-size_t count_artifact (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription > artifact_;
-
-// infoProperty
-//
-public:
-typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
-typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
-infoProperty_iterator begin_infoProperty ();
-infoProperty_iterator end_infoProperty ();
-infoProperty_const_iterator begin_infoProperty () const;
-infoProperty_const_iterator end_infoProperty () const;
-void add_infoProperty (::CIAO::Config_Handlers::Property const& );
-size_t count_infoProperty (void) const;
-
-protected:
-::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
-
-public:
-DeploymentPlan ();
-
-DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const&);
-DeploymentPlan (DeploymentPlan const& s);
-
-DeploymentPlan&
-operator= (DeploymentPlan const& s);
-
-private:
-char regulator__;
-};
-}
+ namespace Config_Handlers
+ {
+ class XSC_XML_Handlers_Export DeploymentPlan : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // label
+ //
+ public:
+ bool label_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& label () const;
+ void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+ // UUID
+ //
+ public:
+ bool UUID_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+ void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+ // realizes
+ //
+ public:
+ bool realizes_p () const;
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const;
+ void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_;
+
+ // implementation
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::iterator implementation_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::const_iterator implementation_const_iterator;
+ implementation_iterator begin_implementation ();
+ implementation_iterator end_implementation ();
+ implementation_const_iterator begin_implementation () const;
+ implementation_const_iterator end_implementation () const;
+ void add_implementation (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& );
+ size_t count_implementation (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription > implementation_;
+
+ // instance
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::iterator instance_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::const_iterator instance_const_iterator;
+ instance_iterator begin_instance ();
+ instance_iterator end_instance ();
+ instance_const_iterator begin_instance () const;
+ instance_const_iterator end_instance () const;
+ void add_instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& );
+ size_t count_instance (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription > instance_;
+
+ // connection
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::iterator connection_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::const_iterator connection_const_iterator;
+ connection_iterator begin_connection ();
+ connection_iterator end_connection ();
+ connection_const_iterator begin_connection () const;
+ connection_const_iterator end_connection () const;
+ void add_connection (::CIAO::Config_Handlers::PlanConnectionDescription const& );
+ size_t count_connection (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription > connection_;
+
+ // dependsOn
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::iterator dependsOn_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::const_iterator dependsOn_const_iterator;
+ dependsOn_iterator begin_dependsOn ();
+ dependsOn_iterator end_dependsOn ();
+ dependsOn_const_iterator begin_dependsOn () const;
+ dependsOn_const_iterator end_dependsOn () const;
+ void add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& );
+ size_t count_dependsOn (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ImplementationDependency > dependsOn_;
+
+ // artifact
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::iterator artifact_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::const_iterator artifact_const_iterator;
+ artifact_iterator begin_artifact ();
+ artifact_iterator end_artifact ();
+ artifact_const_iterator begin_artifact () const;
+ artifact_const_iterator end_artifact () const;
+ void add_artifact (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& );
+ size_t count_artifact (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription > artifact_;
+
+ // infoProperty
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+ infoProperty_iterator begin_infoProperty ();
+ infoProperty_iterator end_infoProperty ();
+ infoProperty_const_iterator begin_infoProperty () const;
+ infoProperty_const_iterator end_infoProperty () const;
+ void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+ size_t count_infoProperty (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+ public:
+ DeploymentPlan ();
+
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ DeploymentPlan (DeploymentPlan const& s);
+
+ DeploymentPlan&
+ operator= (DeploymentPlan const& s);
+
+ private:
+ char regulator__;
+ };
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
#include "XMLSchema/Traversal.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Traversal
-{
-struct XSC_XML_Handlers_Export DeploymentPlan : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DeploymentPlan >
-{
-virtual void
-traverse (Type&);
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ struct XSC_XML_Handlers_Export DeploymentPlan : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DeploymentPlan >
+ {
+ virtual void
+ traverse (Type&);
-virtual void
-traverse (Type const&);
+ virtual void
+ traverse (Type const&);
-virtual void
-pre (Type&);
+ virtual void
+ pre (Type&);
-virtual void
-pre (Type const&);
+ virtual void
+ pre (Type const&);
-virtual void
-label (Type&);
+ virtual void
+ label (Type&);
-virtual void
-label (Type const&);
+ virtual void
+ label (Type const&);
-virtual void
-label_none (Type&);
+ virtual void
+ label_none (Type&);
-virtual void
-label_none (Type const&);
+ virtual void
+ label_none (Type const&);
-virtual void
-UUID (Type&);
+ virtual void
+ UUID (Type&);
-virtual void
-UUID (Type const&);
+ virtual void
+ UUID (Type const&);
-virtual void
-UUID_none (Type&);
+ virtual void
+ UUID_none (Type&);
-virtual void
-UUID_none (Type const&);
+ virtual void
+ UUID_none (Type const&);
-virtual void
-realizes (Type&);
+ virtual void
+ realizes (Type&);
-virtual void
-realizes (Type const&);
+ virtual void
+ realizes (Type const&);
-virtual void
-realizes_none (Type&);
+ virtual void
+ realizes_none (Type&);
-virtual void
-realizes_none (Type const&);
+ virtual void
+ realizes_none (Type const&);
-virtual void
-implementation (Type&);
+ virtual void
+ implementation (Type&);
-virtual void
-implementation (Type const&);
+ virtual void
+ implementation (Type const&);
-virtual void
-implementation_pre (Type&);
+ virtual void
+ implementation_pre (Type&);
-virtual void
-implementation_pre (Type const&);
+ virtual void
+ implementation_pre (Type const&);
-virtual void
-implementation_next (Type&);
+ virtual void
+ implementation_next (Type&);
-virtual void
-implementation_next (Type const&);
+ virtual void
+ implementation_next (Type const&);
-virtual void
-implementation_post (Type&);
+ virtual void
+ implementation_post (Type&);
-virtual void
-implementation_post (Type const&);
+ virtual void
+ implementation_post (Type const&);
-virtual void
-instance (Type&);
+ virtual void
+ instance (Type&);
-virtual void
-instance (Type const&);
+ virtual void
+ instance (Type const&);
-virtual void
-instance_pre (Type&);
+ virtual void
+ instance_pre (Type&);
-virtual void
-instance_pre (Type const&);
+ virtual void
+ instance_pre (Type const&);
-virtual void
-instance_next (Type&);
+ virtual void
+ instance_next (Type&);
-virtual void
-instance_next (Type const&);
+ virtual void
+ instance_next (Type const&);
-virtual void
-instance_post (Type&);
+ virtual void
+ instance_post (Type&);
-virtual void
-instance_post (Type const&);
+ virtual void
+ instance_post (Type const&);
-virtual void
-instance_none (Type&);
+ virtual void
+ instance_none (Type&);
-virtual void
-instance_none (Type const&);
+ virtual void
+ instance_none (Type const&);
-virtual void
-connection (Type&);
+ virtual void
+ connection (Type&);
-virtual void
-connection (Type const&);
+ virtual void
+ connection (Type const&);
-virtual void
-connection_pre (Type&);
+ virtual void
+ connection_pre (Type&);
-virtual void
-connection_pre (Type const&);
+ virtual void
+ connection_pre (Type const&);
-virtual void
-connection_next (Type&);
+ virtual void
+ connection_next (Type&);
-virtual void
-connection_next (Type const&);
+ virtual void
+ connection_next (Type const&);
-virtual void
-connection_post (Type&);
+ virtual void
+ connection_post (Type&);
-virtual void
-connection_post (Type const&);
+ virtual void
+ connection_post (Type const&);
-virtual void
-connection_none (Type&);
+ virtual void
+ connection_none (Type&);
-virtual void
-connection_none (Type const&);
+ virtual void
+ connection_none (Type const&);
-virtual void
-dependsOn (Type&);
+ virtual void
+ dependsOn (Type&);
-virtual void
-dependsOn (Type const&);
+ virtual void
+ dependsOn (Type const&);
-virtual void
-dependsOn_pre (Type&);
+ virtual void
+ dependsOn_pre (Type&);
-virtual void
-dependsOn_pre (Type const&);
+ virtual void
+ dependsOn_pre (Type const&);
-virtual void
-dependsOn_next (Type&);
+ virtual void
+ dependsOn_next (Type&);
-virtual void
-dependsOn_next (Type const&);
+ virtual void
+ dependsOn_next (Type const&);
-virtual void
-dependsOn_post (Type&);
+ virtual void
+ dependsOn_post (Type&);
-virtual void
-dependsOn_post (Type const&);
+ virtual void
+ dependsOn_post (Type const&);
-virtual void
-dependsOn_none (Type&);
+ virtual void
+ dependsOn_none (Type&);
-virtual void
-dependsOn_none (Type const&);
+ virtual void
+ dependsOn_none (Type const&);
-virtual void
-artifact (Type&);
+ virtual void
+ artifact (Type&);
-virtual void
-artifact (Type const&);
+ virtual void
+ artifact (Type const&);
-virtual void
-artifact_pre (Type&);
+ virtual void
+ artifact_pre (Type&);
-virtual void
-artifact_pre (Type const&);
+ virtual void
+ artifact_pre (Type const&);
-virtual void
-artifact_next (Type&);
+ virtual void
+ artifact_next (Type&);
-virtual void
-artifact_next (Type const&);
+ virtual void
+ artifact_next (Type const&);
-virtual void
-artifact_post (Type&);
+ virtual void
+ artifact_post (Type&);
-virtual void
-artifact_post (Type const&);
+ virtual void
+ artifact_post (Type const&);
-virtual void
-artifact_none (Type&);
+ virtual void
+ artifact_none (Type&);
-virtual void
-artifact_none (Type const&);
+ virtual void
+ artifact_none (Type const&);
-virtual void
-infoProperty (Type&);
+ virtual void
+ infoProperty (Type&);
-virtual void
-infoProperty (Type const&);
+ virtual void
+ infoProperty (Type const&);
-virtual void
-infoProperty_pre (Type&);
+ virtual void
+ infoProperty_pre (Type&);
-virtual void
-infoProperty_pre (Type const&);
+ virtual void
+ infoProperty_pre (Type const&);
-virtual void
-infoProperty_next (Type&);
+ virtual void
+ infoProperty_next (Type&);
-virtual void
-infoProperty_next (Type const&);
+ virtual void
+ infoProperty_next (Type const&);
-virtual void
-infoProperty_post (Type&);
+ virtual void
+ infoProperty_post (Type&);
-virtual void
-infoProperty_post (Type const&);
+ virtual void
+ infoProperty_post (Type const&);
-virtual void
-infoProperty_none (Type&);
+ virtual void
+ infoProperty_none (Type&);
-virtual void
-infoProperty_none (Type const&);
+ virtual void
+ infoProperty_none (Type const&);
-virtual void
-post (Type&);
+ virtual void
+ post (Type&);
-virtual void
-post (Type const&);
-};
-}
-}
+ virtual void
+ post (Type const&);
+ };
+ }
+ }
}
#include "XMLSchema/Writer.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Writer
-{
-struct DeploymentPlan : Traversal::DeploymentPlan,
-virtual ::XSCRT::Writer< ACE_TCHAR >
-{
-typedef ::CIAO::Config_Handlers::DeploymentPlan Type;
-DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >&);
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ struct DeploymentPlan : Traversal::DeploymentPlan,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::DeploymentPlan Type;
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >&);
-virtual void
-traverse (Type &o)
-{
+ virtual void
+ traverse (Type &o)
+ {
-this->traverse (const_cast <Type const &> (o));
-}
+ this->traverse (const_cast <Type const &> (o));
+ }
-virtual void
-traverse (Type const&);
+ virtual void
+ traverse (Type const&);
-virtual void
-label (Type &o)
-{
+ virtual void
+ label (Type &o)
+ {
-this->label (const_cast <Type const &> (o));
-}
+ this->label (const_cast <Type const &> (o));
+ }
-virtual void
-label (Type const&);
+ virtual void
+ label (Type const&);
-virtual void
-UUID (Type &o)
-{
+ virtual void
+ UUID (Type &o)
+ {
-this->UUID (const_cast <Type const &> (o));
-}
+ this->UUID (const_cast <Type const &> (o));
+ }
-virtual void
-UUID (Type const&);
+ virtual void
+ UUID (Type const&);
-virtual void
-realizes (Type &o)
-{
+ virtual void
+ realizes (Type &o)
+ {
-this->realizes (const_cast <Type const &> (o));
-}
+ this->realizes (const_cast <Type const &> (o));
+ }
-virtual void
-realizes (Type const&);
+ virtual void
+ realizes (Type const&);
-virtual void
-implementation_pre (Type &o)
-{
+ virtual void
+ implementation_pre (Type &o)
+ {
-this->implementation_pre (const_cast <Type const &> (o));
-}
+ this->implementation_pre (const_cast <Type const &> (o));
+ }
-virtual void
-implementation_pre (Type const&);
+ virtual void
+ implementation_pre (Type const&);
-virtual void
-implementation_next (Type &o)
-{
+ virtual void
+ implementation_next (Type &o)
+ {
-this->implementation_next (const_cast <Type const &> (o));
-}
+ this->implementation_next (const_cast <Type const &> (o));
+ }
-virtual void
-implementation_next (Type const&);
+ virtual void
+ implementation_next (Type const&);
-virtual void
-implementation_post (Type &o)
-{
+ virtual void
+ implementation_post (Type &o)
+ {
-this->implementation_post (const_cast <Type const &> (o));
-}
+ this->implementation_post (const_cast <Type const &> (o));
+ }
-virtual void
-implementation_post (Type const&);
+ virtual void
+ implementation_post (Type const&);
-virtual void
-instance_pre (Type &o)
-{
+ virtual void
+ instance_pre (Type &o)
+ {
-this->instance_pre (const_cast <Type const &> (o));
-}
+ this->instance_pre (const_cast <Type const &> (o));
+ }
-virtual void
-instance_pre (Type const&);
+ virtual void
+ instance_pre (Type const&);
-virtual void
-instance_next (Type &o)
-{
+ virtual void
+ instance_next (Type &o)
+ {
-this->instance_next (const_cast <Type const &> (o));
-}
+ this->instance_next (const_cast <Type const &> (o));
+ }
-virtual void
-instance_next (Type const&);
+ virtual void
+ instance_next (Type const&);
-virtual void
-instance_post (Type &o)
-{
+ virtual void
+ instance_post (Type &o)
+ {
-this->instance_post (const_cast <Type const &> (o));
-}
+ this->instance_post (const_cast <Type const &> (o));
+ }
-virtual void
-instance_post (Type const&);
+ virtual void
+ instance_post (Type const&);
-virtual void
-connection_pre (Type &o)
-{
+ virtual void
+ connection_pre (Type &o)
+ {
-this->connection_pre (const_cast <Type const &> (o));
-}
+ this->connection_pre (const_cast <Type const &> (o));
+ }
-virtual void
-connection_pre (Type const&);
+ virtual void
+ connection_pre (Type const&);
-virtual void
-connection_next (Type &o)
-{
+ virtual void
+ connection_next (Type &o)
+ {
-this->connection_next (const_cast <Type const &> (o));
-}
+ this->connection_next (const_cast <Type const &> (o));
+ }
-virtual void
-connection_next (Type const&);
+ virtual void
+ connection_next (Type const&);
-virtual void
-connection_post (Type &o)
-{
+ virtual void
+ connection_post (Type &o)
+ {
-this->connection_post (const_cast <Type const &> (o));
-}
+ this->connection_post (const_cast <Type const &> (o));
+ }
-virtual void
-connection_post (Type const&);
+ virtual void
+ connection_post (Type const&);
-virtual void
-dependsOn_pre (Type &o)
-{
+ virtual void
+ dependsOn_pre (Type &o)
+ {
-this->dependsOn_pre (const_cast <Type const &> (o));
-}
+ this->dependsOn_pre (const_cast <Type const &> (o));
+ }
-virtual void
-dependsOn_pre (Type const&);
+ virtual void
+ dependsOn_pre (Type const&);
-virtual void
-dependsOn_next (Type &o)
-{
+ virtual void
+ dependsOn_next (Type &o)
+ {
-this->dependsOn_next (const_cast <Type const &> (o));
-}
+ this->dependsOn_next (const_cast <Type const &> (o));
+ }
-virtual void
-dependsOn_next (Type const&);
+ virtual void
+ dependsOn_next (Type const&);
-virtual void
-dependsOn_post (Type &o)
-{
+ virtual void
+ dependsOn_post (Type &o)
+ {
-this->dependsOn_post (const_cast <Type const &> (o));
-}
+ this->dependsOn_post (const_cast <Type const &> (o));
+ }
-virtual void
-dependsOn_post (Type const&);
+ virtual void
+ dependsOn_post (Type const&);
-virtual void
-artifact_pre (Type &o)
-{
+ virtual void
+ artifact_pre (Type &o)
+ {
-this->artifact_pre (const_cast <Type const &> (o));
-}
+ this->artifact_pre (const_cast <Type const &> (o));
+ }
-virtual void
-artifact_pre (Type const&);
+ virtual void
+ artifact_pre (Type const&);
-virtual void
-artifact_next (Type &o)
-{
+ virtual void
+ artifact_next (Type &o)
+ {
-this->artifact_next (const_cast <Type const &> (o));
-}
+ this->artifact_next (const_cast <Type const &> (o));
+ }
-virtual void
-artifact_next (Type const&);
+ virtual void
+ artifact_next (Type const&);
-virtual void
-artifact_post (Type &o)
-{
+ virtual void
+ artifact_post (Type &o)
+ {
-this->artifact_post (const_cast <Type const &> (o));
-}
+ this->artifact_post (const_cast <Type const &> (o));
+ }
-virtual void
-artifact_post (Type const&);
+ virtual void
+ artifact_post (Type const&);
-virtual void
-infoProperty_pre (Type &o)
-{
+ virtual void
+ infoProperty_pre (Type &o)
+ {
-this->infoProperty_pre (const_cast <Type const &> (o));
-}
+ this->infoProperty_pre (const_cast <Type const &> (o));
+ }
-virtual void
-infoProperty_pre (Type const&);
+ virtual void
+ infoProperty_pre (Type const&);
-virtual void
-infoProperty_next (Type &o)
-{
+ virtual void
+ infoProperty_next (Type &o)
+ {
-this->infoProperty_next (const_cast <Type const &> (o));
-}
+ this->infoProperty_next (const_cast <Type const &> (o));
+ }
-virtual void
-infoProperty_next (Type const&);
+ virtual void
+ infoProperty_next (Type const&);
-virtual void
-infoProperty_post (Type &o)
-{
+ virtual void
+ infoProperty_post (Type &o)
+ {
-this->infoProperty_post (const_cast <Type const &> (o));
-}
+ this->infoProperty_post (const_cast <Type const &> (o));
+ }
-virtual void
-infoProperty_post (Type const&);
+ virtual void
+ infoProperty_post (Type const&);
-protected:
-DeploymentPlan ();
-};
-}
-}
+ protected:
+ DeploymentPlan ();
+ };
+ }
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
#endif // CDP_HPP
diff --git a/TAO/CIAO/tools/Config_Handlers/toplevel.hpp b/TAO/CIAO/tools/Config_Handlers/toplevel.hpp
index d828adf7ece..09964cff90b 100644
--- a/TAO/CIAO/tools/Config_Handlers/toplevel.hpp
+++ b/TAO/CIAO/tools/Config_Handlers/toplevel.hpp
@@ -1,13 +1,13 @@
/* $Id$
-* This code was generated by the XML Schema Compiler.
-*
-* Changes made to this code will most likely be overwritten
-* when the handlers are recompiled.
-*
-* If you find errors or feel that there are bugfixes to be made,
-* please contact the current XSC maintainer:
-* Will Otte <wotte@dre.vanderbilt.edu>
-*/
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
// Fix for Borland compilers, which seem to have a broken
@@ -24,10 +24,10 @@
//
namespace CIAO
{
-namespace Config_Handlers
-{
-class TopLevelPackageDescription;
-}
+ namespace Config_Handlers
+ {
+ class TopLevelPackageDescription;
+ }
}
#include <memory>
@@ -38,130 +38,131 @@ class TopLevelPackageDescription;
namespace CIAO
{
-namespace Config_Handlers
-{
-class XSC_XML_Handlers_Export TopLevelPackageDescription : public ::XSCRT::Type
-{
-//@@ VC6 anathema
-typedef ::XSCRT::Type Base__;
+ namespace Config_Handlers
+ {
+ class XSC_XML_Handlers_Export TopLevelPackageDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
-// package
-//
-public:
-::CIAO::Config_Handlers::PackageConfiguration const& package () const;
-void package (::CIAO::Config_Handlers::PackageConfiguration const& );
-
-protected:
-::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > package_;
+ // package
+ //
+ public:
+ ::CIAO::Config_Handlers::PackageConfiguration const& package () const;
+ void package (::CIAO::Config_Handlers::PackageConfiguration const& );
-public:
-TopLevelPackageDescription (::CIAO::Config_Handlers::PackageConfiguration const& package__);
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > package_;
-TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
-TopLevelPackageDescription (TopLevelPackageDescription const& s);
+ public:
+ TopLevelPackageDescription (::CIAO::Config_Handlers::PackageConfiguration const& package__);
-TopLevelPackageDescription&
-operator= (TopLevelPackageDescription const& s);
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ TopLevelPackageDescription (TopLevelPackageDescription const& s);
+
+ ~TopLevelPackageDescription () {};
+ TopLevelPackageDescription&
+ operator= (TopLevelPackageDescription const& s);
-private:
-char regulator__;
-};
-}
+ private:
+ char regulator__;
+ };
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
#include "XMLSchema/Traversal.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Traversal
-{
-struct XSC_XML_Handlers_Export TopLevelPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TopLevelPackageDescription >
-{
-virtual void
-traverse (Type&);
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ struct XSC_XML_Handlers_Export TopLevelPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TopLevelPackageDescription >
+ {
+ virtual void
+ traverse (Type&);
-virtual void
-traverse (Type const&);
+ virtual void
+ traverse (Type const&);
-virtual void
-pre (Type&);
+ virtual void
+ pre (Type&);
-virtual void
-pre (Type const&);
+ virtual void
+ pre (Type const&);
-virtual void
-package (Type&);
+ virtual void
+ package (Type&);
-virtual void
-package (Type const&);
+ virtual void
+ package (Type const&);
-virtual void
-post (Type&);
+ virtual void
+ post (Type&);
-virtual void
-post (Type const&);
-};
-}
-}
+ virtual void
+ post (Type const&);
+ };
+ }
+ }
}
#include "XMLSchema/Writer.hpp"
namespace CIAO
{
-namespace Config_Handlers
-{
-namespace Writer
-{
-struct TopLevelPackageDescription : Traversal::TopLevelPackageDescription,
-virtual ::XSCRT::Writer< ACE_TCHAR >
-{
-typedef ::CIAO::Config_Handlers::TopLevelPackageDescription Type;
-TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ struct TopLevelPackageDescription : Traversal::TopLevelPackageDescription,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::TopLevelPackageDescription Type;
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
-virtual void
-traverse (Type &o)
-{
+ virtual void
+ traverse (Type &o)
+ {
-this->traverse (const_cast <Type const &> (o));
-}
+ this->traverse (const_cast <Type const &> (o));
+ }
-virtual void
-traverse (Type const&);
+ virtual void
+ traverse (Type const&);
-virtual void
-package (Type &o)
-{
+ virtual void
+ package (Type &o)
+ {
-this->package (const_cast <Type const &> (o));
-}
+ this->package (const_cast <Type const &> (o));
+ }
-virtual void
-package (Type const&);
+ virtual void
+ package (Type const&);
-protected:
-TopLevelPackageDescription ();
-};
-}
-}
+ protected:
+ TopLevelPackageDescription ();
+ };
+ }
+ }
}
namespace CIAO
{
-namespace Config_Handlers
-{
-}
+ namespace Config_Handlers
+ {
+ }
}
#endif // TOPLEVEL_HPP
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 7839a311a36..7b94a5dfd9c 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,4 +1,1112 @@
-Fri Mar 31 15:17:51 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+Thu Apr 27 15:03:08 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
+
+ * tests/ORB_Local_Config/Bunch/Test.cpp:
+ * tests/ORB_Local_Config/Limits/Test.cpp:
+ * tests/ORB_Local_Config/Simple/Test.cpp:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Test.cpp:
+
+ Fixed fuzz issues (unmatched ACE_TRACE)
+
+ * tests/ORB_Local_Config/Service_Dependency/Service_Config_DLL.cpp:
+ * tests/ORB_Local_Config/Service_Dependency/Service_Dependency.mpc:
+
+ Modified to change the DLL name to avoid name conflict with the
+ one in ACE_ROOT/tests.
+
+Thu Apr 27 14:20:02 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/IIOP_Endpoint.cpp:
+ Fixed a recursion problem with the IPv6 endpoint selection.
+
+ * tao/PortableServer/POAManagerFactory.cpp:
+ Cleaned up compiler warnings.
+
+Thu Apr 27 06:55:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/ORB_Local_Config/lib/lib.mpc:
+ Added base project, this would at least get our builds running again
+
+Thu Apr 27 03:46:34 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/EndpointPolicy/Endpoint_Acceptor_Filter.cpp:
+
+ Found the trouble that was crashing the endpoint test. It was
+ nothing wierd with the new sequence code, it was merely an
+ incorrect index variable - i should have been j.
+
+Thu Apr 27 03:05:31 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/params.cpp:
+
+ One of my patches inadvertently flipped the sense of the
+ share_profiles default from 0 to 1. However, I think that 1
+ should be the default, since it generates more compact IORs. It
+ has been that way for years in the OCI version of TAO, but I am
+ keeping the default 0 here for tradition. This value is
+ overridden by using -ORBUseSharedProfile [0|1] ORB_init option.
+
+Thu Apr 27 02:58:23 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/EndpointPolicy/Endpoint_Value_Impl.cpp:
+ * tao/EndpointPolicy/Endpoint_Value_Impl.h:
+
+ Added a virtual destructor to this otherwise abstract base
+ class.
+
+Wed Apr 26 21:24:54 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
+
+ * NEWS:
+
+ Added an entry to the NEWS file.
+
+Wed Apr 26 20:21:49 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
+
+ The motivation for these changes was to enable support for
+ ORB-local Service Objects. This for instance, makes it possible
+ for differently configured ORBs to coexist within the same
+ proces.
+
+ In order to accomplish this, each orb (core) owns a "Gestalt",
+ i.e. a service object repository instance. There is also a
+ process-wide, or "global" gestalt, which is the default
+ repository where service objects are registered. The latter
+ retains the interface and behavioral compatibility with any
+ existing code. As a consequence of this design choice, any
+ un-named orb(s) will default to using the ubergestalt, which is
+ consistent with the prior behavior.
+
+ * tao/DLL_Parser.cpp:
+
+ Fixed the parse_string() method to use the correct ORB gestalt
+ when looking up a dynamic service object. That resolves a
+ failure in TAO/tests/Object_Loader test.
+
+ * tao/ORB.cpp:
+
+ Relocated some aging comments about having first to instantiate
+ the singleton manager to the correct place (ORB_init). Added a
+ gestalt parameter to the call to open_services. Edited a few
+ lines to fit within the standard length requirement.
+
+ * tao/ORB_Core.h:
+ * tao/ORB_Core.i:
+ * tao/ORB_Core.cpp:
+
+ Added a member and an accessors for the private service gestalt,
+ owned by the core. Replaced the call to methods that use the
+ implicit ubergestalt with ones that specify the gestalt to use
+ for service objects.
+
+ Added an ACE_Service_Config_Guard to make sure the ORB
+ initialization uses the correct repository.
+
+ Updated more references to process_directive() and instance() to
+ use ACE_TCHAR. Updated references to process_directive() to use
+ ACE_TCHAR for consistency.
+
+ Added #if !defined(TAO_AS_STATIC_LIBS)/#endif around code, which
+ is only meaningful when TAO is _not_ statically compiled;
+ Updated the service and DLL symbol names used to load the
+ CodecFactory_Loader, PolicyFactory_Loader and
+ TypeCodeFactory_Loader dynamic services, in the cases where
+ those services are not statically linked and TAO supports
+ dynamic linking. (Thanks Ossama, for pointing that out.) Added
+ code to try and explicitly load an IORInterceptor adapter and
+ Concrete_IORInterceptor_Adapter_Factory, if TAO supports (is
+ built with) dynamic linking;
+
+ Updated the code that loads the IORTable adapter to be exception
+ safe; Edited a few lines to fit within the standard length
+ requirement.
+
+ * tao/Parser_Registry.cpp:
+
+ Updated to explicitly specify the correct gestalt for the ORB.
+
+ * tao/TAO_Internal.h:
+ * tao/TAO_Internal.cpp:
+
+ Refactored the initialization code to separate process-wide
+ aspects of initialization from those having to do with the ORB
+ instance. It is necessary to deal with global initialization
+ because of the large number of use cases, where the first thing
+ a process does is to call ORB_init, and consequently -
+ open_services. There are also cases where a process calls
+ Service_Config::open, initializing the process-wide
+ configuration and only then proceeds to call ORB_init - for
+ example when using Service Configurator to load a DLL that uses
+ an ORB. The close_service is now only responsible for calling
+ close in the ORB's own gestalt, the ACE Object Manager is the
+ one that is clobering the process-wide Service Configuration.
+ Updated to explicitly specify the correct gestalt to be used.
+
+ * tao/default_resource.h:
+ * tao/default_resource.cpp:
+
+ Added the ACE_Dynamic_Service_Dependency member to the default
+ resource factory to expressly maintain the factory's dependance
+ on TAO_Codeset library, because the order of destruction may be
+ reversed in some cases. The member help us keep our access to
+ TAO_Codeset_Manager instances by upping the ref count on
+ TAO_Codeset's DLL. This is far from elegant, but a complete
+ reference counting scheme for the ORB services is a more complex
+ undertaking than what the available resources currently permit.
+
+ * tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp:
+
+ Fixed an (unrelated) issue arising from a call to strcmp() with
+ two different character types - only visible when ACE_USES_WCHAR
+ is in effect.
+
+ * tao/Codeset/Codeset_Manager_i.h:
+ * tao/Codeset/Codeset_Manager_i.cpp:
+
+ (minor) Added void as argument to the ctor and dtor.
+
+ * tao/PI/ORBInitializer_Registry_Impl.h:
+ * tao/PI/ORBInitializer_Registry_Impl.cpp:
+
+ Implemented an init() method, which registers all the static
+ services, usually taken for granted with the loading of
+ TAO_PI. Previously, static initializers were used, however the
+ dependent static services were being registered only globally,
+ which broke the ORBs that needed ORB-local services.
+
+ * tao/PI/PI.h:
+ * tao/PI/PI.cpp:
+ * tao/PI/PolicyFactory_Loader.h:
+ * tao/PI/PolicyFactory_Loader.cpp:
+
+ Removed the static initializers code and made it part of the
+ dynamic service's init method. See the comment above.
+
+ * tao/PortableServer/Root_POA.cpp:
+
+ Explicitly specified the gestalt to be used for registering
+ dynamic services.
+
+ * tests/DLL_ORB/Test_Client_Module.cpp:
+ * tests/DLL_ORB/Test_Server_Module.cpp:
+
+ Provided an ID for the client and server's ORB. In the future,
+ an option may be devised so that the user can specify if they
+ want any ORB to use its own gestalt, even if it does not have an
+ ID. The reverse would be to force all ORBs to use the global SR,
+ even if they have an ID. Fixed a a SEGV upon process
+ termination. The first thing a client process does in its main()
+ is to load a dynamic service - Test_Client_Module, using a call
+ to ACE_Service_Config::process_directive(). The service does
+ call ORB_init(), which causes the population of the SR with a
+ number of static and dynamic SOs. At process termination now
+ however, any services registered following the ORB_init () call
+ are destroyed first and will be unavailable when the
+ Test_Client_Module is finalized. Like the Resource Factory, for
+ example.
+
+ The solution is to provide and ORB id for any ORB, which will
+ loaded as part of a dynamic service. Since the service gestalt
+ is tied to the ORB id, this will cause the new ORBs to create
+ and manage the lifetime of their own Service Repositories. The
+ ORB_init() will be invoked in the context of each distinct SR
+ and any SO an ORB needs will go there. At process termination,
+ the Test_Client_Module will be finalized, which will clobber the
+ ORB's SR and any SO registered there.
+
+ * tests/ORB_Local_Config/ORB_Local_Config.mwc:
+ * tests/ORB_Local_Config/README:
+ * tests/ORB_Local_Config/run_tests_all.pl:
+
+ Added tests and examples of the functionality affected by the
+ introduction of the multiple private (per-ORB) service
+ configuration repositories.
+
+ * tests/ORB_Local_Config/lib/Service_Configuration_Per_ORB.h:
+ * tests/ORB_Local_Config/lib/Service_Configuration_Per_ORB.cpp:
+ * tests/ORB_Local_Config/lib/lib.mpc:
+
+ Common test code.
+
+ * tests/ORB_Local_Config/Bunch/Bunch.mpc:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.UTF-16.conf:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.UTF-16.conf.xml:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.WCHAR_T.conf:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.WCHAR_T.conf.xml:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.conf:
+ * tests/ORB_Local_Config/Bunch/Service_Config_Test.conf.xml:
+ * tests/ORB_Local_Config/Bunch/Test.cpp:
+ * tests/ORB_Local_Config/Bunch/run_test.pl:
+
+ A collection of miscellaneous tests for compatibility of the new
+ interfaces with the old; Processing of the command-line
+ directives; Loading dynamic services in a local repository;
+ Loading the ORBInitializer_Registry locally; Test the helper
+ components used to implement the temporary substitution of the
+ repository currently used as "global" for the sake of
+ registering static services, which are dependent on a dynamic
+ service;
+
+ * tests/ORB_Local_Config/Limits/Limits.mpc:
+ * tests/ORB_Local_Config/Limits/Test.cpp:
+ * tests/ORB_Local_Config/Limits/run_test.pl:
+
+ Testing the size limits of a gestalt.
+
+ * tests/ORB_Local_Config/Separation/Separation.mpc:
+ * tests/ORB_Local_Config/Separation/Test.cpp:
+ * tests/ORB_Local_Config/Separation/run_test.pl:
+
+ Services registered with separate repositories must remain
+ separate and inaccessible through anyone but the gestalt they
+ were registered with.
+
+ * tests/ORB_Local_Config/Service_Dependency/Service_Config_DLL.h:
+ * tests/ORB_Local_Config/Service_Dependency/Service_Config_DLL.cpp:
+ * tests/ORB_Local_Config/Service_Dependency/Service_Config_DLL_Export.h:
+ * tests/ORB_Local_Config/Service_Dependency/Service_Dependency.mpc:
+ * tests/ORB_Local_Config/Service_Dependency/Test.cpp:
+ * tests/ORB_Local_Config/Service_Dependency/run_test.pl:
+
+ Tests the working of the ACE_Dynamic_Service_Dependency class
+
+ * tests/ORB_Local_Config/Shared/Shared.mpc:
+ * tests/ORB_Local_Config/Shared/Test.cpp:
+ * tests/ORB_Local_Config/Shared/run_test.pl:
+
+ Test that the default repository is available through any
+ Service Gestalt, created with its default ctor.
+
+ * tests/ORB_Local_Config/Simple/Simple.mpc:
+ * tests/ORB_Local_Config/Simple/Test.cpp:
+ * tests/ORB_Local_Config/Simple/run_test.pl:
+
+ * tests/ORB_Local_Config/Two_DLL_ORB/ORB_DLL.h:
+ * tests/ORB_Local_Config/Two_DLL_ORB/ORB_DLL.cpp:
+ * tests/ORB_Local_Config/Two_DLL_ORB/ORB_DLL_Export.h:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Service_Config_ORB_Test.conf:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Service_Config_ORB_Test2.conf:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Test.idl:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Test.cpp:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Test_i.h:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Test_i.cpp:
+ * tests/ORB_Local_Config/Two_DLL_ORB/Two_DLL_ORB.mpc:
+ * tests/ORB_Local_Config/Two_DLL_ORB/client.cpp:
+ * tests/ORB_Local_Config/Two_DLL_ORB/run_test.pl:
+ * tests/ORB_Local_Config/Two_DLL_ORB/server.cpp:
+
+ Testing the loading a dynamic service, which initializes its own
+ ORB. The test is a variant of the Hello test with the twist that
+ both the client and the server are service objects, loaded by
+ the Service Configuration mechanism.
+
+Wed Apr 26 20:09:33 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/EndpointPolicy/EndpointPolicyC.h:
+ * tao/EndpointPolicy/EndpointPolicyC.cpp:
+
+ Fixed fuzz errors.
+
+ * tao/EndpointPolicy/EndpointPolicyC.inl:
+
+ Removed this file.
+
+Wed Apr 26 19:44:36 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
+
+ * tao/Makefile.am:
+
+ Regenerated.
+
+ * tao/EndpointPolicy.mpc:
+
+ Added Pkgconfig_Files definition.
+
+ * tao/EndpointPolicy/TAO_EndpointPolicy.pc.in:
+
+ New file, pkg-config *.pc template for TAO_EndpointPolicy
+ library.
+
+Wed Apr 26 19:08:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/OBV/Simple/Client_i.h:
+ Fixed casing of include
+
+Wed Apr 26 19:13:02 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/IIOP_Connection_Handler.cpp:
+ * tao/ORB_Core.cpp:
+ * tao/params.h:
+ * tao/params.i:
+ * tao/params.cpp:
+
+ This change was of OCI by David.Gibbs@igindex.co.uk. He had
+ previously requested the addition of support for SO_KEEPALIVE
+ and as a result we found that the framework existed for
+ communicating a value of SO_DONTROUTE, so it was decided that we
+ go ahead and add the feature. I consider this change provisional
+ in that it isn't strictly required and so if someone strongly
+ objects to its existence it can be pulled. Otherwise it is
+ simply completing what someone else had started a while ago by
+ adding configuration values for socket options to IIOP protocol
+ properties definition.
+
+Wed Apr 26 18:47:23 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/ORB_Core.cpp:
+ * tao/ORB_Core.h:
+
+ Add an alternate connection timeout hook. This is necessary for
+ users of the Optimized Connect Endpoint Selector with its
+ timeout while also using CORBA messaging and the Connection
+ Timeout policy. Both of these connection timeouts are
+ dynamically loaded and one would override the other. This change
+ allows both to be loaded, and if both are initialized to nonzero
+ values, the lesser of the two timeouts is used. This results
+ from a bug originally reported to OCI by friedhelm.wolf@homag.de.
+
+ * tao/Strategies/OC_Endpoint_Selector_Loader.cpp:
+ * tao/Strategies/OC_Endpoint_Selector_Loader.h:
+
+ Cleaned up the initializer to be more consistent with others.
+
+ * tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp:
+
+ Fixed wihtespace in debug output.
+
+Wed Apr 26 16:42:45 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * docs/Options.html:
+
+ Adding text for the new commandline options used to control the
+ parallel connect feature.
+
+ * tao/Blocked_Connect_Strategy.h:
+ * tao/Blocked_Connect_Strategy.cpp:
+ * tao/CORBALOC_Parser.cpp:
+ * tao/Client_Strategy_Factory.h:
+ * tao/Client_Strategy_Factory.cpp:
+ * tao/Connect_Strategy.h:
+ * tao/Connect_Strategy.cpp:
+ * tao/Endpoint.h:
+ * tao/Endpoint.cpp:
+ * tao/IIOP_Connection_Handler.h:
+ * tao/IIOP_Connection_Handler.cpp:
+ * tao/IIOP_Connector.h:
+ * tao/IIOP_Connector.cpp:
+ * tao/IIOP_Endpoint.h:
+ * tao/IIOP_Endpoint.cpp:
+ * tao/IIOP_Profile.h:
+ * tao/IIOP_Profile.cpp:
+ * tao/Invocation_Endpoint_Selectors.h:
+ * tao/Invocation_Endpoint_Selectors.cpp:
+ * tao/LF_CH_Event.h:
+ * tao/LF_Connect_Strategy.h:
+ * tao/LF_Connect_Strategy.cpp:
+ * tao/LF_Event.h:
+ * tao/LF_Multi_Event.h:
+ * tao/LF_Multi_Event.cpp:
+ * tao/MProfile.h:
+ * tao/MProfile.i:
+ * tao/MProfile.cpp:
+ * tao/ORB_Core.cpp:
+ * tao/Profile.h:
+ * tao/Profile.cpp:
+ * tao/Profile_Transport_Resolver.h:
+ * tao/Profile_Transport_Resolver.cpp:
+ * tao/Reactive_Connect_Strategy.h:
+ * tao/Reactive_Connect_Strategy.cpp:
+ * tao/Transport.cpp:
+ * tao/Transport_Connector.h:
+ * tao/Transport_Connector.cpp:
+ * tao/Transport_Descriptor_Interface.h:
+ * tao/Transport_Descriptor_Interface.inl:
+ * tao/Transport_Descriptor_Interface.cpp:
+ * tao/default_client.h:
+ * tao/default_client.cpp:
+ * tao/params.h:
+ * tao/params.i:
+ * tao/params.cpp:
+ * tao/tao.mpc:
+
+ These changes support a new technique for active connection
+ establishment when presented with a profile containing multiple
+ possible endpoints. This commit resolves bugzilla bug #2485.
+
+ The technique in question is "parallel connects" meaning
+ attempting to connect to many endpoints simultaniously. It was
+ conceived as a way to deal with timeouts when the Invocation
+ Endpoint Selector would first try to connect to one or more
+ unreachable endpoints. If those endpoints were defined as IP
+ addresses (not hostnames) or as resolvable hostnames that
+ pointed to unreachable IP addresses, the connection
+ establishment would take potentially several minutes to time out
+ and eventually encounter a reachable endpoint. In the case of
+ shared profiles (those using TAG_ALTERNATE_IIOP_ENDPOINT) this
+ delay impacts every single invocation.
+
+ This parallel connect feature (also referred to somewhat
+ inacurately as a strategy) avoids this by supplying all the
+ endpoints in a profile to the connector and letting it first
+ test to see if any are already cached and available, and if not,
+ to open connections to each and wait for a winner. When the
+ first connection completes, any pending connections are
+ terminated.
+
+ In order to minimize the use of pending connections, an iterator
+ traverses the list of endpoints creating new connections and
+ also checking any existing connections for completion. If the
+ first endpoint happens to be reachable and the server responds
+ quickly enough, the client may not open any more connections.
+
+ If the server does not respond immediately, a wait strategy is
+ entered. This wait strategy may be Reactive or Leader/Follower
+ based. In either case, a specal "multi event" type is used to
+ allow a single thread to wait on one of many connectors, and
+ then to clean up those that didn't finish in time. The parallel
+ connect feature is also available using blocking connects, but
+ the only advantage there is in checking the cache for all
+ endpoints in the profile, there is no performance gain during
+ actual connection establishment.
+
+ The parallel connect strategy differs from another endpoint
+ selection optimization, available in
+ tao/Strategies/Optimized_Connection_Endpoint_Selector.*. That
+ strategy works by examining all profiles simultaniously, this
+ feature still treats separate profiles separately. This profile
+ separation is necessary to support Load Balancing and Fault
+ Tolerence. Also, this feature requires additional support to be
+ built into protocol specific connectors (IIOP is currently the
+ only protocol supporting parallel connects) whereas the other
+ feature works regardless of the protocol.
+
+ As this is a new feature, it is disabled by default. Use the
+ -ORBUseParallelConnects option to enable its use. A second
+ option, -ORBParallelConnectDelay, is used to introduce a small
+ delay between the opening of new potential connections if the
+ server is particularly busy. This is useful to minimize the
+ impact on a busy server if more than one of the available
+ endpoints is reachable. Also, because this feature only focuses
+ on one profile at a time, the server must be run with
+ -ORBUseSharedProfiles enabled (it is disabled by default).
+
+ * tests/Parallel_Connect_Strategy/Parallel_Connect_Strategy.mpc:
+ * tests/Parallel_Connect_Strategy/README:
+ * tests/Parallel_Connect_Strategy/Test.idl:
+ * tests/Parallel_Connect_Strategy/Test_i.h:
+ * tests/Parallel_Connect_Strategy/Test_i.cpp:
+ * tests/Parallel_Connect_Strategy/blocked.conf:
+ * tests/Parallel_Connect_Strategy/client.cpp:
+ * tests/Parallel_Connect_Strategy/reactive.conf:
+ * tests/Parallel_Connect_Strategy/run_test.pl:
+ * tests/Parallel_Connect_Strategy/server.cpp:
+
+ This is a new test for the parallel connect feature. It works by
+ having the server open two endpoints, one aliased to something
+ unreachable. The client then uses different wait strategies to
+ make invocations on the server and records the time for
+ each. These tests also include counter-examples in which
+ parallel connects are not used, and these take several minutes
+ to run. On my Linux machine the timeout period is about 3
+ minutes which causes the overall test to take about 9 minutes to
+ run.
+
+Wed Apr 26 16:30:56 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/PortableServer/POAManagerFactory.cpp:
+
+ Correct a bug found by the Borland compiler.
+
+Wed Apr 26 13:47:28 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/EndpointPolicy.mpc:
+ * tao/EndpointPolicy/EndpointPolicy.h:
+ * tao/EndpointPolicy/EndpointPolicy.pidl:
+ * tao/EndpointPolicy/EndpointPolicy.cpp:
+ * tao/EndpointPolicy/EndpointPolicyA.h:
+ * tao/EndpointPolicy/EndpointPolicyA.cpp:
+ * tao/EndpointPolicy/EndpointPolicyC.h:
+ * tao/EndpointPolicy/EndpointPolicyC.inl:
+ * tao/EndpointPolicy/EndpointPolicyC.cpp:
+ * tao/EndpointPolicy/EndpointPolicyType.pidl:
+ * tao/EndpointPolicy/EndpointPolicyTypeA.h:
+ * tao/EndpointPolicy/EndpointPolicyTypeA.cpp:
+ * tao/EndpointPolicy/EndpointPolicyTypeC.h:
+ * tao/EndpointPolicy/EndpointPolicyTypeC.cpp:
+ * tao/EndpointPolicy/EndpointPolicy_Export.h:
+ * tao/EndpointPolicy/EndpointPolicy_Factory.h:
+ * tao/EndpointPolicy/EndpointPolicy_Factory.cpp:
+ * tao/EndpointPolicy/EndpointPolicy_ORBInitializer.h:
+ * tao/EndpointPolicy/EndpointPolicy_ORBInitializer.cpp:
+ * tao/EndpointPolicy/EndpointPolicy_i.h:
+ * tao/EndpointPolicy/EndpointPolicy_i.cpp:
+ * tao/EndpointPolicy/Endpoint_Acceptor_Filter.h:
+ * tao/EndpointPolicy/Endpoint_Acceptor_Filter.cpp:
+ * tao/EndpointPolicy/Endpoint_Acceptor_Filter_Factory.h:
+ * tao/EndpointPolicy/Endpoint_Acceptor_Filter_Factory.cpp:
+ * tao/EndpointPolicy/Endpoint_Value_Impl.h:
+ * tao/EndpointPolicy/IIOPEndpointValue.pidl:
+ * tao/EndpointPolicy/IIOPEndpointValueA.h:
+ * tao/EndpointPolicy/IIOPEndpointValueA.cpp:
+ * tao/EndpointPolicy/IIOPEndpointValueC.h:
+ * tao/EndpointPolicy/IIOPEndpointValueC.cpp:
+ * tao/EndpointPolicy/IIOPEndpointValue_i.h:
+ * tao/EndpointPolicy/IIOPEndpointValue_i.cpp:
+
+ The EndpointPolicy is a new, TAO-specific policy that is applied
+ to POAManagers via the POAManagerFactory. This commit resolves
+ Bugzilla bug #2484.
+
+ The Endpoint policy acts as a filter for constraining the final
+ endpoints or profiles listed in an IOR when it is created by a
+ POA associated with the POAManager containing the policy. The
+ EndpointPolicy value is a sequence, allow multiple endpoints to
+ be published.
+
+ The way this works is that the ORB is initialized with all the
+ -ORBEndpoint options it needs to provide access to all the
+ objects it will serve. Then POAManagers are created with
+ Endpoint policies that contain only the endpoints that are to be
+ used for its subset of objects. For instance, the ORB could
+ define one endpoint for insecure, internal-use-only objects, and
+ another for secure internet-facing objects. Using the Endpoint
+ Policy these different objects would only get one or the other
+ endpoint. Mechanically what happens is that first all Acceptors
+ are queried to construct an MProfile, then the resulting
+ profiles/endpoints are compared to entries in the policy, those
+ not matching are eliminated. It is possible that an endpoint
+ policy will exclude all the profiles, which would result in an
+ exception being raised at object reference construction time.
+
+ Endpoints are matched in their final form. This means that if an
+ IIOP Endpoint makes use of the hostname_in_ior attribute, that
+ is the name the policy will use to match.
+
+ Endpoint values are protocol specific. A value for IIOP is
+ provided, but new values must be defined to support other
+ protocols. The Endpoint value is a local object. New protocol
+ specific values do not have to be added to the
+ TAO_EndpointPolicy library, but they must specialize
+ EndpointPolicy::ValueBase and the implementation must derive
+ from TAO_Endpoint_Value_Impl.
+
+ * tao/IIOP_Endpoint.h:
+ * tao/IIOP_Endpoint.cpp:
+ * tao/IIOP_Profile.h:
+ * tao/IIOP_Profile.cpp:
+ * tao/Profile.h:
+ * tao/Profile.cpp:
+
+ The profile contains the base endpoint as an attribute. This
+ caused a problem for the endpoint removal scheme mentioned
+ above. If a profile contains two or more endpoints, and the base
+ happens to be the one to be eliminated as a result of the
+ endpoint comparison, the only thing that could be done is to
+ copy the contents of the first alternate into the base, then
+ eliminate the duplicate.
+
+ * tao/orbconf.h:
+
+ Added a tag for the new policy.
+
+ * tests/POA/EndpointPolicy/EndpointPolicy.mpc:
+ * tests/POA/EndpointPolicy/Hello.h:
+ * tests/POA/EndpointPolicy/Hello.cpp:
+ * tests/POA/EndpointPolicy/README:
+ * tests/POA/EndpointPolicy/Test.idl:
+ * tests/POA/EndpointPolicy/client.cpp:
+ * tests/POA/EndpointPolicy/run_test.pl:
+ * tests/POA/EndpointPolicy/server.cpp:
+ * tests/POA/README:
+
+ A new test case for the endpoint policy. This test currently
+ fails due to an unresolved interaction with the sequence
+ code. The error appears to be related to memory corruption, but
+ the cause has not yet been determined. The error only manifests
+ when the multiple profiles portion of the test is being
+ run. This is where an unmodified IOR would contain two profiles,
+ each with one endpoint. The problem does not occur when a single
+ profile has two endpoints.
+
+Wed Apr 26 14:04:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Smart_Proxies/client.cpp:
+ * tests/Smart_Proxies/Benchmark/client.cpp:
+ * tests/Smart_Proxies/dtor/client.cpp:
+ * tests/Smart_Proxies/Policy/client.cpp:
+ Removed remarks about the KAI compiler, more compilers do
+ give these warnings and support for the KAI compilers
+ has been removed
+
+Wed Apr 26 13:29:44 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * orbsvcs/examples/ORT/Server_IORInterceptor.h:
+ * orbsvcs/examples/ORT/Server_IORInterceptor.cpp:
+
+ * orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h:
+ * orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp:
+
+ * orbsvcs/orbsvcs/PortableGroup/GOA.h:
+ * orbsvcs/orbsvcs/PortableGroup/GOA.cpp:
+ * orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h:
+ * orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp:
+
+ * tao/AnyTypeCode/PI_ForwardA.h:
+
+ * tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h:
+ * tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp:
+ * tao/CSD_Framework/CSD_POA.h:
+ * tao/CSD_Framework/CSD_POA.cpp:
+
+ * tao/IORInterceptor/IORInfo.h:
+ * tao/IORInterceptor/IORInfo.cpp:
+ * tao/IORInterceptor/IORInfoC.h:
+ * tao/IORInterceptor/IORInterceptorC.h:
+ * tao/IORInterceptor/IORInterceptor_Adapter_Impl.h:
+ * tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp:
+
+ * tao/IORInterceptor_Adapter.h:
+ * tao/PI_Forward.pidl:
+ * tao/PI_ForwardC.h:
+
+ * tao/RTPortableServer/RT_POA.h:
+ * tao/RTPortableServer/RT_POA.cpp:
+ * tao/RTPortableServer/RT_Servant_Dispatcher.h:
+ * tao/RTPortableServer/RT_Servant_Dispatcher.cpp:
+
+ * tests/ORT/ORT_test_IORInterceptor.h:
+ * tests/ORT/ORT_test_IORInterceptor.cpp:
+
+ * tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h:
+ * tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp:
+
+ These are more changes related to the POAManagerFactory. They
+ are coupled with my 13:10:59 utc checkin.
+
+Wed Apr 26 13:10:59 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/PortableServer/Acceptor_Filter_Factory.h:
+ * tao/PortableServer/Acceptor_Filter_Factory.cpp:
+ * tao/PortableServer/Default_Acceptor_Filter.h:
+ * tao/PortableServer/Default_Servant_Dispatcher.h:
+ * tao/PortableServer/Default_Servant_Dispatcher.cpp:
+ * tao/PortableServer/Object_Adapter.h:
+ * tao/PortableServer/Object_Adapter.cpp:
+ * tao/PortableServer/POAManager.h:
+ * tao/PortableServer/POAManager.i:
+ * tao/PortableServer/POAManager.pidl:
+ * tao/PortableServer/POAManager.cpp:
+ * tao/PortableServer/POAManagerC.h:
+ * tao/PortableServer/POAManagerFactory.h:
+ * tao/PortableServer/POAManagerFactory.cpp:
+ * tao/PortableServer/POAManagerFactory.pidl:
+ * tao/PortableServer/POAManagerFactoryC.h:
+ * tao/PortableServer/POAManagerFactoryC.cpp:
+ * tao/PortableServer/PortableServer.h:
+ * tao/PortableServer/PortableServer.pidl:
+ * tao/PortableServer/PortableServerC.h:
+ * tao/PortableServer/Regular_POA.h:
+ * tao/PortableServer/Regular_POA.cpp:
+ * tao/PortableServer/Root_POA.h:
+ * tao/PortableServer/Root_POA.cpp:
+ * tao/PortableServer/Servant_Dispatcher.h:
+
+ These files are new/updated to support the POAManagerFactory,
+ which was added to the CORBA 3.0.2 specification. The PMF is
+ used to allow for the explicit creation of POA Managers which
+ can then be supplied to POAs during POA creation. POA Managers
+ may now also carry policies which will influence all POAs
+ associated with it. This work builds on the effort originally
+ started by Johnny Willemsen back in the pre-1.4.8 era. This
+ commit resolves Bugzilla bug #1785.
+
+ * tests/POA/POAManagerFactory/POAManagerFactory.cpp:
+ * tests/POA/POAManagerFactory/POAManagerFactory.mpc:
+ * tests/POA/POAManagerFactory/run_test.pl:
+
+ This is a new test for the POAManagerFactory.
+
+Wed Apr 26 13:01:48 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/Valuetype/AbstractBase.cpp:
+ * tao/Valuetype/AbstractBase.h:
+ The _tao_marshal_v method is supposed to be const.
+
+Wed Apr 26 13:01:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/POA/Bug_2511_Regression/*:
+ Added new regression for bug 2511. Thanks to Martin Cornelius
+ <Martin at Cornelius at smiths-heimann dot com> for creating
+ this regression
+
+Wed Apr 26 12:20:51 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tests/AMI/ami_test.idl:
+ * tests/AMI/ami_test_i.cpp:
+ * tests/AMI/simple_client.cpp:
+ Reverting earlier test changes. They were causing problems on
+ some platforms and I don't have a clear enough memory of the
+ original motivation for the change.
+
+Wed Apr 26 11:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * orbsvcs/tests/AVStreams/Pluggable/ftp.cpp:
+ * orbsvcs/tests/AVStreams/Multicast/ftp.cpp:
+ Fixed a bug in these tests, in the test code for element 0 of
+ a string sequence was set and after that the length was set to 1.
+ The setting of 0 is possible because the OMG doesn't define
+ exceptions for this so it is allowed, then setting the length to
+ 1 does reinitialize element 0 so that we don't get old values.
+ This was not done with the old sequences, then just the old
+ value was returned and things worked then.
+
+Wed Apr 26 11:21:57 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/Valuetype/ValueBase.cpp:
+
+ Fix for errant removal of throw, this corrects the OBV/Factory
+ test.
+
+Wed Apr 26 10:41:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tao/Unbounded_Sequence_CDR_T.h:
+ Added missing include of SystemException
+
+Wed Apr 26 10:03:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/OBV/Simple/*:
+ Added very simple OBV test
+
+Wed Apr 26 09:53:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Portable_Interceptors/Bug_2510_Regression:
+ New regression test, thanks to Martin Cornelius
+ <Martin at Cornelius at smiths-heimann dot com> for creating
+ this test. This bug is not fixed yet.
+
+Wed Apr 26 09:44:12 UTC 2006 Kees van Marle <kvmarle@remedy.nl>
+
+ * tao/Bounded_Sequence_CDR_T.h:
+ * tao/Unbounded_Sequence_CDR_T.h:
+ Check in all marshal_sequence methods if we aren't trying to
+ marshal a nill sequence, this can happen when the user doesn't
+ initialize an out argument. In that case we throw a BAD_PARAM
+ exception as described in the C++ spec. This fixes bugzilla bug
+ 1676.
+
+Wed Apr 26 08:42:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tao/ObjRefTemplate/ObjectReferenceTemplateC.h:
+ * tao/ObjRefTemplate/Default_ORTC.h:
+ * tao/Messaging/ExceptionHolderC.h:
+ Include the Valuetype_Adapter_Factory_Impl.h so that the
+ Valuetype library gets linked in a static build, this is
+ already updated earlier in the IDL compiler
+
+Wed Apr 26 08:17:12 UTC 2006 Kees van Marle <kvmarle@remedy.nl>
+
+ * tests/Bug_1676_Regression/client.cpp:
+ Extended this test to explicitly test for BAD_PARAM exception
+ when the server not initializes an out argument
+
+Wed Apr 26 07:24:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * orbsvcs/orbsvcs/Trader/Interpreter_Utils.h:
+ Removed invalid template export
+
+Wed Apr 26 03:46:16 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/Valuetype/AbstractBase.cpp:
+
+ Fixed scoreboard detected warning.
+
+Tue Apr 25 19:24:48 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp:
+
+ Missed a patch from the earlier commit.
+
+Tue Apr 25 19:09:08 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * orbsvcs/examples/ORT/Server_IORInterceptor.h:
+ * orbsvcs/examples/ORT/Server_IORInterceptor.cpp:
+
+ * orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h:
+ * orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp:
+
+ * orbsvcs/orbsvcs/PortableGroup/GOA.h:
+ * orbsvcs/orbsvcs/PortableGroup/GOA.cpp:
+ * orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h:
+ * orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp:
+
+ * tao/AnyTypeCode/PI_ForwardA.h:
+
+ * tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h:
+ * tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp:
+ * tao/CSD_Framework/CSD_POA.h:
+ * tao/CSD_Framework/CSD_POA.cpp:
+
+ * tao/IIOP_Endpoint.h:
+ * tao/IIOP_Endpoint.cpp:
+ * tao/IIOP_Profile.h:
+ * tao/IIOP_Profile.cpp:
+
+ * tao/IORInterceptor/IORInfo.h:
+ * tao/IORInterceptor/IORInfo.cpp:
+ * tao/IORInterceptor/IORInfoC.h:
+ * tao/IORInterceptor/IORInterceptorC.h:
+ * tao/IORInterceptor/IORInterceptor_Adapter_Impl.h:
+ * tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp:
+
+ * tao/IORInterceptor_Adapter.h:
+ * tao/PI_Forward.pidl:
+ * tao/PI_ForwardC.h:
+
+ * tao/PortableServer/Default_Acceptor_Filter.h:
+ * tao/PortableServer/Default_Servant_Dispatcher.h:
+ * tao/PortableServer/Default_Servant_Dispatcher.cpp:
+ * tao/PortableServer/Object_Adapter.h:
+ * tao/PortableServer/Object_Adapter.cpp:
+ * tao/PortableServer/POAManager.h:
+ * tao/PortableServer/POAManager.i:
+ * tao/PortableServer/POAManager.cpp:
+ * tao/PortableServer/POAManager.pidl:
+ * tao/PortableServer/POAManagerC.h:
+ * tao/PortableServer/PortableServer.h:
+ * tao/PortableServer/PortableServer.pidl:
+ * tao/PortableServer/PortableServerC.h:
+ * tao/PortableServer/Regular_POA.h:
+ * tao/PortableServer/Regular_POA.cpp:
+ * tao/PortableServer/Root_POA.h:
+ * tao/PortableServer/Root_POA.cpp:
+ * tao/PortableServer/Servant_Dispatcher.h:
+
+ * tao/Profile.h:
+ * tao/Profile.cpp:
+
+ * tao/RTPortableServer/RT_POA.h:
+ * tao/RTPortableServer/RT_POA.cpp:
+ * tao/RTPortableServer/RT_Servant_Dispatcher.h:
+ * tao/RTPortableServer/RT_Servant_Dispatcher.cpp:
+
+ * tao/orbconf.h:
+ * tao/params.cpp:
+
+ * tests/ORT/ORT_test_IORInterceptor.h:
+ * tests/ORT/ORT_test_IORInterceptor.cpp:
+
+ * tests/POA/EndpointPolicy/EndpointPolicy.mpc:
+ * tests/POA/EndpointPolicy/Hello.h:
+ * tests/POA/EndpointPolicy/Hello.cpp:
+ * tests/POA/EndpointPolicy/README:
+ * tests/POA/EndpointPolicy/Test.idl:
+ * tests/POA/EndpointPolicy/client.cpp:
+ * tests/POA/EndpointPolicy/run_test.pl:
+ * tests/POA/EndpointPolicy/server.cpp:
+
+ * tests/POA/POAManagerFactory/POAManagerFactory.cpp:
+ * tests/POA/POAManagerFactory/POAManagerFactory.mpc:
+ * tests/POA/POAManagerFactory/run_test.pl:
+
+ * tests/POA/README:
+
+ * tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h:
+ * tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp:
+
+Tue Apr 25 17:38:34 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp:
+ * tao/Messaging/ExceptionHolderC.h:
+ * tao/Messaging/ExceptionHolderC.cpp:
+ * tao/ObjRefTemplate/Default_ORTC.h:
+ * tao/ObjRefTemplate/Default_ORTC.cpp:
+ * tao/ObjRefTemplate/ObjectReferenceTemplateC.h:
+ * tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp:
+ * tao/Valuetype/AbstractBase.h:
+ * tao/Valuetype/AbstractBase.cpp:
+ * tao/Valuetype/StringValueC.h:
+ * tao/Valuetype/StringValueC.inl:
+ * tao/Valuetype/ValueBase.h:
+ * tao/Valuetype/ValueBase.cpp:
+
+ These are further valuetype changes that are related to Bugzilla
+ #2162. The problem is that TAO assumes that a valuetype's
+ typecode is always encoded as 0x7FFFFF02 <repID> but that is not
+ compliant with the spec. It is also valid to encode a valuetype
+ typecode as 0x7FFFFF00 which indicates that the actual type of
+ the value matches the formal type for the argument for which the
+ value is a parameter. TAO already had most of the hooks in
+ place to support this, but was missing a key bit of
+ functionality. This patch adds that functionality, the ability
+ to test that the formal type matches the actual type when
+ marshaling values.
+
+ Valuetypes encoded this way are substantially more efficient, if
+ the type can be implied then there is no need to carry the
+ actual type id. Unfortunately to do so blindly would break
+ backwards compatibility with all previous versions of TAO.
+ For the time being, the effective code to cause TAO to marshal
+ values using the more efficient typecode is disabled using a new
+ compile-time flag, TAO_HAS_OPTIMIMIZED_VALUETYPE_MARSHALING,
+ which must be defined to give TAO the opportunity to use this
+ new technique. THIS FLAG BREAKS BACKWARDS COMPATIBILITY. It is
+ not a violation of the spec to always encode the valuetype's
+ type ID when marshaling, so TAO can continue being backwards
+ compatible and not be in violation of the spec. The only
+ violation comes when failing to unmarshal a value which is using
+ an implied type ID.
+
+ I would prefer to not have a compiler flag to guard the use of
+ optimized marshaling, but I don't know any other way to do it.
+ At the point where the decision is made, there is no reference
+ to an ORB Core so there is no easy way to set a dynamic option
+ that could be used to selectively control this optimization.
+
+Tue Apr 25 15:14:13 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ Merging in truncatable valuetype support. This work was done on
+ an OCI controlled patch then brought in via patch. The premise
+ is to support the "truncatable" keyword for valuetypes as
+ defined in sections 3.9.1.3, 5.2.5.3 and 15.3.4.1 of the CORBA
+ 3.0.3 specification. Practically, this means supporting the
+ marshaling of typecode lists and chunked values. Chunked values
+ requires the retention of state, namely nesting level, during
+ the marshaling. This was handled by creating a new ChunkInfo
+ type that is created on the stack during the marshaling of a
+ valuetype and is passed through all the intermediate marshal
+ methods. This commit resolves Bugzilla #2483
+
+ * TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp:
+
+ Valueboxes by definition cannot be made truncatable, but they
+ derive from the same valuebase, thus they must support the same
+ signature for creating a list of repository ids. Otherwise these
+ are whitespace only changes.
+
+ * TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp:
+
+ These are changes for generating code that manages the chunkinfo
+ data as it passes through the value members.
+
+ * TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp:
+
+ Whitespace changes.
+
+ * TAO_IDL/fe/y.tab.cpp:
+ * TAO_IDL/fe/idl.yy:
+
+ Removed the warning about support for truncatables.
+
+ * tao/AnyTypeCode/skip.cpp:
+
+ Fixed the type for the valuetag.
+
+ * tao/Messaging/ExceptionHolderC.h:
+ * tao/Messaging/ExceptionHolderC.cpp:
+ * tao/ObjRefTemplate/Default_ORTC.h:
+ * tao/ObjRefTemplate/Default_ORTC.cpp:
+ * tao/ObjRefTemplate/ObjectReferenceTemplateC.h:
+ * tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp:
+
+ These are the changes required by the truncatable support that
+ would ordinarily be generated by the IDL compiler.
+
+ * tao/Valuetype/AbstractBase.h:
+ * tao/Valuetype/AbstractBase.cpp:
+ * tao/Valuetype/StringValueC.h:
+ * tao/Valuetype/StringValueC.cpp:
+ * tao/Valuetype/ValueBase.h:
+ * tao/Valuetype/ValueBase.inl:
+ * tao/Valuetype/ValueBase.cpp:
+ * tao/Valuetype/Value_CORBA_methods.h:
+
+ The changes for StringValue and AbstractBase are the same as the
+ generated code. The changes in ValueBase are those common to all
+ value types, used to determine how to marshal values if the
+ truncatable keyword was defined or not. This also includes the
+ definintion of the new ChunkInfo type.
+
+ * tests/AMI/ami_test.idl:
+ * tests/AMI/ami_test_i.cpp:
+ * tests/AMI/simple_client.cpp:
+
+ Changes test misc. fixes for support of wchar data in exceptions.
+
+ * tests/OBV/Truncatable/OBV_Truncatable.mpc:
+ * tests/OBV/Truncatable/README:
+ * tests/OBV/Truncatable/Truncatable.idl:
+ * tests/OBV/Truncatable/TruncatableS_impl.h:
+ * tests/OBV/Truncatable/TruncatableS_impl.cpp:
+ * tests/OBV/Truncatable/client.cpp:
+ * tests/OBV/Truncatable/run_test.pl:
+ * tests/OBV/Truncatable/server.cpp:
+
+ A new test specific to validating the truncatable valuetypes.
+ Note this test is also added to the ace/bin/tao_orb_tests.lst.
+
+ * tests/Param_Test/svc.conf:
+
+ Remove the explicit override of the wchar codeset for the
+
+Tue Apr 25 14:25:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ Reverted this change below, this change broke this test
+
+ Fri Apr 21 08:11:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+ * orbsvcs/tests/Trading/TTest.idl:
+ Use the CORBA predefined sequence types
+
+Tue Apr 25 12:20:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc:
+ Added missing unbouded array unit test
+
+Tue Apr 25 11:40:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp
+ * orbsvcs/orbsvcs/Trader/Interpreter_Utils.{h,cpp}:
+ * orbsvcs/orbsvcs/Trader/Offer_Database.{h,cpp}:
+ * orbsvcs/orbsvcs/Trader/Service_Type_Repository.{h,cpp}:
+ * orbsvcs/orbsvcs/Trader/Trader.h
+ * orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp
+ * orbsvcs/orbsvcs/Trader/Trader_Interfaces.{h,cpp}:
+ * orbsvcs/orbsvcs/Trader/Trader_Utils.{h,cpp}:
+ Fixed duplicate symbols when linking with vc7/vc8. The trading
+ service used the TAO_String_Hash_Key class to store strings
+ in hash maps, this class is derived from CORBA::String_var which
+ has been refactored to a template. This causes problems with
+ vc7/vc8 because the base template is exported from multiple
+ libraries. This has been resolved by usign CORBA::String_var
+ in the hash map and deliver an ACE_Hash, ACE_Equal_To and
+ ACE_Less_Then template specialization. This solves now the
+ link problems, the runtime issue that appeared after the
+ sequence merge has not been fixed yet. Also see bugzilla bug
+ 2520 for more info.
+
+Tue Apr 25 08:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tao/ORB.cpp:
+ Removed runtime check of the sizes of the basic data types. We
+ now always use bool for CORBA::Boolean independent of the size
+ of bool, see also bugzilla 2515
+
+Tue Apr 25 06:37:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tao/Object.{h,cpp}:
+ Made the signature of the static marshal method the same in the
+ definition and the implementation.
+
+Mon Apr 24 19:05:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
* tests/IDL_Test/included.idl:
* tests/IDL_Test/including.idl:
@@ -121,6 +1229,349 @@ Thu Mar 30 03:30:00 UTC 2006 Frank Rehberger <frehberger@prismtech.com>
orb_core->reinitialize_object (this), to optimize for colocal
case.
+ * TAO_IDL/Makefile.am:
+ * docs/Makefile.am:
+ * docs/tutorials/Makefile.am:
+ * docs/tutorials/Quoter/Makefile.am:
+ * docs/tutorials/Quoter/AMI/Makefile.am:
+ * docs/tutorials/Quoter/Event_Service/Makefile.am:
+ * docs/tutorials/Quoter/Naming_Service/Makefile.am:
+ * docs/tutorials/Quoter/On_Demand_Activation/Makefile.am:
+ * docs/tutorials/Quoter/RT_Event_Service/Makefile.am:
+ * docs/tutorials/Quoter/Simple/Makefile.am:
+ * docs/tutorials/Quoter/Simple/Client/Makefile.am:
+ * docs/tutorials/Quoter/Simple/Impl-Repo/Makefile.am:
+ * docs/tutorials/Quoter/Simple/ImprovedServer/Makefile.am:
+ * docs/tutorials/Quoter/Simple/Persistent/Makefile.am:
+ * docs/tutorials/Quoter/Simple/Server/Makefile.am:
+ * docs/tutorials/Quoter/idl/Makefile.am:
+ * examples/Makefile.am:
+ * examples/AMH/Makefile.am:
+ * examples/AMH/Sink_Server/Makefile.am:
+ * examples/AMI/Makefile.am:
+ * examples/AMI/FL_Callback/Makefile.am:
+ * examples/Advanced/Makefile.am:
+ * examples/Advanced/ch_3/Makefile.am:
+ * examples/Buffered_AMI/Makefile.am:
+ * examples/Buffered_Oneways/Makefile.am:
+ * examples/CSD_Strategy/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool2/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool3/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool4/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool5/Makefile.am:
+ * examples/CSD_Strategy/ThreadPool6/Makefile.am:
+ * examples/Callback_Quoter/Makefile.am:
+ * examples/Content_Server/Makefile.am:
+ * examples/Content_Server/AMI_Iterator/Makefile.am:
+ * examples/Content_Server/AMI_Observer/Makefile.am:
+ * examples/Content_Server/SMI_Iterator/Makefile.am:
+ * examples/Event_Comm/Makefile.am:
+ * examples/Kokyu_dsrt_schedulers/Makefile.am:
+ * examples/Kokyu_dsrt_schedulers/fp_example/Makefile.am:
+ * examples/Kokyu_dsrt_schedulers/mif_example/Makefile.am:
+ * examples/Kokyu_dsrt_schedulers/muf_example/Makefile.am:
+ * examples/Load_Balancing/Makefile.am:
+ * examples/Load_Balancing_persistent/Makefile.am:
+ * examples/Logging/Makefile.am:
+ * examples/OBV/Makefile.am:
+ * examples/OBV/Typed_Events/Makefile.am:
+ * examples/POA/Makefile.am:
+ * examples/POA/Adapter_Activator/Makefile.am:
+ * examples/POA/DSI/Makefile.am:
+ * examples/POA/Default_Servant/Makefile.am:
+ * examples/POA/Explicit_Activation/Makefile.am:
+ * examples/POA/Explicit_Activation/Alt_Resources/Makefile.am:
+ * examples/POA/FindPOA/Makefile.am:
+ * examples/POA/Forwarding/Makefile.am:
+ * examples/POA/Generic_Servant/Makefile.am:
+ * examples/POA/Loader/Makefile.am:
+ * examples/POA/NewPOA/Makefile.am:
+ * examples/POA/On_Demand_Activation/Makefile.am:
+ * examples/POA/On_Demand_Loading/Makefile.am:
+ * examples/POA/POA_BiDir/Makefile.am:
+ * examples/POA/Reference_Counted_Servant/Makefile.am:
+ * examples/POA/RootPOA/Makefile.am:
+ * examples/POA/TIE/Makefile.am:
+ * examples/Persistent_Grid/Makefile.am:
+ * examples/PluggableUDP/Makefile.am:
+ * examples/PluggableUDP/tests/Makefile.am:
+ * examples/PluggableUDP/tests/Basic/Makefile.am:
+ * examples/PluggableUDP/tests/Performance/Makefile.am:
+ * examples/PluggableUDP/tests/SimplePerformance/Makefile.am:
+ * examples/Quoter/Makefile.am:
+ * examples/RTCORBA/Makefile.am:
+ * examples/RTCORBA/Activity/Makefile.am:
+ * examples/RTScheduling/Makefile.am:
+ * examples/RTScheduling/Fixed_Priority_Scheduler/Makefile.am:
+ * examples/RTScheduling/MIF_Scheduler/Makefile.am:
+ * examples/Simple/Makefile.am:
+ * examples/Simple/bank/Makefile.am:
+ * examples/Simple/chat/Makefile.am:
+ * examples/Simple/echo/Makefile.am:
+ * examples/Simple/grid/Makefile.am:
+ * examples/Simple/time/Makefile.am:
+ * examples/Simple/time-date/Makefile.am:
+ * examples/Simulator/Makefile.am:
+ * examples/Simulator/Event_Supplier/Makefile.am:
+ * examples/TypeCode_Creation/Makefile.am:
+ * examples/ior_corbaloc/Makefile.am:
+ * examples/mfc/Makefile.am:
+ * interop-tests/Makefile.am:
+ * interop-tests/wchar/Makefile.am:
+ * orbsvcs/Makefile.am:
+ * orbsvcs/Concurrency_Service/Makefile.am:
+ * orbsvcs/CosEvent_Service/Makefile.am:
+ * orbsvcs/Dump_Schedule/Makefile.am:
+ * orbsvcs/Event_Service/Makefile.am:
+ * orbsvcs/FTRT_Event_Service/Makefile.am:
+ * orbsvcs/FTRT_Event_Service/Event_Service/Makefile.am:
+ * orbsvcs/FTRT_Event_Service/Factory_Service/Makefile.am:
+ * orbsvcs/FTRT_Event_Service/Gateway_Service/Makefile.am:
+ * orbsvcs/FT_ReplicationManager/Makefile.am:
+ * orbsvcs/Fault_Detector/Makefile.am:
+ * orbsvcs/Fault_Notifier/Makefile.am:
+ * orbsvcs/IFR_Service/Makefile.am:
+ * orbsvcs/ImplRepo_Service/Makefile.am:
+ * orbsvcs/LoadBalancer/Makefile.am:
+ * orbsvcs/Logging_Service/Makefile.am:
+ * orbsvcs/Logging_Service/Basic_Logging_Service/Makefile.am:
+ * orbsvcs/Logging_Service/Event_Logging_Service/Makefile.am:
+ * orbsvcs/Logging_Service/Notify_Logging_Service/Makefile.am:
+ * orbsvcs/Logging_Service/RTEvent_Logging_Service/Makefile.am:
+ * orbsvcs/Naming_Service/Makefile.am:
+ * orbsvcs/Notify_Service/Makefile.am:
+ * orbsvcs/Scheduling_Service/Makefile.am:
+ * orbsvcs/TAO_Service/Makefile.am:
+ * orbsvcs/Time_Service/Makefile.am:
+ * orbsvcs/Trading_Service/Makefile.am:
+ * orbsvcs/examples/Makefile.am:
+ * orbsvcs/examples/CosEC/Makefile.am:
+ * orbsvcs/examples/CosEC/Factory/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/bin/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/lib/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/tests/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Makefile.am:
+ * orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Makefile.am:
+ * orbsvcs/examples/CosEC/Simple/Makefile.am:
+ * orbsvcs/examples/CosEC/TypedSimple/Makefile.am:
+ * orbsvcs/examples/FaultTolerance/Makefile.am:
+ * orbsvcs/examples/FaultTolerance/RolyPoly/Makefile.am:
+ * orbsvcs/examples/ImR/Makefile.am:
+ * orbsvcs/examples/ImR/Advanced/Makefile.am:
+ * orbsvcs/examples/ImR/Combined_Service/Makefile.am:
+ * orbsvcs/examples/LoadBalancing/Makefile.am:
+ * orbsvcs/examples/Log/Makefile.am:
+ * orbsvcs/examples/Log/Basic/Makefile.am:
+ * orbsvcs/examples/Log/Event/Makefile.am:
+ * orbsvcs/examples/Log/Notify/Makefile.am:
+ * orbsvcs/examples/Log/RTEvent/Makefile.am:
+ * orbsvcs/examples/Notify/Makefile.am:
+ * orbsvcs/examples/Notify/Federation/Makefile.am:
+ * orbsvcs/examples/Notify/Federation/Agent/Makefile.am:
+ * orbsvcs/examples/Notify/Federation/Gate/Makefile.am:
+ * orbsvcs/examples/Notify/Federation/SpaceCraft/Makefile.am:
+ * orbsvcs/examples/Notify/Filter/Makefile.am:
+ * orbsvcs/examples/Notify/Lanes/Makefile.am:
+ * orbsvcs/examples/Notify/Subscribe/Makefile.am:
+ * orbsvcs/examples/Notify/ThreadPool/Makefile.am:
+ * orbsvcs/examples/ORT/Makefile.am:
+ * orbsvcs/examples/RtEC/Makefile.am:
+ * orbsvcs/examples/RtEC/IIOPGateway/Makefile.am:
+ * orbsvcs/examples/RtEC/Kokyu/Makefile.am:
+ * orbsvcs/examples/RtEC/MCast/Makefile.am:
+ * orbsvcs/examples/RtEC/Schedule/Makefile.am:
+ * orbsvcs/examples/RtEC/Simple/Makefile.am:
+ * orbsvcs/examples/Security/Makefile.am:
+ * orbsvcs/examples/Security/Send_File/Makefile.am:
+ * orbsvcs/orbsvcs/Makefile.am:
+ * orbsvcs/performance-tests/Makefile.am:
+ * orbsvcs/performance-tests/LoadBalancing/Makefile.am:
+ * orbsvcs/performance-tests/LoadBalancing/LBPerf/Makefile.am:
+ * orbsvcs/performance-tests/LoadBalancing/LBPerf/RPS/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/Colocated_Roundtrip/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/Federated_Roundtrip/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/RTCORBA_Baseline/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/RTCORBA_Callback/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/Roundtrip/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/TCP_Baseline/Makefile.am:
+ * orbsvcs/performance-tests/RTEvent/lib/Makefile.am:
+ * orbsvcs/tests/Makefile.am:
+ * orbsvcs/tests/AVStreams/Makefile.am:
+ * orbsvcs/tests/AVStreams/Asynch_Three_Stage/Makefile.am:
+ * orbsvcs/tests/AVStreams/Bidirectional_Flows/Makefile.am:
+ * orbsvcs/tests/AVStreams/Component_Switching/Makefile.am:
+ * orbsvcs/tests/AVStreams/Full_Profile/Makefile.am:
+ * orbsvcs/tests/AVStreams/Latency/Makefile.am:
+ * orbsvcs/tests/AVStreams/Modify_QoS/Makefile.am:
+ * orbsvcs/tests/AVStreams/Multicast/Makefile.am:
+ * orbsvcs/tests/AVStreams/Multicast_Full_Profile/Makefile.am:
+ * orbsvcs/tests/AVStreams/Multiple_Flows/Makefile.am:
+ * orbsvcs/tests/AVStreams/Pluggable/Makefile.am:
+ * orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/Makefile.am:
+ * orbsvcs/tests/AVStreams/Simple_Three_Stage/Makefile.am:
+ * orbsvcs/tests/AVStreams/Simple_Two_Stage/Makefile.am:
+ * orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/Makefile.am:
+ * orbsvcs/tests/BiDir_CORBALOC/Makefile.am:
+ * orbsvcs/tests/Bug_1334_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_1393_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_1395_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_1630_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2074_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2137_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2247_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2248_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2285_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2287_Regression/Makefile.am:
+ * orbsvcs/tests/Bug_2316_Regression/Makefile.am:
+ * orbsvcs/tests/Concurrency/Makefile.am:
+ * orbsvcs/tests/CosEvent/Makefile.am:
+ * orbsvcs/tests/CosEvent/Basic/Makefile.am:
+ * orbsvcs/tests/CosEvent/lib/Makefile.am:
+ * orbsvcs/tests/EC_Custom_Marshal/Makefile.am:
+ * orbsvcs/tests/EC_MT_Mcast/Makefile.am:
+ * orbsvcs/tests/EC_Mcast/Makefile.am:
+ * orbsvcs/tests/EC_Multiple/Makefile.am:
+ * orbsvcs/tests/EC_Throughput/Makefile.am:
+ * orbsvcs/tests/Event/Makefile.am:
+ * orbsvcs/tests/Event/Basic/Makefile.am:
+ * orbsvcs/tests/Event/Mcast/Makefile.am:
+ * orbsvcs/tests/Event/Mcast/Common/Makefile.am:
+ * orbsvcs/tests/Event/Mcast/Complex/Makefile.am:
+ * orbsvcs/tests/Event/Mcast/Simple/Makefile.am:
+ * orbsvcs/tests/Event/Mcast/Two_Way/Makefile.am:
+ * orbsvcs/tests/Event/Performance/Makefile.am:
+ * orbsvcs/tests/Event/lib/Makefile.am:
+ * orbsvcs/tests/FT_App/Makefile.am:
+ * orbsvcs/tests/FaultTolerance/Makefile.am:
+ * orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/Makefile.am:
+ * orbsvcs/tests/FaultTolerance/IOGR/Makefile.am:
+ * orbsvcs/tests/FaultTolerance/IOGRManipulation/Makefile.am:
+ * orbsvcs/tests/FtRtEvent/Makefile.am:
+ * orbsvcs/tests/HTIOP/Makefile.am:
+ * orbsvcs/tests/HTIOP/AMI/Makefile.am:
+ * orbsvcs/tests/HTIOP/BiDirectional/Makefile.am:
+ * orbsvcs/tests/HTIOP/Hello/Makefile.am:
+ * orbsvcs/tests/IOR_MCast/Makefile.am:
+ * orbsvcs/tests/ImplRepo/Makefile.am:
+ * orbsvcs/tests/ImplRepo/NameService/Makefile.am:
+ * orbsvcs/tests/ImplRepo/scale/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/Application_Test/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/IDL3_Test/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/IFR_Inheritance_Test/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/IFR_Test/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/Latency_Test/Makefile.am:
+ * orbsvcs/tests/InterfaceRepo/Persistence_Test/Makefile.am:
+ * orbsvcs/tests/Interoperable_Naming/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/GenericFactory/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/GenericFactory/Application_Controlled/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/GenericFactory/Manage_Object_Group/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.am:
+ * orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.am:
+ * orbsvcs/tests/Log/Makefile.am:
+ * orbsvcs/tests/Log/Basic_Log_Test/Makefile.am:
+ * orbsvcs/tests/Miop/Makefile.am:
+ * orbsvcs/tests/Miop/McastHello/Makefile.am:
+ * orbsvcs/tests/Notify/Makefile.am:
+ * orbsvcs/tests/Notify/Basic/Makefile.am:
+ * orbsvcs/tests/Notify/Blocking/Makefile.am:
+ * orbsvcs/tests/Notify/Destroy/Makefile.am:
+ * orbsvcs/tests/Notify/Discarding/Makefile.am:
+ * orbsvcs/tests/Notify/Driver/Makefile.am:
+ * orbsvcs/tests/Notify/MT_Dispatching/Makefile.am:
+ * orbsvcs/tests/Notify/Ordering/Makefile.am:
+ * orbsvcs/tests/Notify/PluggableTopology/Makefile.am:
+ * orbsvcs/tests/Notify/RT_lib/Makefile.am:
+ * orbsvcs/tests/Notify/Reconnecting/Makefile.am:
+ * orbsvcs/tests/Notify/Sequence_Multi_ETCL_Filter/Makefile.am:
+ * orbsvcs/tests/Notify/Sequence_Multi_Filter/Makefile.am:
+ * orbsvcs/tests/Notify/Structured_Filter/Makefile.am:
+ * orbsvcs/tests/Notify/Structured_Multi_Filter/Makefile.am:
+ * orbsvcs/tests/Notify/Test_Filter/Makefile.am:
+ * orbsvcs/tests/Notify/XML_Persistence/Makefile.am:
+ * orbsvcs/tests/Notify/lib/Makefile.am:
+ * orbsvcs/tests/Notify/performance-tests/Makefile.am:
+ * orbsvcs/tests/Notify/performance-tests/Filter/Makefile.am:
+ * orbsvcs/tests/Notify/performance-tests/RedGreen/Makefile.am:
+ * orbsvcs/tests/Notify/performance-tests/Throughput/Makefile.am:
+ * orbsvcs/tests/Property/Makefile.am:
+ * orbsvcs/tests/Redundant_Naming/Makefile.am:
+ * orbsvcs/tests/Sched/Makefile.am:
+ * orbsvcs/tests/Sched_Conf/Makefile.am:
+ * orbsvcs/tests/Security/Makefile.am:
+ * orbsvcs/tests/Security/BiDirectional/Makefile.am:
+ * orbsvcs/tests/Security/Big_Request/Makefile.am:
+ * orbsvcs/tests/Security/Callback/Makefile.am:
+ * orbsvcs/tests/Security/Crash_Test/Makefile.am:
+ * orbsvcs/tests/Security/MT_IIOP_SSL/Makefile.am:
+ * orbsvcs/tests/Security/MT_SSLIOP/Makefile.am:
+ * orbsvcs/tests/Security/Secure_Invocation/Makefile.am:
+ * orbsvcs/tests/Security/ssliop_corbaloc/Makefile.am:
+ * orbsvcs/tests/Simple_Naming/Makefile.am:
+ * orbsvcs/tests/Time/Makefile.am:
+ * orbsvcs/tests/Trading/Makefile.am:
+ * orbsvcs/tests/ior_corbaname/Makefile.am:
+ * orbsvcs/tests/tests_svc_loader/Makefile.am:
+ * performance-tests/Makefile.am:
+ * performance-tests/Anyop/Makefile.am:
+ * performance-tests/CSD_Strategy/Makefile.am:
+ * performance-tests/CSD_Strategy/TestApps/Makefile.am:
+ * performance-tests/CSD_Strategy/TestInf/Makefile.am:
+ * performance-tests/CSD_Strategy/TestServant/Makefile.am:
+ * performance-tests/Callback/Makefile.am:
+ * performance-tests/Cubit/Makefile.am:
+ * performance-tests/Cubit/TAO/Makefile.am:
+ * performance-tests/Cubit/TAO/DII_Cubit/Makefile.am:
+ * performance-tests/Cubit/TAO/IDL_Cubit/Makefile.am:
+ * performance-tests/Cubit/TAO/MT_Cubit/Makefile.am:
+ * performance-tests/Latency/Makefile.am:
+ * performance-tests/Latency/AMH_Single_Threaded/Makefile.am:
+ * performance-tests/Latency/AMI/Makefile.am:
+ * performance-tests/Latency/Collocation/Makefile.am:
+ * performance-tests/Latency/DII/Makefile.am:
+ * performance-tests/Latency/DSI/Makefile.am:
+ * performance-tests/Latency/Deferred/Makefile.am:
+ * performance-tests/Latency/Single_Threaded/Makefile.am:
+ * performance-tests/Latency/Thread_Per_Connection/Makefile.am:
+ * performance-tests/Latency/Thread_Pool/Makefile.am:
+ * performance-tests/Memory/Makefile.am:
+ * performance-tests/Memory/IORsize/Makefile.am:
+ * performance-tests/Memory/Single_Threaded/Makefile.am:
+ * performance-tests/POA/Makefile.am:
+ * performance-tests/POA/Create_Reference/Makefile.am:
+ * performance-tests/POA/Demux/Makefile.am:
+ * performance-tests/POA/Implicit_Activation/Makefile.am:
+ * performance-tests/POA/Object_Creation_And_Registration/Makefile.am:
+ * performance-tests/Pluggable/Makefile.am:
+ * performance-tests/Protocols/Makefile.am:
+ * performance-tests/RTCorba/Makefile.am:
+ * performance-tests/RTCorba/Multiple_Endpoints/Makefile.am:
+ * performance-tests/RTCorba/Multiple_Endpoints/Common/Makefile.am:
+ * performance-tests/RTCorba/Multiple_Endpoints/Orb_Per_Priority/Makefile.am:
+ * performance-tests/RTCorba/Multiple_Endpoints/Single_Endpoint/Makefile.am:
+ * performance-tests/RTCorba/Oneways/Makefile.am:
+ * performance-tests/RTCorba/Oneways/Reliable/Makefile.am:
+ * performance-tests/RTCorba/Thread_Pool/Makefile.am:
+ * performance-tests/Sequence_Latency/Makefile.am:
+ * performance-tests/Sequence_Latency/AMH_Single_Threaded/Makefile.am:
+ * performance-tests/Sequence_Latency/AMI/Makefile.am:
+ * performance-tests/Sequence_Latency/DII/Makefile.am:
+ * performance-tests/Sequence_Latency/DSI/Makefile.am:
+ * performance-tests/Sequence_Latency/Deferred/Makefile.am:
+ * performance-tests/Sequence_Latency/Single_Threaded/Makefile.am:
+ * performance-tests/Sequence_Latency/Thread_Per_Connection/Makefile.am:
+ * performance-tests/Sequence_Latency/Thread_Pool/Makefile.am:
+ * performance-tests/Throughput/Makefile.am:
+ * tao/Makefile.am:
+ * utils/Makefile.am:
+ * utils/catior/Makefile.am:
+ * utils/nslist/Makefile.am:
+
* tests/Permanent_Forward/StubTest.cpp: Removed code at end of
test, which caused error messages even if the test run thru all
test-cases successfully.
diff --git a/TAO/NEWS b/TAO/NEWS
index d542bb7f205..190cb8cceb3 100644
--- a/TAO/NEWS
+++ b/TAO/NEWS
@@ -26,6 +26,10 @@ PLANNED MAJOR CHANGES TARGETED FOR TAO-1.5.2
USER VISIBLE CHANGES BETWEEN TAO-1.5.1 and TAO-1.5.2
====================================================
+. Allow different ORB instances to use a different sets of Service
+ Objects in their own Service REpository instances. This resolves
+ bugzilla #2486.
+
. Integrate new sequence implementation made by Carlos O'Ryan. This
also includes a rework of the TAO_String_Managers and CORBA::(W)String
implementations.
diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp
index 29e474db40b..cd35ccf737b 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_ch.cpp
@@ -19,8 +19,8 @@
//
// ============================================================================
-ACE_RCSID (be_visitor_valuebox,
- cdr_op_ch,
+ACE_RCSID (be_visitor_valuebox,
+ cdr_op_ch,
"$Id$")
be_visitor_valuebox_cdr_op_ch::be_visitor_valuebox_cdr_op_ch (
@@ -64,4 +64,3 @@ be_visitor_valuebox_cdr_op_ch::visit_valuebox (be_valuebox *node)
node->cli_hdr_cdr_op_gen (1);
return 0;
}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp
index 3b4856930e5..42b42489d69 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuebox/cdr_op_cs.cpp
@@ -52,13 +52,13 @@ be_visitor_valuebox_cdr_op_cs::visit_valuebox (be_valuebox *node)
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << be_global->core_versioning_begin () << be_nl;
-
+
// Set the sub state as generating code for the output operator.
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
*os << "::CORBA::Boolean" << be_nl
<< "operator<< (" << be_idt << be_idt_nl
- << "TAO_OutputCDR &strm," << be_nl
+ << "TAO_OutputCDR &strm, " << be_nl
<< "const " << node->full_name ()
<< " *_tao_valuebox" << be_uidt_nl
<< ")" << be_uidt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp
index c0f28c78a64..b8a025efc2b 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ch.cpp
@@ -89,6 +89,9 @@ be_visitor_valuebox_ch::visit_valuebox (be_valuebox *node)
*os << "virtual const char* "
<< "_tao_obv_repository_id (void) const;"
<< be_nl << be_nl
+ << "virtual void "
+ << "_tao_obv_truncatable_repo_ids (Repository_Id_List &) const;"
+ << be_nl << be_nl
<< "static const char* "
<< "_tao_obv_static_repository_id (void);" << be_nl << be_nl;
@@ -125,6 +128,8 @@ be_visitor_valuebox_ch::visit_valuebox (be_valuebox *node)
<< "_tao_marshal_v (TAO_OutputCDR &) const;" << be_nl;
*os << "virtual ::CORBA::Boolean "
<< "_tao_unmarshal_v (TAO_InputCDR &);" << be_nl;
+ *os << "virtual ::CORBA::Boolean "
+ << "_tao_match_formal_type (ptrdiff_t ) const;" << be_nl;
// Private unimplemented default assignment operator
*os << be_uidt_nl << "private:" << be_idt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp
index 4acc14aaca8..3f8fc95b0d1 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_ci.cpp
@@ -65,6 +65,16 @@ be_visitor_valuebox_ci::visit_valuebox (be_valuebox *node)
<< "return \"" << node->repoID () << "\";" << be_uidt_nl
<< "}" << be_nl << be_nl;
+ // _tao_match_formal_type method. Generated because ValueBase interface
+ // requires it. Since value boxes do not support inheritence, this can
+ // simply return true.
+ *os << "ACE_INLINE ::CORBA::Boolean " << be_nl
+ << node->name ()
+ << "::_tao_match_formal_type (ptrdiff_t ) const" << be_nl
+ << "{" << be_idt_nl
+ << "return true;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
// Indicate that code is already generated for this node.
node->cli_inline_gen (true);
diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp
index 6a66cc503ee..91218d66de0 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuebox/valuebox_cs.cpp
@@ -122,6 +122,12 @@ be_visitor_valuebox_cs::visit_valuebox (be_valuebox *node)
<< "return this->_tao_obv_static_repository_id ();" << be_uidt_nl
<< "}" << be_nl << be_nl;
+ *os << "void" << be_nl
+ << node->name () << "::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const" << be_nl
+ << "{" << be_idt_nl
+ << "ids.push_back (this->_tao_obv_static_repository_id ());" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
AST_Type * at = node->boxed_type()->unaliased_type();
be_type *bt = be_type::narrow_from_decl (at);
bool is_array = false;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp
index df4f4fa224f..2cfe3923843 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_ch.cpp
@@ -20,8 +20,8 @@
//
// ============================================================================
-ACE_RCSID (be_visitor_valuetype,
- cdr_op_ch,
+ACE_RCSID (be_visitor_valuetype,
+ cdr_op_ch,
"$Id$")
be_visitor_valuetype_cdr_op_ch::be_visitor_valuetype_cdr_op_ch (
@@ -52,7 +52,7 @@ be_visitor_valuetype_cdr_op_ch::visit_valuetype (be_valuetype *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_cdr_op_ch::"
"visit_valuetype - "
- "codegen for helper functions failed\n"),
+ "codegen for helper functions failed\n"),
-1);
}
@@ -61,7 +61,7 @@ be_visitor_valuetype_cdr_op_ch::visit_valuetype (be_valuetype *node)
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << be_global->core_versioning_begin () << be_nl;
-
+
*os << be_global->stub_export_macro () << " "
<< "::CORBA::Boolean operator<< (TAO_OutputCDR &, const "
<< node->full_name () << " *);" << be_nl;
@@ -71,7 +71,7 @@ be_visitor_valuetype_cdr_op_ch::visit_valuetype (be_valuetype *node)
<< node->full_name () << " *&);";
*os << be_global->core_versioning_end () << be_nl;
-
+
// Set the substate as generating code for the types defined in our scope.
this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_SCOPE);
@@ -80,7 +80,7 @@ be_visitor_valuetype_cdr_op_ch::visit_valuetype (be_valuetype *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_cdr_op_ch::"
"visit_valuetype - "
- "codegen for scope failed\n"),
+ "codegen for scope failed\n"),
-1);
}
@@ -101,5 +101,3 @@ be_visitor_valuetype_cdr_op_ch::visit_eventtype (be_eventtype *node)
{
return this->visit_valuetype (node);
}
-
-
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp
index 8e41015613f..1b7ac0be4b3 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/cdr_op_cs.cpp
@@ -73,13 +73,13 @@ be_visitor_valuetype_cdr_op_cs::visit_valuetype (be_valuetype *node)
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << be_global->core_versioning_begin () << be_nl;
-
+
// Set the sub state as generating code for the output operator.
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
*os << "::CORBA::Boolean" << be_nl
<< "operator<< (" << be_idt << be_idt_nl
- << "TAO_OutputCDR &strm," << be_nl
+ << "TAO_OutputCDR &strm, " << be_nl
<< "const " << node->full_name ()
<< " *_tao_valuetype" << be_uidt_nl
<< ")" << be_uidt_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp
index 3632cdef765..ffeabdd4bb5 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/marshal_cs.cpp
@@ -58,18 +58,29 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
*os << "strm";
}
+ *os << ", TAO_ChunkInfo&";
+ // If the valuetype has no fields, and no stateful inherit,
+ // the chunking helper arg is unused.
+ if (inh != 0 || node->data_members_count () > 0)
+ {
+ *os << "ci";
+ }
+
*os << ") const" << be_nl
<< "{" << be_idt_nl;
if (inh)
{
+ *os << "if (! ci.start_chunk (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+
if (inh->opt_accessor ())
{
*os << "if (!this->";
this->class_name (inh, os);
- *os << "::_tao_marshal_state (strm))" << be_idt_nl
+ *os << "::_tao_marshal_state (strm, ci))" << be_idt_nl
<< "{" << be_idt_nl
<< "return false;" << be_uidt_nl
<< "}" << be_uidt_nl << be_nl;
@@ -79,7 +90,7 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
{
*os << "if (! this->_tao_marshal__"
<< inh->flat_name ()
- << " (strm))" << be_idt_nl
+ << " (strm, ci))" << be_idt_nl
<< "{" << be_idt_nl
<< "return false;" << be_uidt_nl
<< "}" << be_uidt_nl << be_nl;
@@ -90,15 +101,32 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
be_visitor_valuetype_field_cdr_decl field_out_cdr (&new_ctx);
field_out_cdr.visit_scope (node);
- *os << "return (" << be_idt << be_idt_nl;
+ if (node->data_members_count () > 0)
+ {
+ *os << "if (! ci.start_chunk (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+ *os << "CORBA::Boolean ret = " << be_idt << be_idt_nl;
// All we have to do is to visit the scope and generate code.
this->gen_fields (node,
*this->ctx_);
- *os << be_uidt_nl
- << ");" << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
+ *os << ";" << be_uidt << be_uidt_nl;
+
+ *os << "if ( ! ret) " << be_idt_nl;
+ *os << "return false; " << be_uidt_nl << be_nl;
+ *os << "if (! ci.end_chunk (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+ }
+
+ if (inh)
+ {
+ *os << "if (! ci.end_chunk (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+ }
+
+ *os << "return true;" << be_uidt_nl;
+ *os << "}" << be_nl << be_nl;
// Set the substate as generating code for the input operator.
this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_INPUT);
@@ -116,18 +144,29 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
*os << "strm";
}
+ *os << ", TAO_ChunkInfo&";
+ // If the valuetype has no fields, and no stateful inherit,
+ // the chunking helper arg is unused.
+ if (inh != 0 || node->data_members_count () > 0)
+ {
+ *os << "ci";
+ }
+
*os << ")" << be_nl
<< "{" << be_idt_nl;
if (inh)
{
+ *os << "if (! ci.handle_chunking (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+
if (inh->opt_accessor ())
{
*os << "if (!this->";
this->class_name (inh, os);
- *os << "::_tao_unmarshal_state (strm))" << be_idt_nl
+ *os << "::_tao_unmarshal_state (strm, ci))" << be_idt_nl
<< "{" << be_idt_nl
<< "return false;" << be_uidt_nl
<< "}" << be_uidt_nl << be_nl;
@@ -136,7 +175,7 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
{
*os << "if (! this->_tao_unmarshal__"
<< inh->flat_name ()
- << " (strm))" << be_idt_nl
+ << " (strm, ci))" << be_idt_nl
<< "{" << be_idt_nl
<< "return false;" << be_uidt_nl
<< "}" << be_uidt_nl << be_nl;
@@ -146,15 +185,37 @@ be_visitor_valuetype_marshal_cs::visit_valuetype (be_valuetype *node)
be_visitor_valuetype_field_cdr_decl field_in_cdr (&new_ctx);
field_in_cdr.visit_scope (node);
- *os << "return (" << be_idt_nl;
+ if (node->data_members_count () > 0)
+ {
+ *os << "if (! ci.handle_chunking (strm))" << be_idt_nl;
+ *os << "return false;" << be_uidt_nl << be_nl;
+ *os << "CORBA::Boolean ret = " << be_idt << be_idt_nl;
// All we have to do is to visit the scope and generate code.
this->gen_fields (node,
*this->ctx_);
- *os << be_uidt_nl
- << ");" << be_uidt << be_uidt_nl
- << "}";
+ *os << ";" << be_uidt << be_uidt_nl;
+
+ *os << "if ( ! ret) " << be_idt_nl;
+ *os << "return false; " << be_uidt_nl << be_nl;
+ *os << "if (this->require_truncation_)" << be_idt_nl;
+ *os << "return ci.skip_chunks (strm);" << be_uidt_nl << be_nl;
+ *os << "else" << be_idt_nl;
+ *os << "return ci.handle_chunking (strm);" << be_uidt_nl << be_nl;
+ }
+ else
+ *os << "return true;";
+ *os << be_uidt_nl << "}" << be_nl << be_nl;
+
+ *os << "void" << be_nl;
+
+ this->class_name (node, os);
+
+ *os << "::truncation_hook (void)" << be_nl
+ << "{" << be_idt_nl
+ << "this->require_truncation_ = true;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
index 1ceb6962140..650257a2ba5 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ch.cpp
@@ -204,6 +204,9 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
<< "virtual const char* "
<< "_tao_obv_repository_id (void) const;"
<< be_nl << be_nl
+ << "virtual void "
+ << "_tao_obv_truncatable_repo_ids (Repository_Id_List &) const;"
+ << be_nl << be_nl
<< "static const char* "
<< "_tao_obv_static_repository_id (void);" << be_nl << be_nl;
@@ -274,6 +277,8 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
<< "_tao_marshal_v (TAO_OutputCDR &) const;" << be_nl;
*os << "virtual ::CORBA::Boolean "
<< "_tao_unmarshal_v (TAO_InputCDR &);" << be_nl;
+ *os << "virtual ::CORBA::Boolean "
+ << "_tao_match_formal_type (ptrdiff_t ) const;" << be_nl;
}
// Private member:
@@ -304,7 +309,9 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
*os << "::CORBA::Boolean "
<< "_tao_marshal_state (TAO_OutputCDR &) const;" << be_nl
<< "::CORBA::Boolean "
- << "_tao_unmarshal_state (TAO_InputCDR &);"
+ << "_tao_unmarshal_state (TAO_InputCDR &);" << be_nl
+ << "virtual void "
+ << "truncation_hook (void);"
<< be_uidt_nl << be_nl;
*os << "private:" << be_idt_nl;
@@ -320,21 +327,21 @@ be_visitor_valuetype_ch::visit_valuetype (be_valuetype *node)
{
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_marshal__" << node->flat_name ()
- << " (TAO_OutputCDR &) const;"
+ << " (TAO_OutputCDR &, TAO_ChunkInfo &) const;"
<< be_nl << be_nl;
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_unmarshal__" << node->flat_name ()
- << " (TAO_InputCDR &);";
+ << " (TAO_InputCDR &, TAO_ChunkInfo &);";
}
else
{
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_marshal__" << node->flat_name ()
- << " (TAO_OutputCDR &) const = 0;"
+ << " (TAO_OutputCDR &, TAO_ChunkInfo &) const = 0;"
<< be_nl << be_nl;
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_unmarshal__" << node->flat_name ()
- << " (TAO_InputCDR &) = 0;";
+ << " (TAO_InputCDR &, TAO_ChunkInfo &) = 0;";
}
}
}
@@ -534,4 +541,3 @@ be_visitor_valuetype_ch::gen_supported_ops (be_interface *,
return 0;
}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
index 9d1532b259c..eed0287f2ff 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_ci.cpp
@@ -19,8 +19,8 @@
//
// ============================================================================
-ACE_RCSID (be_visitor_valuetype,
- valuetype_ci,
+ACE_RCSID (be_visitor_valuetype,
+ valuetype_ci,
"$Id$")
// **************************************************
@@ -56,8 +56,17 @@ be_visitor_valuetype_ci::visit_valuetype (be_valuetype *node)
<< "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << "ACE_INLINE" << be_nl;
- *os << node->name () << "::" << node->local_name () << " (void)" << be_nl
- << "{}" << be_nl << be_nl;
+ *os << node->name () << "::" << node->local_name () << " (void)" << be_nl;
+
+ if (node->truncatable())
+ {
+ *os << "{" << be_idt_nl
+ << "this->is_truncatable_ = true;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+ }
+ else
+ *os << "{}" << be_nl << be_nl;
+
*os << "ACE_INLINE const char* " << be_nl
<< node->name () << "::_tao_obv_static_repository_id ()" << be_nl
@@ -70,7 +79,7 @@ be_visitor_valuetype_ci::visit_valuetype (be_valuetype *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_ci::"
"visit_valuetype - "
- "codegen for scope failed\n"),
+ "codegen for scope failed\n"),
-1);
}
@@ -83,7 +92,7 @@ be_visitor_valuetype_ci::visit_valuetype (be_valuetype *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_ci::"
"visit_valuetype - "
- "failed to generate _init construct.\n"),
+ "failed to generate _init construct.\n"),
-1);
}
@@ -111,7 +120,7 @@ be_visitor_valuetype_ci::visit_field (be_field *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_ci::"
"visit_field - "
- "visit_field failed\n"),
+ "visit_field failed\n"),
-1);
}
}
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
index db8e1cfbccc..6d2c4cf2e96 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
@@ -113,6 +113,20 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< "return this->_tao_obv_static_repository_id ();" << be_uidt_nl
<< "}" << be_nl << be_nl;
+ *os << "void" << be_nl
+ << node->name () << "::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const" << be_nl
+ << "{" << be_idt_nl
+ << "ids.push_back (this->_tao_obv_static_repository_id ());";
+
+ if (node->truncatable ())
+ {
+ *os << be_nl;
+ *os << node->inherits_concrete ()->name () << "::_tao_obv_truncatable_repo_ids (ids);" << be_uidt_nl;
+ *os << "}" << be_nl << be_nl;
+ }
+ else
+ *os << be_uidt_nl << "}" << be_nl << be_nl;
+
if (be_global->any_support ())
{
*os << "void" << be_nl
@@ -143,10 +157,12 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
if (!node->is_abstract () && !is_an_amh_exception_holder)
{
// The virtual _tao_marshal_v method.
- *os << "::CORBA::Boolean " << node->name ()
- << "::_tao_marshal_v (TAO_OutputCDR & strm) const"
- << be_nl
+ *os << "::CORBA::Boolean " << be_nl
+ << node->name ()
+ << "::_tao_marshal_v (TAO_OutputCDR & strm) const" << be_nl
<< "{" << be_idt_nl
+ << "TAO_ChunkInfo ci(this->is_truncatable_ || this->chunking_);"
+ << be_nl
<< "return ";
if (node->opt_accessor ())
@@ -156,21 +172,24 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
*os << scope->name () << "::"
<< node->local_name ()
- << "::_tao_marshal_state (strm);" << be_uidt_nl;
+ << "::_tao_marshal_state (strm, ci);" << be_uidt_nl;
}
else
{
*os << "this->_tao_marshal__" << node->flat_name ()
- << " (strm);" << be_uidt_nl;
+ << " (strm, ci);" << be_uidt_nl;
}
*os << "}" << be_nl << be_nl;
// The virtual _tao_unmarshal_v method.
- *os << "::CORBA::Boolean " << node->name ()
+ *os << "::CORBA::Boolean " << be_nl
+ << node->name ()
<< "::_tao_unmarshal_v (TAO_InputCDR & strm)"
<< be_nl
<< "{" << be_idt_nl
+ << "TAO_ChunkInfo ci(this->is_truncatable_ || this->chunking_ ,1);"
+ << be_nl
<< "return ";
if (node->opt_accessor ())
@@ -180,15 +199,25 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
*os << scope->name () << "::"
<< node->local_name ()
- <<"::_tao_unmarshal_state (strm);" << be_uidt_nl;
+ <<"::_tao_unmarshal_state (strm,ci);" << be_uidt_nl;
}
else
{
*os << "this->_tao_unmarshal__" << node->flat_name ()
- << " (strm);" << be_uidt_nl;
+ << " (strm,ci);" << be_uidt_nl;
}
*os << "}" << be_nl << be_nl;
+
+ *os << "::CORBA::Boolean " << be_nl
+ << node->name ()
+ << "::_tao_match_formal_type (ptrdiff_t formal_type_id) const"
+ << be_nl
+ << "{" << be_idt_nl
+ << "return formal_type_id == reinterpret_cast<ptrdiff_t> ("
+ << node->name() << "::_downcast);" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
}
else if (is_an_amh_exception_holder)
{
@@ -213,19 +242,28 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< "return true;" << be_uidt_nl
<< "}" << be_nl << be_nl;
+ // The virtual _tao_match_formal_type method.
+ *os << "::CORBA::Boolean " << be_nl
+ << node->name ()
+ << "::_tao_match_formal_type (ptrdiff_t ) const"
+ << be_nl
+ << "{" << be_idt_nl
+ << "return 0;"<< be_uidt_nl
+ << "}" << be_nl << be_nl;
+
if (!node->opt_accessor () && !node->is_abstract ())
{
*os << "::CORBA::Boolean" << be_nl
<< node->name () << "::_tao_marshal__" << node->flat_name ()
- << " (TAO_OutputCDR &) const" << be_nl
+ << " (TAO_OutputCDR &, TAO_ChunkInfo&) const" << be_nl
<< "{" << be_idt_nl
<< "return true;" << be_uidt_nl
<< "}" << be_nl << be_nl;
*os << "::CORBA::Boolean" << be_nl
<< node->name () << "::_tao_unmarshal__" << node->flat_name ()
- << " (TAO_InputCDR &)" << be_nl
+ << " (TAO_InputCDR &, TAO_ChunkInfo&)" << be_nl
<< "{" << be_idt_nl
<< "return true;" << be_uidt_nl
<< "}" << be_nl << be_nl;
@@ -241,35 +279,20 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< ")" << be_uidt_nl
<< "{" << be_idt_nl
<< "::CORBA::ValueBase *base = 0;" << be_nl
- << "::CORBA::ValueFactory_var factory;" << be_nl
<< "::CORBA::Boolean retval =" << be_idt_nl
<< "::CORBA::ValueBase::_tao_unmarshal_pre (" << be_idt << be_idt_nl
<< "strm," << be_nl
- << "factory.out ()," << be_nl
<< "base," << be_nl
<< node->local_name () << "::_tao_obv_static_repository_id ()" << be_uidt_nl
<< ");" << be_uidt << be_uidt_nl << be_nl
- << "if (retval == false)" << be_idt_nl
- << "{" << be_idt_nl
- << "return false;" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl
- << "if (factory.in () != 0)" << be_idt_nl
- << "{" << be_idt_nl
- << "base = factory->create_for_unmarshal ();" << be_nl << be_nl
- << "if (base == 0)" << be_idt_nl
- << "{" << be_idt_nl
- << "return false; // %! except.?" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl
- << "retval = base->_tao_unmarshal_v (strm);" << be_nl << be_nl
- << "if (retval == false)" << be_idt_nl
- << "{" << be_idt_nl
- << "return false;" << be_uidt_nl
- << "}" << be_uidt << be_uidt_nl
- << "}" << be_uidt_nl << be_nl
+ << "if (!retval)" << be_idt_nl
+ << "return false;" << be_uidt_nl << be_nl
+ << "if (base != 0 && ! base->_tao_unmarshal_v (strm))" << be_idt_nl
+ << "return false;" << be_uidt_nl << be_nl
<< "// Now base must be null or point to the unmarshaled object." << be_nl
<< "// Align the pointer to the right subobject." << be_nl
<< "new_object = " << node->local_name () << "::_downcast (base);" << be_nl
- << "return retval;" << be_uidt_nl
+ << "return true;" << be_uidt_nl
<< "}";
// If we inherit from CORBA::Object and/or CORBA::AbstractBase
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
index 843711ebdb3..3a04f825b06 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_ch.cpp
@@ -174,9 +174,9 @@ be_visitor_valuetype_obv_ch::visit_valuetype (be_valuetype *node)
{
this->begin_public ();
}
-
+
*os << be_nl;
-
+
// Default constructor.
if (! node->is_nested ())
{
@@ -184,19 +184,19 @@ be_visitor_valuetype_obv_ch::visit_valuetype (be_valuetype *node)
}
*os << node->local_name () << " (void);";
-
+
// Initializing constructor.
if (node->has_member ())
{
*os << be_nl;
-
+
if (! node->is_nested ())
{
*os << "OBV_";
}
-
+
*os << node->local_name () << " (" << be_idt << be_idt;
-
+
unsigned long index = 0;
this->gen_obv_init_constructor_args (node, index);
@@ -221,16 +221,20 @@ be_visitor_valuetype_obv_ch::visit_valuetype (be_valuetype *node)
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_marshal__" << node->flat_name ()
- << " (TAO_OutputCDR &) const;" << be_nl << be_nl;
+ << " (TAO_OutputCDR &, TAO_ChunkInfo &) const;" << be_nl << be_nl;
*os << "virtual ::CORBA::Boolean" << be_nl
<< "_tao_unmarshal__" << node->flat_name ()
- << " (TAO_InputCDR &);" << be_nl << be_nl;
+ << " (TAO_InputCDR &, TAO_ChunkInfo &);" << be_nl << be_nl;
*os << "::CORBA::Boolean "
- << "_tao_marshal_state (TAO_OutputCDR &) const;" << be_nl
+ << "_tao_marshal_state (TAO_OutputCDR &, TAO_ChunkInfo &) const;"
+ << be_nl
<< "::CORBA::Boolean "
- << "_tao_unmarshal_state (TAO_InputCDR &);"
+ << "_tao_unmarshal_state (TAO_InputCDR &, TAO_ChunkInfo &);"
+ << be_nl
+ << "virtual void "
+ << "truncation_hook (void);"
<< be_uidt_nl << be_nl;
*os << "private:" << be_idt;
@@ -238,8 +242,9 @@ be_visitor_valuetype_obv_ch::visit_valuetype (be_valuetype *node)
this->gen_pd (node);
}
- *os << be_uidt_nl;
- *os << "};";
+ *os << be_nl
+ << "CORBA::Boolean require_truncation_;" << be_uidt_nl
+ << "};";
os->gen_endif ();
}
@@ -287,13 +292,13 @@ void
be_visitor_valuetype_obv_ch::begin_public (void)
{
AST_Decl::NodeType nt = this->ctx_->node ()->node_type ();
-
+
// These types are skipped in the OBV class.
if (nt == AST_Decl::NT_attr || nt == AST_Decl::NT_op)
{
return;
}
-
+
TAO_OutStream *os = this->ctx_->stream ();
*os << be_uidt_nl << be_nl
<< "public:" << be_idt;
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
index 9a77076dcfd..b5123ed6be4 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_obv_cs.cpp
@@ -65,7 +65,8 @@ be_visitor_valuetype_obv_cs::visit_valuetype (be_valuetype *node)
*os << "OBV_";
}
- *os << node->local_name () << " (void)" << be_nl
+ *os << node->local_name () << " (void)" << be_nl;
+ *os << ": require_truncation_ (false)" << be_nl
<< "{}" << be_nl << be_nl;
// Initializing constructor.
@@ -85,6 +86,7 @@ be_visitor_valuetype_obv_cs::visit_valuetype (be_valuetype *node)
*os << be_uidt_nl
<< ")" << be_uidt << be_uidt_nl
+ << ": require_truncation_ (false)" << be_nl
<< "{" << be_idt;
this->gen_obv_init_constructor_inits (node);
@@ -112,17 +114,17 @@ be_visitor_valuetype_obv_cs::visit_valuetype (be_valuetype *node)
*os << be_nl << be_nl << "::CORBA::Boolean" << be_nl
<< node->full_obv_skel_name ()
<< "::_tao_marshal__" << node->flat_name ()
- << " (TAO_OutputCDR &strm) const" << be_nl
+ << " (TAO_OutputCDR &strm, TAO_ChunkInfo& ci) const" << be_nl
<< "{" << be_idt_nl
- << "return _tao_marshal_state (strm);" << be_uidt_nl
+ << "return _tao_marshal_state (strm, ci);" << be_uidt_nl
<< "}" << be_nl << be_nl;
*os << "::CORBA::Boolean" << be_nl
<< node->full_obv_skel_name ()
<< "::_tao_unmarshal__" << node->flat_name ()
- << " (TAO_InputCDR &strm)" << be_nl
+ << " (TAO_InputCDR &strm, TAO_ChunkInfo& ci)" << be_nl
<< "{" << be_idt_nl
- << "return _tao_unmarshal_state (strm);" << be_uidt_nl
+ << "return _tao_unmarshal_state (strm, ci);" << be_uidt_nl
<< "}";
if (this->visit_scope (node) == -1)
@@ -201,7 +203,7 @@ be_visitor_valuetype_obv_cs::gen_obv_init_base_constructor_args (
be_valuetype::narrow_from_decl (parent);
this->gen_obv_init_base_constructor_args (be_parent, index);
}
-
+
for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls);
!si.is_done ();
si.next())
@@ -209,14 +211,14 @@ be_visitor_valuetype_obv_cs::gen_obv_init_base_constructor_args (
// be_attribute doesn't inherit from be_field (unlike the
// AST_* counterparts, so this screens attributes and operations.
be_field *f = be_field::narrow_from_decl (si.item ());
-
+
if (f == 0)
{
continue;
}
-
+
*os << (index++ != 0 ? "," : "") << be_nl
- << "_tao_init_" << f->local_name ();
+ << "_tao_init_" << f->local_name ();
}
}
@@ -234,24 +236,22 @@ be_visitor_valuetype_obv_cs::gen_obv_init_constructor_inits (
be_valuetype *be_parent = be_valuetype::narrow_from_decl (parent);
this->gen_obv_init_constructor_inits (be_parent);
}
-
+
for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls);
!si.is_done ();
si.next())
{
be_field *f = be_field::narrow_from_decl (si.item ());
-
+
// be_attribute doesn't inherit from be_field (unlike the
// AST_* counterparts, so this screens attributes and operations.
if (f == 0)
{
continue;
}
-
+
*os << be_nl
<< f->local_name () << " (_tao_init_" << f->local_name ()
<< ");";
}
}
-
-
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp
index cb45192558c..8c19388a325 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/cdr_op_ch.cpp
@@ -21,8 +21,8 @@
//
// ================================================================
-ACE_RCSID (be_visitor_valuetype_fwd,
- cdr_op_ch,
+ACE_RCSID (be_visitor_valuetype_fwd,
+ cdr_op_ch,
"$Id$")
be_visitor_valuetype_fwd_cdr_op_ch::be_visitor_valuetype_fwd_cdr_op_ch (
@@ -61,7 +61,7 @@ be_visitor_valuetype_fwd_cdr_op_ch::visit_valuetype_fwd (
TAO_OutStream *os = this->ctx_->stream ();
- be_valuetype *fvd =
+ be_valuetype *fvd =
be_valuetype::narrow_from_decl (node->full_definition ());
if (fvd->gen_helper_header () == -1)
@@ -69,7 +69,7 @@ be_visitor_valuetype_fwd_cdr_op_ch::visit_valuetype_fwd (
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_valuetype_fwd_cdr_op_ch::"
"visit_valuetype_fwd - "
- "codegen for helper functions failed\n"),
+ "codegen for helper functions failed\n"),
-1);
}
@@ -87,7 +87,7 @@ be_visitor_valuetype_fwd_cdr_op_ch::visit_valuetype_fwd (
*os << be_global->stub_export_macro ()
<< " ::CORBA::Boolean operator>> (TAO_InputCDR &, "
<< node->full_name () << " *&);" << be_nl;
-
+
*os << be_global->core_versioning_end () << be_nl;
node->cli_hdr_cdr_op_gen (true);
@@ -101,4 +101,3 @@ be_visitor_valuetype_fwd_cdr_op_ch::visit_eventtype_fwd (be_eventtype_fwd *node)
{
return this->visit_valuetype_fwd (node);
}
-
diff --git a/TAO/TAO_IDL/fe/fe_lookup.cpp b/TAO/TAO_IDL/fe/fe_lookup.cpp
index 2adb243ee60..d8cdc9349c4 100644
--- a/TAO/TAO_IDL/fe/fe_lookup.cpp
+++ b/TAO/TAO_IDL/fe/fe_lookup.cpp
@@ -3,14 +3,41 @@
#include "fe_private.h"
#include "ace/OS_NS_string.h"
-/* starting time is 2:40:07 */
/* C++ code produced by gperf version 2.8 (ACE version) */
-/* Command-line: /project/adaptive/ACE_wrappers/build/SunOS5.5/bin/gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$ fe/keywords.dat */
+/* Command-line: /lhome/cjohn/dev/DOC/ACE_wrappers_w/build/d1o0/bin/gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$ fe/keywords.dat */
unsigned int
TAO_IDL_CPP_Keyword_Table::hash (const char *str, unsigned int len)
{
static const unsigned char asso_values[] =
{
+#if defined (ACE_MVS)
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 15,
+ 35, 65, 0, 0, 35, 5, 0, 60, 252, 252,
+ 252, 252, 252, 252, 252, 252, 0, 30, 0, 5,
+ 5, 20, 50, 40, 252, 252, 252, 252, 252, 252,
+ 252, 252, 20, 110, 0, 45, 35, 95, 55, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+ 252, 252, 252, 252, 252, 252,
+#else
252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
@@ -24,11 +51,12 @@ TAO_IDL_CPP_Keyword_Table::hash (const char *str, unsigned int len)
0, 0, 35, 5, 0, 60, 252, 0, 30, 0,
5, 5, 20, 50, 40, 20, 110, 0, 45, 35,
95, 55, 252, 252, 252, 252, 252, 252,
+#endif /* ACE_MVS */
};
return len + asso_values[(int) str[1]] + asso_values[(int) str[0]] + asso_values[(int) str[len - 1]];
}
-const TAO_IDL_CPP_Keyword_Entry *
+const struct TAO_IDL_CPP_Keyword_Entry *
TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
{
enum
@@ -39,12 +67,13 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
MIN_HASH_VALUE = 6,
MAX_HASH_VALUE = 251,
HASH_VALUE_RANGE = 246,
- DUPLICATES = 0
+ DUPLICATES = 0,
+ WORDLIST_SIZE = 80
};
- static const TAO_IDL_CPP_Keyword_Entry wordlist[] =
+ static const struct TAO_IDL_CPP_Keyword_Entry wordlist[] =
{
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"delete", "_cxx_delete"},
{"mutable", "_cxx_mutable"},
{"",0},
@@ -55,33 +84,33 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
{"unsigned", "_cxx_unsigned"},
{"",0},
{"union", "_cxx_union"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"goto", "_cxx_goto"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"and", "_cxx_and"},
{"auto", "_cxx_auto"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"namespace", "_cxx_namespace"},
{"using", "_cxx_using"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"else", "_cxx_else"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"asm", "_cxx_asm"},
{"",0},
{"while", "_cxx_while"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"new", "_cxx_new"},
{"long", "_cxx_long"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"return", "_cxx_return"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"void", "_cxx_void"},
{"false", "_cxx_false"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"volatile", "_cxx_volatile"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"switch", "_cxx_switch"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"not_eq", "_cxx_not_eq"},
{"private", "_cxx_private"},
{"",0},
@@ -105,17 +134,17 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
{"signed", "_cxx_signed"},
{"or", "_cxx_or"},
{"register", "_cxx_register"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"public", "_cxx_public"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"or_eq", "_cxx_or_eq"},
{"bitand", "_cxx_bitand"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"compl", "_cxx_compl"},
{"extern", "_cxx_extern"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"char", "_cxx_char"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"default", "_cxx_default"},
{"template", "_cxx_template"},
{"",0},
@@ -123,55 +152,55 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
{"sizeof", "_cxx_sizeof"},
{"",0},
{"not", "_cxx_not"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"if", "_cxx_if"},
{"",0},
{"this", "_cxx_this"},
{"short", "_cxx_short"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"bitor", "_cxx_bitor"},
{"",0},
{"virtual", "_cxx_virtual"},
{"xor", "_cxx_xor"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"throw", "_cxx_throw"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"true", "_cxx_true"},
{"",0},
{"xor_eq", "_cxx_xor_eq"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"reinterpret_cast", "_cxx_reinterpret_cast"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"typeid", "_cxx_typeid"},
{"",0},
{"typename", "_cxx_typename"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"dynamic_cast", "_cxx_dynamic_cast"},
{"int", "_cxx_int"},
{"",0},
{"float", "_cxx_float"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"const", "_cxx_const"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"const_cast", "_cxx_const_cast"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"",0},
{"static", "_cxx_static"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},
{"typedef", "_cxx_typedef"},
{"try", "_cxx_try"},
- {"",0}, {"",0},
+ {"",0},{"",0},
{"export", "_cxx_export"},
{"",0},
{"explicit", "_cxx_explicit"},
- {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},
{"wchar_t", "_cxx_wchar_t"},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
- {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
+ {"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},{"",0},
{"",0},
{"struct", "_cxx_struct"},
- {"",0}, {"",0}, {"",0}, {"",0},
+ {"",0},{"",0},{"",0},{"",0},
{"static_cast", "_cxx_static_cast"},
};
@@ -181,15 +210,11 @@ TAO_IDL_CPP_Keyword_Table::lookup (const char *str, unsigned int len)
if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
{
- if (len == static_cast<unsigned int> (ACE_OS::strlen (wordlist[key].keyword_)))
- {
- const char *s = wordlist[key].keyword_;
+ const char *s = wordlist[key].keyword_;
- if (*str == *s && !ACE_OS::strncmp (str + 1, s + 1, len - 1))
- return &wordlist[key];
- }
+ if (len == static_cast<unsigned int> (ACE_OS::strlen (s)) && *str == *s && !ACE_OS::strncmp (str + 1, s + 1, len - 1))
+ return &wordlist[key];
}
}
return 0;
}
-/* ending time is 2:40:07 */
diff --git a/TAO/TAO_IDL/fe/idl.yy b/TAO/TAO_IDL/fe/idl.yy
index 46eb5e1ac98..6f313270540 100644
--- a/TAO/TAO_IDL/fe/idl.yy
+++ b/TAO/TAO_IDL/fe/idl.yy
@@ -847,17 +847,6 @@ value_header :
{
// value_header : value_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
-
- if ($2 != 0 && $2->truncatable ())
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("warning in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("truncatable modifier not supported ")
- ACE_TEXT ("and is ignored\n")));
- }
}
supports_spec
{
@@ -5185,17 +5174,6 @@ event_rest_of_header :
{
// event_rest_of_header : inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
-
- if ($1 != 0 && $1->truncatable ())
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("warning in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("truncatable modifier not supported ")
- ACE_TEXT ("and is ignored\n")));
- }
}
supports_spec
{
diff --git a/TAO/TAO_IDL/fe/y.tab.cpp b/TAO/TAO_IDL/fe/y.tab.cpp
index d39fc8c66e0..6acb820bfa3 100644
--- a/TAO/TAO_IDL/fe/y.tab.cpp
+++ b/TAO/TAO_IDL/fe/y.tab.cpp
@@ -2708,17 +2708,6 @@ tao_yyreduce:
{
// value_header : value_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
-
- if (tao_yyvsp[0].nlval != 0 && tao_yyvsp[0].nlval->truncatable ())
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("warning in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("truncatable modifier not supported ")
- ACE_TEXT ("and is ignored\n")));
- }
}
break;
@@ -7477,16 +7466,6 @@ tao_yyreduce:
// event_rest_of_header : inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- if (tao_yyvsp[0].nlval != 0 && tao_yyvsp[0].nlval->truncatable ())
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("warning in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("truncatable modifier not supported ")
- ACE_TEXT ("and is ignored\n")));
- }
}
break;
@@ -7851,4 +7830,3 @@ tao_yyerror (const char *msg)
"%s\n",
msg));
}
-
diff --git a/TAO/docs/Options.html b/TAO/docs/Options.html
index c5151b03d56..22197133429 100644
--- a/TAO/docs/Options.html
+++ b/TAO/docs/Options.html
@@ -531,11 +531,18 @@ is <code>0</code>. This option is disabled (<code>0</code>) by default.</td>
Note: If none of the preferred interfaces apply to an outgoing connection
then they will not be enforced. For this option to have
any effect, therefore, the connection through a legal preferred interface must fail.
- </tr>
+ </tr>
<tr>
<td><code>-ORBKeepalive</code> <em>boolean (0|1)</em></td>
- <td><a name="-ORBKeepalive"></a>This option allows users to
- specify that the SO_KEEPALIVE option is set on TCP sockets.
+ <td><a name="-ORBKeepalive"></a>This option allows users to specify
+ that the SO_KEEPALIVE option is set on TCP sockets used by IIOP.
+ The default is <code>0</code> (false).
+ </td>
+ </tr>
+ <tr>
+ <td><code>-ORBDontRoute</code> <em>boolean (0|1)</em></td>
+ <td><a name="-ORBDontRoute"></a>This option allows users to specify
+ that the SO_DONTROUTE option is set on TCP sockets used by IIOP.
The default is <code>0</code> (false).
</td>
</tr>
@@ -694,6 +701,16 @@ listen endpoints should be encoded into IORs when <code>-ORBUseIMR</code>
is set. The default is true. </td>
</tr>
<tr>
+ <td><code>-ORBUseParallelConnects</code> <em>boolean (0|1)</em></td>
+ <td><a name="-ORBUseParallelConnects"></a>This option allows users to
+ specify the ORB attempt to connect simultaniously to all endpoints
+ listed in profiles, rather than stepping through individual endpoints,
+ trying and possibly failing, before moving on to the next. For this
+ feature to work, the server must be using shared profiles.
+ The default is <code>0</code> (false).
+ </td>
+ </tr>
+ <tr>
<td><code>-ORBUseSharedProfile</code> <em>boolean (0|1)</em></td>
<td><a name="-ORBUseSharedProfile"></a>
This option allows multiple implicit or explicit endpoints to be
@@ -707,6 +724,18 @@ is set. The default is true. </td>
</td>
</tr>
<tr>
+ <td><code>-ORBParallelConnectDelay</code> <em>unsigned long msec</em></td>
+ <td><a name="-ORBParallelConnectDelay"></a>When using parallel
+ connection attempts, this option defines the number of milliseconds to
+ delay when polling previously started connection attempts. If a server
+ is likely to be busy, this client side option will help avoid creating
+ redundant connections that must be accepted, only to be closed a moment
+ later. However, if the first reachable endpoint is far down the list,
+ this option will increase the delay before that endpoint is reached.
+ The default is <code>0</code>.
+ </td>
+ </tr>
+ <tr>
<td><code>-ORBPreferIPV6Interfaces</code> <em>boolean (0|1)</em></td>
<td><a name="-ORBPreferIPV6Interfaces"></a>
If option is <CODE>1</CODE> (true) it directs the default
diff --git a/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.cpp b/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.cpp
index 4fc119dfc39..2cd8117b443 100644
--- a/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.cpp
+++ b/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.cpp
@@ -68,7 +68,7 @@ Server_IORInterceptor::components_established (
void
Server_IORInterceptor::adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId,
+ const char *,
PortableInterceptor::AdapterState
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.h b/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.h
index a77551ad136..da243325d05 100644
--- a/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.h
+++ b/TAO/orbsvcs/examples/ORT/Server_IORInterceptor.h
@@ -55,7 +55,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp
index 6af1cad1b42..3f555d17a5c 100644
--- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp
+++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.cpp
@@ -95,7 +95,7 @@ TAO_LB_IORInterceptor::components_established (
void
TAO_LB_IORInterceptor::adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId,
+ const char *,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h
index ca4b6f7ea01..6b93c951912 100644
--- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h
+++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_IORInterceptor.h
@@ -92,7 +92,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.cpp
index 829ca0cdef9..804e235f797 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.cpp
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.cpp
@@ -38,8 +38,8 @@ TAO_GOA::create_id_for_reference (CORBA::Object_ptr the_ref
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
- PortableServer::ObjectId_var obj_id = this->reference_to_id (obj_ref.in ()
- ACE_ENV_ARG_PARAMETER);
+ PortableServer::ObjectId_var obj_id =
+ this->reference_to_id (obj_ref.in () ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
// Associate the object reference with the group reference.
@@ -102,23 +102,23 @@ TAO_GOA::disassociate_reference_with_id (CORBA::Object_ptr ref,
TAO_GOA::TAO_GOA (const TAO_Root_POA::String &name,
- TAO_POA_Manager &poa_manager,
- const TAO_POA_Policy_Set &policies,
- TAO_Root_POA *parent,
- ACE_Lock &lock,
- TAO_SYNCH_MUTEX &thread_lock,
- TAO_ORB_Core &orb_core,
- TAO_Object_Adapter *object_adapter
- ACE_ENV_ARG_DECL)
+ PortableServer::POAManager_ptr poa_manager,
+ const TAO_POA_Policy_Set &policies,
+ TAO_Root_POA *parent,
+ ACE_Lock &lock,
+ TAO_SYNCH_MUTEX &thread_lock,
+ TAO_ORB_Core &orb_core,
+ TAO_Object_Adapter *object_adapter
+ ACE_ENV_ARG_DECL)
: TAO_Regular_POA (name,
- poa_manager,
- policies,
- parent,
- lock,
- thread_lock,
- orb_core,
- object_adapter
- ACE_ENV_ARG_PARAMETER)
+ poa_manager,
+ policies,
+ parent,
+ lock,
+ thread_lock,
+ orb_core,
+ object_adapter
+ ACE_ENV_ARG_PARAMETER)
{
}
@@ -128,27 +128,27 @@ TAO_GOA::~TAO_GOA (void)
TAO_Root_POA *
TAO_GOA::new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
- const TAO_POA_Policy_Set &policies,
- TAO_Root_POA *parent,
- ACE_Lock &lock,
- TAO_SYNCH_MUTEX &thread_lock,
- TAO_ORB_Core &orb_core,
- TAO_Object_Adapter *object_adapter
- ACE_ENV_ARG_DECL)
+ PortableServer::POAManager_ptr poa_manager,
+ const TAO_POA_Policy_Set &policies,
+ TAO_Root_POA *parent,
+ ACE_Lock &lock,
+ TAO_SYNCH_MUTEX &thread_lock,
+ TAO_ORB_Core &orb_core,
+ TAO_Object_Adapter *object_adapter
+ ACE_ENV_ARG_DECL)
{
TAO_GOA *poa = 0;
ACE_NEW_THROW_EX (poa,
TAO_GOA (name,
- poa_manager,
- policies,
- parent,
- lock,
- thread_lock,
- orb_core,
- object_adapter
- ACE_ENV_ARG_PARAMETER),
+ poa_manager,
+ policies,
+ parent,
+ lock,
+ thread_lock,
+ orb_core,
+ object_adapter
+ ACE_ENV_ARG_PARAMETER),
CORBA::NO_MEMORY ());
ACE_CHECK_RETURN (0);
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.h b/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.h
index 12af8d574a5..d5bbdeb04dd 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.h
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/GOA.h
@@ -264,7 +264,7 @@ public:
// End standard POA interface methods.
TAO_GOA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -282,7 +282,7 @@ protected:
/// Template method for creating new POA's of this type.
virtual TAO_Root_POA *new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp
index 1c2b3a94b21..4b3504795e2 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.cpp
@@ -15,7 +15,7 @@ TAO_PG_Servant_Dispatcher::~TAO_PG_Servant_Dispatcher (void)
TAO_Root_POA *
TAO_PG_Servant_Dispatcher::create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h
index c8c80d87a7f..a5718c240cc 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Servant_Dispatcher.h
@@ -57,7 +57,7 @@ public:
/// Factory method for creating new POA's.
TAO_Root_POA *create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp b/TAO/orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp
index edb16fd97b9..74b6cb25967 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Constraint_Visitors.cpp
@@ -243,7 +243,7 @@ visit_exist (TAO_Unary_Constraint* unary_exist)
{
TAO_Property_Constraint* operand =
(TAO_Property_Constraint*) unary_exist->operand ();
- TAO_String_Hash_Key property_name ((const char*) operand->name ());
+ CORBA::String_var property_name ((const char*) operand->name ());
// Determine if a property is defined on this offer.
@@ -1151,7 +1151,7 @@ TAO_Constraint_Validator::extract_type (TAO_Constraint* expr,
if (type == TAO_IDENT)
{
TAO_Property_Constraint* prop = (TAO_Property_Constraint*) expr;
- TAO_String_Hash_Key prop_name (prop->name ());
+ CORBA::String_var prop_name (prop->name ());
if (this->type_map_.find (prop_name, return_value) == 0)
type = TAO_Literal_Constraint::comparable_type (return_value);
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.cpp b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.cpp
index 8ee0351020a..993d47ad0e0 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.cpp
@@ -1,53 +1,9 @@
// $Id$
#include "orbsvcs/Trader/Interpreter_Utils.h"
-#include "ace/ACE.h"
-#include "ace/OS_NS_string.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-// = Methods to deal with ACE_Hash_Map_Manager.
-
-TAO_String_Hash_Key::TAO_String_Hash_Key (void)
-{
-}
-
-TAO_String_Hash_Key::TAO_String_Hash_Key (char * name)
- : CORBA::String_var (name)
-{
-}
-
-TAO_String_Hash_Key::TAO_String_Hash_Key (const char * name)
- : CORBA::String_var (name)
-{
-}
-
-TAO_String_Hash_Key::TAO_String_Hash_Key (const CORBA::String_var &src)
- : CORBA::String_var (src)
-{
-}
-
-bool
-TAO_String_Hash_Key::operator == (const TAO_String_Hash_Key &hash_key) const
-{
- return ACE_OS::strcmp (this->in (), hash_key.in ()) == 0;
-}
-
-bool
-operator < (const TAO_String_Hash_Key &left,
- const TAO_String_Hash_Key &right)
-{
- return ACE_OS::strcmp (left.in (), right.in ()) < 0;
-}
-
-
-u_long
-TAO_String_Hash_Key::hash (void) const
-{
- u_long ret = ACE::hash_pjw (this->in ());
- return ret;
-}
-
// TAO_Sequence_Extracter_Base
CORBA::TCKind
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
index bd076791149..e59fa4a10ab 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
@@ -15,6 +15,9 @@
#include "ace/Hash_Map_Manager.h"
#include "ace/Null_Mutex.h"
+#include "ace/Functor.h"
+#include "ace/ACE.h"
+#include "ace/OS_NS_string.h"
#include "tao/AnyTypeCode/TypeCode.h"
#include "tao/CORBA_String.h"
@@ -24,53 +27,49 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-// = Classes to deal with the ACE_Hash_Map_Manager.
-
-/**
- * Key for the Hash Table. The EXT_ID of the
- * ACE_Hash_Map_Manager.
- */
-class TAO_Trading_Serv_Export TAO_String_Hash_Key : public CORBA::String_var
+template<>
+class TAO_Trading_Serv_Export ACE_Hash<CORBA::String_var>
{
public:
- // = Initialization and termination methods.
- TAO_String_Hash_Key (void);
- // Default constructor.
-
- TAO_String_Hash_Key (char * name);
- // Constructor from a const string.
-
- TAO_String_Hash_Key (const char * name);
- // Constructor from a const string.
-
- TAO_String_Hash_Key (const CORBA::String_var &hash_key);
- // Copy constructor.
-
- bool operator == (const TAO_String_Hash_Key &hash_key) const;
- // The operator for hash binding and "find"ing.
-
- friend bool operator < (const TAO_String_Hash_Key &left,
- const TAO_String_Hash_Key &right);
- // The operator for hash binding and "find"ing.
+ unsigned long operator () (const CORBA::String_var& string) const
+ {
+ unsigned long ret = ACE::hash_pjw (string.in ());
+ return ret;
+ }
+};
- u_long hash (void) const;
- // The function that computes a hash value.
+template<>
+class TAO_Trading_Serv_Export ACE_Less_Than<CORBA::String_var>
+{
+public:
+ int operator () (const CORBA::String_var &lhs,
+ const CORBA::String_var &rhs) const
+ {
+ return ACE_OS::strcmp (lhs.in (), rhs.in ()) < 0;
+ }
};
-#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
- template class TAO_Trading_Serv_Export TAO::String_var <char>;
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+template<>
+class TAO_Trading_Serv_Export ACE_Equal_To<CORBA::String_var>
+{
+public:
+ int operator () (const CORBA::String_var &lhs,
+ const CORBA::String_var &rhs) const
+ {
+ return ACE_OS::strcmp (lhs.in (), rhs.in ()) == 0;
+ }
+};
-typedef ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key,
+typedef ACE_Hash_Map_Manager_Ex<CORBA::String_var,
int,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
TAO_Lookup_Table;
-typedef ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key,
+typedef ACE_Hash_Map_Manager_Ex<CORBA::String_var,
CORBA::TypeCode_ptr,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
TAO_Typecode_Table;
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.cpp b/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.cpp
index 367f7b9a9c5..9401c5366c0 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.cpp
@@ -52,7 +52,7 @@ insert_offer (const char* type, CosTrading::Offer* offer)
{
CosTrading::OfferId return_value = 0;
ACE_TYPENAME Offer_Database::ENTRY* database_entry = 0;
- TAO_String_Hash_Key service_type (type);
+ CORBA::String_var service_type (type);
ACE_READ_GUARD_RETURN (LOCK_TYPE, ace_mon, this->db_lock_, 0);
@@ -102,7 +102,7 @@ remove_offer (const char* type, CORBA::ULong id)
int return_value = -1;
ACE_TYPENAME Offer_Database::ENTRY* db_entry = 0;
- TAO_String_Hash_Key service_type (type);
+ CORBA::String_var service_type (type);
if (this->offer_db_.find (service_type, db_entry) == 0)
{
@@ -220,7 +220,7 @@ lookup_offer (const char* type, CORBA::ULong id)
CosTrading::Offer* return_value = 0;
ACE_TYPENAME Offer_Database::ENTRY* db_entry = 0;
- TAO_String_Hash_Key service_type (type);
+ CORBA::String_var service_type (type);
if (this->offer_db_.find (service_type, db_entry) == 0)
{
@@ -325,7 +325,7 @@ TAO_Service_Offer_Iterator (const char* type,
offer_iter_ (0),
type_ (type)
{
- TAO_String_Hash_Key service_type (type);
+ CORBA::String_var service_type (type);
if (this->stm_.db_lock_.acquire_read () == -1)
return;
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.h b/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.h
index b7ad154a2ef..3087ea49d94 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Offer_Database.h
@@ -102,10 +102,10 @@ public:
typedef ACE_Hash_Map_Manager_Ex
<
- TAO_String_Hash_Key,
+ CORBA::String_var,
Offer_Map_Entry*,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex
>
Offer_Database;
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
index f596627fda1..106cc5e3045 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
@@ -101,7 +101,7 @@ add_type (const char *name,
this->incarnation_);
// Check if the service type already exists.
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
if (this->type_map_.find (type_name) == 0)
ACE_THROW_RETURN (CosTradingRepos::ServiceTypeRepository::ServiceTypeExists (),
this->incarnation_);
@@ -259,7 +259,7 @@ describe_type (const char * name
ACE_CHECK_RETURN (0);
// Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
Service_Type_Map::ENTRY *type_entry = 0;
if (this->type_map_.find (type_name,
type_entry) == -1)
@@ -304,7 +304,7 @@ fully_describe_type (const char *name
ACE_CHECK_RETURN (0);
// Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
Service_Type_Map::ENTRY *type_entry = 0;
if (this->type_map_.find (type_name,
type_entry) == -1)
@@ -349,7 +349,7 @@ mask_type (const char *name
ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
// Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
Service_Type_Map::ENTRY *type_entry = 0;
if (this->type_map_.find (type_name,
type_entry) != -1)
@@ -380,7 +380,7 @@ unmask_type (const char *name
ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
// Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
Service_Type_Map::ENTRY *type_entry = 0;
if (this->type_map_.find (type_name,
type_entry) != -1)
@@ -419,7 +419,7 @@ fully_describe_type_i (const CosTradingRepos::ServiceTypeRepository::TypeStruct
Service_Type_Map::ENTRY *type_entry = 0;
iterator.next (next_type_name);
- TAO_String_Hash_Key hash_key (const_cast<const char *> (*next_type_name));
+ CORBA::String_var hash_key (const_cast<const char *> (*next_type_name));
this->type_map_.find (hash_key,
type_entry);
@@ -450,7 +450,7 @@ fully_describe_type_i (const CosTradingRepos::ServiceTypeRepository::TypeStruct
Service_Type_Map::ENTRY *type_entry = 0;
iterator.next (next_type_name);
- TAO_String_Hash_Key hash_key (const_cast<const char *> (*next_type_name));
+ CORBA::String_var hash_key (const_cast<const char *> (*next_type_name));
this->type_map_.find (hash_key,
type_entry);
@@ -481,7 +481,7 @@ collect_inheritance_hierarchy (const CosTradingRepos::ServiceTypeRepository::Typ
i--)
{
Service_Type_Map::ENTRY *next_type_entry = 0;
- TAO_String_Hash_Key next_type_name (type_struct.super_types[i]);
+ CORBA::String_var next_type_name (type_struct.super_types[i]);
if (this->type_map_.find (next_type_name, next_type_entry) != -1)
{
@@ -515,7 +515,7 @@ validate_properties (Prop_Map &prop_map,
ACE_THROW (CosTrading::IllegalPropertyName (n));
else
{
- TAO_String_Hash_Key prop_name (n);
+ CORBA::String_var prop_name (n);
CosTradingRepos::ServiceTypeRepository::PropStruct *prop_val =
const_cast<CosTradingRepos::ServiceTypeRepository::PropStruct *> (&props[i]);
@@ -546,7 +546,7 @@ validate_supertypes (Service_Type_Map &super_map,
ACE_THROW (CosTrading::IllegalServiceType (type));
else
{
- TAO_String_Hash_Key hash_type (type);
+ CORBA::String_var hash_type (type);
Service_Type_Map::ENTRY *type_entry = 0;
if (this->type_map_.find (hash_type,
@@ -576,7 +576,7 @@ validate_inheritance (Prop_Map &prop_map,
i++)
{
Service_Type_Map::ENTRY *super_type_entry = 0;
- TAO_String_Hash_Key super_type (super_types[i]);
+ CORBA::String_var super_type (super_types[i]);
CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq place_holder;
CosTradingRepos::ServiceTypeRepository::PropStructSeq super_props;
@@ -597,7 +597,7 @@ validate_inheritance (Prop_Map &prop_map,
j++)
{
Prop_Map::ENTRY *existing_prop = 0;
- TAO_String_Hash_Key prop_name (super_props[j].name);
+ CORBA::String_var prop_name (super_props[j].name);
if (prop_map.bind (prop_name,
&super_props[j],
@@ -688,7 +688,7 @@ update_type_map (const char *name,
psbuf,
1);
*/
- TAO_String_Hash_Key type_name (name);
+ CORBA::String_var type_name (name);
this->type_map_.bind (type_name, type);
}
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
index 013061face7..4f5b959b216 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
@@ -232,24 +232,24 @@ private:
CORBA::Boolean has_subtypes_;
};
- typedef ACE_Hash_Map_Manager_Ex <TAO_String_Hash_Key,
+ typedef ACE_Hash_Map_Manager_Ex <CORBA::String_var,
CosTradingRepos::ServiceTypeRepository::PropStruct *,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
Prop_Map;
- typedef ACE_Hash_Map_Manager_Ex <TAO_String_Hash_Key,
+ typedef ACE_Hash_Map_Manager_Ex <CORBA::String_var,
Type_Info *,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
Service_Type_Map;
- typedef ACE_Hash_Map_Iterator_Ex<TAO_String_Hash_Key,
+ typedef ACE_Hash_Map_Iterator_Ex<CORBA::String_var,
Type_Info *,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
Service_Type_Map_Iterator;
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader.h b/TAO/orbsvcs/orbsvcs/Trader/Trader.h
index 33206bd58fb..61b18d38c72 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader.h
@@ -498,7 +498,7 @@ protected:
// hard time with it like that when compiling TAO_Service_Offer_Iterator.
typedef ACE_Hash_Map_Manager_Ex<CORBA::ULong, CosTrading::Offer*, ACE_Hash<CORBA::ULong>, ACE_Equal_To<CORBA::ULong>, ACE_Null_Mutex> TAO_Offer_Map;
-typedef ACE_Unbounded_Set<TAO_String_Hash_Key> TAO_String_Set;
+typedef ACE_Unbounded_Set<CORBA::String_var> TAO_String_Set;
typedef ACE_Unbounded_Queue<char*> TAO_String_Queue;
// = Helpful operators.
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp b/TAO/orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp
index 89c0ec8e1e5..818934b10bb 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Constraint_Visitors.cpp
@@ -16,7 +16,7 @@ TAO_Trader_Constraint_Evaluator (CosTrading::Offer* offer,
// Create a map of property names to their values.
for (int i = 0; i < length; i++)
{
- TAO_String_Hash_Key name = (const char*) offer->properties[i].name;
+ CORBA::String_var name = (const char*) offer->properties[i].name;
this->props_.bind (name, i);
}
}
@@ -27,7 +27,7 @@ visit_property (TAO_Property_Constraint* literal)
{
int return_value = -1, prop_index = 0;
// Handle case where property is not, in fact, mapped to a value
- TAO_String_Hash_Key prop_name ((const char*) literal->name ());
+ CORBA::String_var prop_name ((const char*) literal->name ());
if (this->props_.find (prop_name, prop_index) == 0)
{
@@ -71,7 +71,7 @@ TAO_Trader_Constraint_Validator
CORBA::TypeCode_ptr corba_type =
CORBA::TypeCode::_duplicate (prop_seq[i].value_type.in ());
- TAO_String_Hash_Key prop_name_str = (const char*) prop_seq[i].name;
+ CORBA::String_var prop_name_str = (const char*) prop_seq[i].name;
this->type_map_.bind (prop_name_str, corba_type);
}
}
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp
index fbc7e07777b..6ddef432010 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp
@@ -1686,7 +1686,7 @@ add_link (const char *name,
ACE_THROW (CosTrading::Link::IllegalLinkName (name));
// Ensure this isn't a duplicate link name.
- TAO_String_Hash_Key link_name (name);
+ CORBA::String_var link_name (name);
if (this->links_.find (link_name) == 0)
ACE_THROW (CosTrading::Link::DuplicateLinkName (name));
@@ -1736,7 +1736,7 @@ remove_link (const char *name
ACE_THROW (CosTrading::Link::IllegalLinkName (name));
// Ensure this isn't a duplicate link name.
- TAO_String_Hash_Key link_name (name);
+ CORBA::String_var link_name (name);
if (this->links_.find (link_name) == -1)
ACE_THROW (CosTrading::Link::UnknownLinkName (name));
@@ -1758,7 +1758,7 @@ TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::describe_link (const char *name
// Ensure this isn't a duplicate link name.
ACE_TYPENAME Links::ENTRY* link_entry = 0;
- TAO_String_Hash_Key link_name (name);
+ CORBA::String_var link_name (name);
if (this->links_.find (link_name, link_entry) == -1)
ACE_THROW_RETURN (CosTrading::Link::UnknownLinkName (name),
0);
@@ -1827,7 +1827,7 @@ modify_link (const char *name,
// Ensure this isn't a duplicate link name.
ACE_TYPENAME Links::ENTRY* link_entry = 0;
- TAO_String_Hash_Key link_name (name);
+ CORBA::String_var link_name (name);
if (this->links_.find (link_name, link_entry) == -1)
ACE_THROW (CosTrading::Link::UnknownLinkName (name));
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h
index 6c86c7a4840..2b1db71d3bc 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h
@@ -921,10 +921,10 @@ private:
typedef ACE_Hash_Map_Manager_Ex
<
- TAO_String_Hash_Key,
+ CORBA::String_var,
CosTrading::Link::LinkInfo,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
MAP_LOCK_TYPE
>
Links;
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp
index afd9e8a8b7b..585519e1ec8 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp
@@ -7,6 +7,13 @@ ACE_RCSID(Trader, Trader_Utils, "$Id$")
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+bool
+operator== (CORBA::String_var const & lhs,
+ CORBA::String_var const & rhs)
+{
+ return (ACE_OS::strcmp (lhs.in (), rhs.in ()) == 0);
+}
+
TAO_Policy_Creator::TAO_Policy_Creator (int num_policies)
: policies_ (num_policies),
num_policies_ (0)
@@ -348,7 +355,7 @@ TAO_Property_Evaluator_By_Name (const CosTrading::PropertySeq& properties
if (! TAO_Trader_Base::is_valid_property_name (prop.name))
ACE_THROW (CosTrading::IllegalPropertyName (prop.name));
- TAO_String_Hash_Key prop_name = prop.name.in ();
+ CORBA::String_var prop_name = prop.name.in ();
if (this->table_.bind (prop_name, i))
ACE_THROW (CosTrading::DuplicatePropertyName (prop.name));
}
@@ -363,7 +370,7 @@ TAO_Property_Evaluator_By_Name(CosTrading::Offer& offer,
for (int i = 0; i < length; i++)
{
- TAO_String_Hash_Key prop_name = (const char*) this->props_[i].name;
+ CORBA::String_var prop_name = (const char*) this->props_[i].name;
this->table_.bind (prop_name, i);
}
}
@@ -374,7 +381,7 @@ is_dynamic_property(const char* property_name)
{
int predicate = 0;
int index = 0;
- TAO_String_Hash_Key prop_name (property_name);
+ CORBA::String_var prop_name (property_name);
// If the property name is in the map, delegate evaluation to our
// superclass. Otherwise, throw an exception.
@@ -391,7 +398,7 @@ TAO_Property_Evaluator_By_Name::property_value (const char* property_name
{
int index = 0;
CORBA::Any* prop_value = 0;
- TAO_String_Hash_Key prop_name (property_name);
+ CORBA::String_var prop_name (property_name);
// If the property name is in the map, delegate evaluation to our
// superclass. Otherwise, throw an exception.
@@ -410,7 +417,7 @@ CORBA::TypeCode_ptr
TAO_Property_Evaluator_By_Name::property_type (const char* property_name)
{
int index = 0;
- TAO_String_Hash_Key prop_name (property_name);
+ CORBA::String_var prop_name (property_name);
CORBA::TypeCode_ptr prop_type = CORBA::TypeCode::_nil();
// If the property name is in the map, delegate evaluation to our
@@ -426,7 +433,7 @@ TAO_Property_Evaluator_By_Name::get_property (const char* property_name)
{
int index = 0;
CosTrading::Property* property = 0;
- TAO_String_Hash_Key prop_name (property_name);
+ CORBA::String_var prop_name (property_name);
if (this->table_.find (prop_name, index) == 0)
property = (CosTrading::Property *) &this->props_[index];
@@ -1050,7 +1057,7 @@ TAO_Offer_Modifier (const char* type_name,
// Create a mapping of property names to their types.
for (i = 0; i < pstructs_length; i++)
{
- TAO_String_Hash_Key prop_name = pstructs[i].name.in ();
+ CORBA::String_var prop_name = pstructs[i].name.in ();
CORBA::TypeCode_ptr type_code =
CORBA::TypeCode::_duplicate (pstructs[i].value_type.in ());
this->prop_types_.bind (prop_name, type_code);
@@ -1064,13 +1071,13 @@ TAO_Offer_Modifier (const char* type_name,
if (pstructs[i].mode ==
CosTradingRepos::ServiceTypeRepository::PROP_MANDATORY)
{
- TAO_String_Hash_Key prop_name (pname);
+ CORBA::String_var prop_name (pname);
this->mandatory_.insert (prop_name);
}
else if (pstructs[i].mode ==
CosTradingRepos::ServiceTypeRepository::PROP_READONLY)
{
- TAO_String_Hash_Key prop_name (pname);
+ CORBA::String_var prop_name (pname);
this->readonly_.insert (prop_name);
}
}
@@ -1078,7 +1085,7 @@ TAO_Offer_Modifier (const char* type_name,
// Insert the indices of the offer properties into a map.
for (i = 0; i < props_length; i++)
{
- TAO_String_Hash_Key prop_name =
+ CORBA::String_var prop_name =
static_cast<const char*> (prop_seq[i].name);
this->props_.bind (prop_name, &prop_seq[i]);
}
@@ -1116,7 +1123,7 @@ delete_properties (const CosTrading::PropertyNameSeq& deletes
ACE_THROW (CosTrading::IllegalPropertyName (dname));
else
{
- TAO_String_Hash_Key prop_name (dname);
+ CORBA::String_var prop_name (dname);
if (this->mandatory_.find (prop_name) == 0)
ACE_THROW (CosTrading::Register::MandatoryProperty (this->type_, dname));
else if (delete_me.insert (prop_name) == 1)
@@ -1129,7 +1136,7 @@ delete_properties (const CosTrading::PropertyNameSeq& deletes
// Delete those properties from the offer.
for (i = 0; i < length; i++)
{
- TAO_String_Hash_Key prop_name =
+ CORBA::String_var prop_name =
static_cast<const char *> (deletes[i]);
this->props_.unbind (prop_name);
}
@@ -1156,7 +1163,7 @@ merge_properties (const CosTrading::PropertySeq& modifies
const char* mname = modifies[i].name;
if (TAO_Trader_Base::is_valid_property_name (mname))
{
- TAO_String_Hash_Key prop_name (mname);
+ CORBA::String_var prop_name (mname);
if (this->readonly_.find (prop_name) == 0)
{
// Can't assign a dynamic property to a property with
@@ -1213,7 +1220,7 @@ TAO_Offer_Modifier::affect_change (const CosTrading::PropertySeq& modifies)
for (i = 0; i < merge_length; i++)
{
Property_Table::ENTRY* entry = 0;
- TAO_String_Hash_Key prop_name = modifies[i].name.in ();
+ CORBA::String_var prop_name = modifies[i].name.in ();
CosTrading::Property* prop =
const_cast<CosTrading::Property*> (&modifies[i]);
@@ -1237,7 +1244,7 @@ TAO_Offer_Modifier::affect_change (const CosTrading::PropertySeq& modifies)
{
CosTrading::Property* prop_value = 0;
const char* name = this->offer_->properties[i].name;
- TAO_String_Hash_Key prop_name (name);
+ CORBA::String_var prop_name (name);
if (this->props_.unbind (prop_name, prop_value) == 0)
prop_seq[num_modified++] = *prop_value;
}
@@ -1246,7 +1253,7 @@ TAO_Offer_Modifier::affect_change (const CosTrading::PropertySeq& modifies)
{
CosTrading::Property* prop_value = 0;
const char* name = modifies[i].name;
- TAO_String_Hash_Key prop_name (name);
+ CORBA::String_var prop_name (name);
if (this->props_.unbind (prop_name, prop_value) == 0)
prop_seq[num_modified++] = *prop_value;
}
@@ -1282,7 +1289,7 @@ TAO_Offer_Filter::TAO_Offer_Filter (TAO_Policies& policies
if (exact_type_match == 1)
{
- TAO_String_Hash_Key exact_match
+ CORBA::String_var exact_match
(TAO_Policies::POLICY_NAMES[TAO_Policies::EXACT_TYPE_MATCH]);
this->limits_.insert (exact_match);
}
@@ -1303,7 +1310,7 @@ configure_type (CosTradingRepos::ServiceTypeRepository::TypeStruct* type_struct)
if (mode == CosTradingRepos::ServiceTypeRepository::PROP_MANDATORY_READONLY ||
mode == CosTradingRepos::ServiceTypeRepository::PROP_READONLY)
{
- TAO_String_Hash_Key prop_name ((const char*) prop_seq[i].name);
+ CORBA::String_var prop_name ((const char*) prop_seq[i].name);
this->not_mod_props_.insert (prop_name);
}
}
@@ -1312,9 +1319,9 @@ configure_type (CosTradingRepos::ServiceTypeRepository::TypeStruct* type_struct)
CORBA::Boolean
TAO_Offer_Filter::ok_to_consider (CosTrading::Offer* offer)
{
- TAO_String_Hash_Key use_mods =
+ CORBA::String_var use_mods =
TAO_Policies::POLICY_NAMES[TAO_Policies::USE_MODIFIABLE_PROPERTIES];
- TAO_String_Hash_Key use_dyns =
+ CORBA::String_var use_dyns =
TAO_Policies::POLICY_NAMES[TAO_Policies::USE_DYNAMIC_PROPERTIES];
CORBA::Boolean return_value = 1;
TAO_Property_Evaluator prop_eval (*offer);
@@ -1333,7 +1340,7 @@ TAO_Offer_Filter::ok_to_consider (CosTrading::Offer* offer)
{
// Determine if this property name is found in the set
// of modifiable properties for the type being considered.
- TAO_String_Hash_Key prop_name ((const char*) offer->properties[i].name);
+ CORBA::String_var prop_name ((const char*) offer->properties[i].name);
if (this->not_mod_props_.find (prop_name) == -1)
{
this->limits_.insert (use_mods);
@@ -1363,7 +1370,7 @@ TAO_Offer_Filter::ok_to_consider (CosTrading::Offer* offer)
this->search_card_--;
if (this->search_card_ == 0)
{
- TAO_String_Hash_Key search_card =
+ CORBA::String_var search_card =
TAO_Policies::POLICY_NAMES[TAO_Policies::SEARCH_CARD];
this->limits_.insert (search_card);
}
@@ -1386,14 +1393,14 @@ TAO_Offer_Filter::matched_offer (void)
if (this->match_card_ == 0)
{
- TAO_String_Hash_Key match_card =
+ CORBA::String_var match_card =
TAO_Policies::POLICY_NAMES[TAO_Policies::MATCH_CARD];
this->limits_.insert (match_card);
}
if (this->return_card_ == 0)
{
- TAO_String_Hash_Key return_card =
+ CORBA::String_var return_card =
TAO_Policies::POLICY_NAMES[TAO_Policies::MATCH_CARD];
this->limits_.insert (return_card);
}
@@ -1423,7 +1430,7 @@ TAO_Offer_Filter::limits_applied (void)
! p_iter.done ();
p_iter.advance ())
{
- TAO_String_Hash_Key* policy_name_ptr = 0;
+ CORBA::String_var* policy_name_ptr = 0;
p_iter.next (policy_name_ptr);
temp[i++] = CORBA::string_dup (policy_name_ptr->in ());
}
@@ -1451,7 +1458,7 @@ TAO_Property_Filter (const SPECIFIED_PROPS& desired_props
// Check for errors or duplicates
if (TAO_Trader_Base::is_valid_property_name (pname))
{
- TAO_String_Hash_Key prop_name (pname);
+ CORBA::String_var prop_name (pname);
if (this->props_.insert (prop_name) == 1)
ACE_THROW (CosTrading::DuplicatePropertyName (pname));
}
@@ -1497,7 +1504,7 @@ TAO_Property_Filter::filter_offer (CosTrading::Offer* source,
else
{
const char* p_name = s_props[i].name;
- TAO_String_Hash_Key prop_name (p_name);
+ CORBA::String_var prop_name (p_name);
// Save those property that match.
if (this->props_.find (prop_name) == 0)
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h
index a79c30f8136..70b5717dde7 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h
@@ -621,10 +621,10 @@ private:
TAO_Offer_Modifier (const TAO_Offer_Modifier&);
TAO_Offer_Modifier& operator= (const TAO_Offer_Modifier&);
- typedef ACE_Hash_Map_Manager_Ex <TAO_String_Hash_Key,
+ typedef ACE_Hash_Map_Manager_Ex <CORBA::String_var,
CosTrading::Property *,
- ACE_Hash<TAO_String_Hash_Key>,
- ACE_Equal_To<TAO_String_Hash_Key>,
+ ACE_Hash<CORBA::String_var>,
+ ACE_Equal_To<CORBA::String_var>,
ACE_Null_Mutex>
Property_Table;
@@ -639,7 +639,8 @@ private:
/// The set of readonly and mandatory property names in the offer's
/// type.
- TAO_String_Set readonly_, mandatory_;
+ TAO_String_Set readonly_;
+ TAO_String_Set mandatory_;
/// A reference to the offer undergoing change.
CosTrading::Offer* offer_;
diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp
index 69b09769a0a..07d956ef648 100644
--- a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp
@@ -281,8 +281,8 @@ Client::run (void)
flow_protocol_str,
this->protocol_,
&addr);
- flow_spec [0] = entry.entry_to_string ();
flow_spec.length (1);
+ flow_spec [0] = entry.entry_to_string ();
ACE_DEBUG ((LM_DEBUG, "(%N,%l) Flowspec: %s\n", entry.entry_to_string() ));
AVStreams::MMDevice_var client_mmdevice
diff --git a/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp
index 4639308b102..7aac2982793 100644
--- a/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp
+++ b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp
@@ -265,8 +265,8 @@ Client::init (int argc,
entry.set_peer_addr (peer_addr);
AVStreams::flowSpec flow_spec (1);
- flow_spec [0] = CORBA::string_dup (entry.entry_to_string ());
flow_spec.length (1);
+ flow_spec [0] = CORBA::string_dup (entry.entry_to_string ());
AVStreams::MMDevice_var client_mmdevice =
this->client_mmdevice_._this (ACE_ENV_SINGLE_ARG_PARAMETER);
diff --git a/TAO/orbsvcs/tests/Trading/TTest.idl b/TAO/orbsvcs/tests/Trading/TTest.idl
index 756f057e266..d518aa1b58f 100644
--- a/TAO/orbsvcs/tests/Trading/TTest.idl
+++ b/TAO/orbsvcs/tests/Trading/TTest.idl
@@ -7,9 +7,9 @@ module TAO_Trader_Test
interface Remote_Output
{
- void confirm ();
// Ensure that the object reference returned from the query actually
// works.
+ void confirm ();
};
interface Plotter : Remote_Output
@@ -29,15 +29,14 @@ interface PostScript_Printer : Remote_Output
};
// Sequences used to test sequence type equivalence in the trader.
-typedef CORBA::ShortSeq ShortSeq;
-typedef CORBA::UShortSeq UShortSeq;
-typedef CORBA::LongSeq LongSeq;
-typedef CORBA::ULongSeq ULongSeq;
-typedef CORBA::BooleanSeq BooleanSeq;
-typedef CORBA::FloatSeq FloatSeq;
-typedef CORBA::DoubleSeq DoubleSeq;
-typedef CORBA::StringSeq StringSeq;
-
+typedef sequence<short> ShortSeq;
+typedef sequence<unsigned short> UShortSeq;
+typedef sequence<long> LongSeq;
+typedef sequence<unsigned long> ULongSeq;
+typedef sequence<boolean> BooleanSeq;
+typedef sequence<float> FloatSeq;
+typedef sequence<double> DoubleSeq;
+typedef sequence<string> StringSeq;
};
diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip.cpp b/TAO/performance-tests/AMI_Latency/Roundtrip.cpp
deleted file mode 100644
index c9e68d98406..00000000000
--- a/TAO/performance-tests/AMI_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(AMI_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip.h b/TAO/performance-tests/AMI_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/AMI_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp b/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp
deleted file mode 100644
index 5f0061601e4..00000000000
--- a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip_Handler.h"
-
-ACE_RCSID(AMI_Latency, Roundtrip, "$Id$")
-
-Roundtrip_Handler::Roundtrip_Handler (int expected_callbacks)
- : pending_callbacks_ (expected_callbacks)
-{
-}
-
-int
-Roundtrip_Handler::pending_callbacks (void) const
-{
- return this->pending_callbacks_;
-}
-
-void
-Roundtrip_Handler::dump_results (ACE_UINT32 gsf)
-{
- this->latency_stats_.dump_results ("AMI Latency", gsf);
-}
-
-void
-Roundtrip_Handler::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->pending_callbacks_--;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- this->latency_stats_.sample (now - send_time);
-}
-
-void
-Roundtrip_Handler::test_method_excep (Test::AMI_RoundtripExceptionHolder *holder
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_TRY
- {
- this->pending_callbacks_--;
- holder->raise_test_method (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "test_method:");
- }
- ACE_ENDTRY;
-}
-
-void
-Roundtrip_Handler::shutdown (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
-}
-
-void
-Roundtrip_Handler::shutdown_excep (Test::AMI_RoundtripExceptionHolder *holder
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_TRY
- {
- holder->raise_shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "shutdown:");
- }
- ACE_ENDTRY;
-}
diff --git a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h b/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h
deleted file mode 100644
index fca18bf989f..00000000000
--- a/TAO/performance-tests/AMI_Latency/Roundtrip_Handler.h
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_HANDLER_H
-#define ROUNDTRIP_HANDLER_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-#include "ace/Basic_Stats.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip_Handler
- : public virtual POA_Test::AMI_RoundtripHandler
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip_Handler (int expected_callbacks);
-
- /// Return the number of pending callbacks
- int pending_callbacks (void) const;
-
- /// Dump the results
- void dump_results (ACE_UINT32 gsf);
-
- // = The skeleton methods
- virtual void test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
- virtual void test_method_excep (Test::AMI_RoundtripExceptionHolder *holder
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
- virtual void shutdown_excep (Test::AMI_RoundtripExceptionHolder *holder
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// The number of callbacks not received yet
- int pending_callbacks_;
-
- /// Collect the latency results
- ACE_Basic_Stats latency_stats_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/AMI_Latency/Server_Task.cpp b/TAO/performance-tests/AMI_Latency/Server_Task.cpp
deleted file mode 100644
index 6df92f32a3f..00000000000
--- a/TAO/performance-tests/AMI_Latency/Server_Task.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// $Id$
-//
-#include "Server_Task.h"
-
-ACE_RCSID(AMI_Latency, Server_Task, "$Id$")
-
-Server_Task::Server_Task (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-int
-Server_Task::svc (void)
-{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY {} ACE_ENDTRY;
- return 0;
-}
diff --git a/TAO/performance-tests/AMI_Latency/client.cpp b/TAO/performance-tests/AMI_Latency/client.cpp
deleted file mode 100644
index 0d396c4b67b..00000000000
--- a/TAO/performance-tests/AMI_Latency/client.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-// $Id$
-
-#include "Roundtrip_Handler.h"
-#include "tao/debug.h"
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-
-ACE_RCSID(AMI_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-
-ACE_hrtime_t throughput_base;
-
-int niterations = 1000;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "k:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-p <period (msecs)> "
- "-b <burst size> "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
-
- for (int j = 0; j < 100; ++j)
- {
- ACE_hrtime_t start = 0;
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- Roundtrip_Handler *roundtrip_handler_impl;
- ACE_NEW_RETURN (roundtrip_handler_impl,
- Roundtrip_Handler (niterations),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_handler_impl);
-
- Test::AMI_RoundtripHandler_var roundtrip_handler =
- roundtrip_handler_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
-
- for (int i = 0; i != niterations; ++i)
- {
- // Invoke asynchronous operation....
- roundtrip->sendc_test_method (roundtrip_handler.in (),
- ACE_OS::gethrtime ()
- ACE_ENV_ARG_PARAMETER);
- if (orb->work_pending (ACE_ENV_SINGLE_ARG_PARAMETER))
- orb->perform_work (ACE_ENV_SINGLE_ARG_PARAMETER);
-
- ACE_TRY_CHECK;
- }
-
- ACE_Time_Value tv (0, 2000);
-
- while (roundtrip_handler_impl->pending_callbacks ())
- {
- orb->perform_work (tv ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- roundtrip_handler_impl->dump_results (gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- niterations);
-
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught: ");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/AMI_Latency/server.cpp b/TAO/performance-tests/AMI_Latency/server.cpp
deleted file mode 100644
index 74498dc13e0..00000000000
--- a/TAO/performance-tests/AMI_Latency/server.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "Server_Task.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(AMI_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-int nthreads = 4;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:n:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case 'n':
- nthreads = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile> "
- "-n <nthreads> "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
-
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
-
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
-
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Server_Task server_task (orb.in ());
- if (server_task.activate (THR_NEW_LWP | THR_JOINABLE,
- nthreads) != 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot activate server threads\n"),
- 1);
-
- server_task.thr_mgr ()->wait ();
-
- ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/DII_Latency/Roundtrip.cpp b/TAO/performance-tests/DII_Latency/Roundtrip.cpp
deleted file mode 100644
index df15cd65d8a..00000000000
--- a/TAO/performance-tests/DII_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(DII_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/DII_Latency/Roundtrip.h b/TAO/performance-tests/DII_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/DII_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/DII_Latency/client.cpp b/TAO/performance-tests/DII_Latency/client.cpp
deleted file mode 100644
index 57935526269..00000000000
--- a/TAO/performance-tests/DII_Latency/client.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-// $Id$
-
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-#include "ace/Sample_History.h"
-
-#include "tao/Strategies/advanced_resource.h"
-#include "tao/DynamicInterface/Request.h"
-
-ACE_RCSID(DII_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 100;
-int do_dump_history = 0;
-int do_shutdown = 1;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "hxk:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'h':
- do_dump_history = 1;
- break;
-
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-x (disable shutdown) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (object.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil CORBA::Object reference <%s>\n",
- ior),
- 1);
- }
-
- for (int j = 0; j < 100; ++j)
- {
- CORBA::Request_var request =
- object->_request ("test_method" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::ULongLong dummy = 0;
- request->add_in_arg("send_time") <<= dummy;
-
- request->set_return_type (CORBA::_tc_ulonglong);
- request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- ACE_Sample_History history (niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
- for (int i = 0; i < niterations; ++i)
- {
- CORBA::ULongLong start = ACE_OS::gethrtime ();
-
- CORBA::Request_var request =
- object->_request ("test_method" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- request->add_in_arg("send_time") <<= start;
-
- request->set_return_type (CORBA::_tc_ulonglong);
- request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- history.sample (now - start);
- }
-
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "test finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- if (do_dump_history)
- {
- history.dump_samples ("HISTORY", gsf);
- }
-
- ACE_Basic_Stats stats;
- history.collect_basic_stats (stats);
- stats.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- stats.samples_count ());
-
- if (do_shutdown)
- {
- CORBA::Request_var request =
- object->_request ("shutdown" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/DII_Latency/server.cpp b/TAO/performance-tests/DII_Latency/server.cpp
deleted file mode 100644
index e96f0ff595a..00000000000
--- a/TAO/performance-tests/DII_Latency/server.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Single_Threaded_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/DSI_Latency/Roundtrip.cpp b/TAO/performance-tests/DSI_Latency/Roundtrip.cpp
deleted file mode 100644
index 6de5cfe047a..00000000000
--- a/TAO/performance-tests/DSI_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-#include "tao/DynamicInterface/Server_Request.h"
-
-ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-void
-Roundtrip::invoke (CORBA::ServerRequest_ptr request
- ACE_ENV_ARG_DECL)
-{
- if (ACE_OS::strcmp ("shutdown", request->operation ()) == 0)
- {
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- return;
- }
-
- else if (ACE_OS::strcmp ("_is_a", request->operation ()) == 0)
- {
- CORBA::NVList_ptr list;
- this->orb_->create_list (0, list ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- CORBA::Any type_id (CORBA::_tc_string);
- list->add_value ("type_id", type_id, CORBA::ARG_IN
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- request->arguments (list ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- CORBA::NamedValue_ptr nv = list->item (0 ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- const char *arg;
- *(nv->value ()) >>= arg;
-
- CORBA::Boolean type_matches = 0;
- if (ACE_OS::strcmp (arg, "IDL:Test/Roundtrip:1.0") == 0
- || ACE_OS::strcmp (arg, "IDL:omg.org/CORBA/Object:1.0") == 0
- || ACE_OS::strcmp (arg, "") == 0)
- type_matches = 1;
-
- CORBA::Any result;
- result <<= CORBA::Any::from_boolean (type_matches);
-
- request->set_result (result ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- return;
- }
-
- else if (ACE_OS::strcmp ("test_method", request->operation ()) == 0)
- {
- CORBA::NVList_ptr list;
- this->orb_->create_list (0, list ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- CORBA::Any send_time (CORBA::_tc_ulonglong);
- list->add_value ("send_time", send_time, CORBA::ARG_IN
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- request->arguments (list ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- CORBA::NamedValue_ptr nv = list->item (0 ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- request->set_result (*(nv->value ()) ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- return;
- }
-
- CORBA::Any bad_operation;
- CORBA::BAD_OPERATION exception;
- bad_operation <<= exception;
- request->set_exception (bad_operation ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-}
-
-CORBA::RepositoryId
-Roundtrip::_primary_interface (const PortableServer::ObjectId &,
- PortableServer::POA_ptr
- ACE_ENV_ARG_DECL_NOT_USED)
-{
- return CORBA::string_dup ("IDL:Test/Roundtrip:1.0");
-}
diff --git a/TAO/performance-tests/DSI_Latency/Roundtrip.h b/TAO/performance-tests/DSI_Latency/Roundtrip.h
deleted file mode 100644
index b57cedc6f2d..00000000000
--- a/TAO/performance-tests/DSI_Latency/Roundtrip.h
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "tao/DynamicInterface/Dynamic_Implementation.h"
-#include "tao/PortableServer/PortableServer.h"
-#include "tao/corba.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual PortableServer::DynamicImplementation
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The DSI methods
- virtual void invoke (CORBA::ServerRequest_ptr request
- ACE_ENV_ARG_DECL);
- virtual CORBA::RepositoryId _primary_interface (
- const PortableServer::ObjectId &oid,
- PortableServer::POA_ptr poa
- ACE_ENV_ARG_DECL);
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/DSI_Latency/client.cpp b/TAO/performance-tests/DSI_Latency/client.cpp
deleted file mode 100644
index 2a264e91b43..00000000000
--- a/TAO/performance-tests/DSI_Latency/client.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-// $Id$
-
-#include "TestC.h"
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-#include "ace/Sample_History.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(DSI_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 100;
-int do_dump_history = 0;
-int do_shutdown = 1;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "hxk:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'h':
- do_dump_history = 1;
- break;
-
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-x (disable shutdown) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
- }
-
- for (int j = 0; j < 100; ++j)
- {
- ACE_hrtime_t start = 0;
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- ACE_Sample_History history (niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
- for (int i = 0; i < niterations; ++i)
- {
- ACE_hrtime_t start = ACE_OS::gethrtime ();
-
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- history.sample (now - start);
- }
-
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "test finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- if (do_dump_history)
- {
- history.dump_samples ("HISTORY", gsf);
- }
-
- ACE_Basic_Stats stats;
- history.collect_basic_stats (stats);
- stats.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- stats.samples_count ());
-
- if (do_shutdown)
- {
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/DSI_Latency/server.cpp b/TAO/performance-tests/DSI_Latency/server.cpp
deleted file mode 100644
index ebc70ade1d7..00000000000
--- a/TAO/performance-tests/DSI_Latency/server.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(DSI_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- PortableServer::ObjectId_var oid =
- root_poa->activate_object (roundtrip_impl
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var roundtrip =
- root_poa->id_to_reference (oid.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp b/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp
deleted file mode 100644
index 72f83576b44..00000000000
--- a/TAO/performance-tests/Deferred_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/Deferred_Latency/Roundtrip.h b/TAO/performance-tests/Deferred_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/Deferred_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/Deferred_Latency/client.cpp b/TAO/performance-tests/Deferred_Latency/client.cpp
deleted file mode 100644
index 8aa94d94172..00000000000
--- a/TAO/performance-tests/Deferred_Latency/client.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-// $Id$
-
-#include "TestC.h"
-
-#include "tao/DynamicInterface/Request.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-#include "ace/Sample_History.h"
-
-ACE_RCSID(Deferred_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 1000;
-int burst = 10;
-int do_shutdown = 1;
-int do_dump_history = 0;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "hxk:i:b:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'h':
- do_dump_history = 1;
- break;
-
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case 'b':
- burst = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-b <burst> "
- "-x (disable shutdown) "
- "-h (dump history) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
- }
-
- for (int j = 0; j < 100; ++j)
- {
- ACE_hrtime_t start = 0;
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- ACE_Sample_History history (niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
-
- CORBA::Request_var *request;
- ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
-
- for (int i = 0; i < niterations; ++i)
- {
- int j;
-
- for (j = 0; j != burst; ++j)
- {
- CORBA::ULongLong start = ACE_OS::gethrtime ();
-
- request[j] =
- roundtrip->_request ("test_method"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- request[j]->add_in_arg () <<= start;
- request[j]->set_return_type (CORBA::_tc_ulonglong);
-
- request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- for (j = 0; j != burst; ++j)
- {
- request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::ULongLong retval;
- if ((request[j]->return_value () >>= retval) == 1)
- {
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- history.sample (now - retval);
- }
- }
- }
- delete[] request;
-
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "test finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- if (do_dump_history)
- {
- history.dump_samples ("HISTORY", gsf);
- }
-
- ACE_Basic_Stats stats;
- history.collect_basic_stats (stats);
- stats.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- stats.samples_count ());
-
- if (do_shutdown)
- {
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Caught exception:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Deferred_Latency/server.cpp b/TAO/performance-tests/Deferred_Latency/server.cpp
deleted file mode 100644
index e96f0ff595a..00000000000
--- a/TAO/performance-tests/Deferred_Latency/server.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Single_Threaded_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile b/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile
deleted file mode 100644
index 6abeb8554f4..00000000000
--- a/TAO/performance-tests/RTCorba/Multiple_Endpoints/Endpoint_Per_Priority/Makefile
+++ /dev/null
@@ -1,616 +0,0 @@
-#----------------------------------------------------------------------------
-#
-# $Id$
-#
-#----------------------------------------------------------------------------
-
-#----------------------------------------------------------------------------
-# Local macros
-#----------------------------------------------------------------------------
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif # ! TAO_ROOT
-
-LDLIBS = -lRTCORBA_Common -lTAO_Strategies -lTAO_PortableServer -lTAO
-
-BIN_UNCHECKED = server client
-
-CLIENT_OBJS = client.o
-SERVER_OBJS = server.o
-
-BUILD = $(BIN)
-VLDLIBS = $(LDLIBS:%=%$(VAR))
-VBIN = $(BIN:%=%$(VAR))
-SRC=$(CLIENT_OBJS:.o=.cpp) $(SERVER_OBJS:.o=.cpp)
-CPPFLAGS += -I../Common
-
-#----------------------------------------------------------------------------
-# Include macros and targets
-#----------------------------------------------------------------------------
-
-include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
-include $(ACE_ROOT)/include/makeinclude/macros.GNU
-include $(TAO_ROOT)/rules.tao.GNU
-
-ifeq ($(rt_corba),1)
- ifeq ($(minimum_corba),0)
- BIN=$(BIN_UNCHECKED)
- endif # minimum_corba
-endif # rt_corba
-
-include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
-include $(TAO_ROOT)/taoconfig.mk
-
-#----------------------------------------------------------------------------
-# Local targets
-#----------------------------------------------------------------------------
-
-server: $(addprefix $(VDIR),$(SERVER_OBJS))
- $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
-
-client: $(addprefix $(VDIR),$(CLIENT_OBJS))
- $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
-
-realclean: clean
-
-# DO NOT DELETE THIS LINE -- g++dep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-
-
-.obj/client.o .obj/client.o .obj/client.o .obj/client.o: client.cpp ../Common/testC.h \
- $(TAO_ROOT)/tao/corba.h \
- $(ACE_ROOT)/ace/pre.h \
- $(ACE_ROOT)/ace/post.h \
- $(ACE_ROOT)/ace/ACE_export.h \
- $(ACE_ROOT)/ace/svc_export.h \
- $(ACE_ROOT)/ace/ace_wchar.h \
- $(ACE_ROOT)/ace/ace_wchar.inl \
- $(ACE_ROOT)/ace/OS_Errno.h \
- $(ACE_ROOT)/ace/OS_Export.h \
- $(ACE_ROOT)/ace/OS_Errno.inl \
- $(TAO_ROOT)/tao/corbafwd.h \
- $(ACE_ROOT)/ace/CDR_Base.h \
- $(ACE_ROOT)/ace/Basic_Types.h \
- $(ACE_ROOT)/ace/Basic_Types.i \
- $(ACE_ROOT)/ace/Message_Block.h \
- $(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/OS.h \
- $(ACE_ROOT)/ace/OS_Dirent.h \
- $(ACE_ROOT)/ace/OS_Dirent.inl \
- $(ACE_ROOT)/ace/OS_String.h \
- $(ACE_ROOT)/ace/OS_String.inl \
- $(ACE_ROOT)/ace/OS_Memory.h \
- $(ACE_ROOT)/ace/OS_Memory.inl \
- $(ACE_ROOT)/ace/OS_TLI.h \
- $(ACE_ROOT)/ace/OS_TLI.inl \
- $(ACE_ROOT)/ace/Min_Max.h \
- $(ACE_ROOT)/ace/streams.h \
- $(ACE_ROOT)/ace/Trace.h \
- $(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Flag_Manip.h \
- $(ACE_ROOT)/ace/Flag_Manip.i \
- $(ACE_ROOT)/ace/Handle_Ops.h \
- $(ACE_ROOT)/ace/Handle_Ops.i \
- $(ACE_ROOT)/ace/Lib_Find.h \
- $(ACE_ROOT)/ace/Lib_Find.i \
- $(ACE_ROOT)/ace/Init_ACE.h \
- $(ACE_ROOT)/ace/Init_ACE.i \
- $(ACE_ROOT)/ace/Sock_Connect.h \
- $(ACE_ROOT)/ace/Sock_Connect.i \
- $(ACE_ROOT)/ace/ACE.i \
- $(ACE_ROOT)/ace/Malloc.h \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \
- $(ACE_ROOT)/ace/Malloc.i \
- $(ACE_ROOT)/ace/Malloc_T.h \
- $(ACE_ROOT)/ace/Synch.h \
- $(ACE_ROOT)/ace/Synch.i \
- $(ACE_ROOT)/ace/Synch_T.h \
- $(ACE_ROOT)/ace/Synch_T.i \
- $(ACE_ROOT)/ace/Thread.h \
- $(ACE_ROOT)/ace/Thread_Adapter.h \
- $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
- $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \
- $(ACE_ROOT)/ace/Thread_Adapter.inl \
- $(ACE_ROOT)/ace/Thread.i \
- $(ACE_ROOT)/ace/Atomic_Op.i \
- $(ACE_ROOT)/ace/Synch_T.cpp \
- $(ACE_ROOT)/ace/Malloc_Allocator.h \
- $(ACE_ROOT)/ace/Malloc_Base.h \
- $(ACE_ROOT)/ace/Malloc_Allocator.i \
- $(ACE_ROOT)/ace/Free_List.h \
- $(ACE_ROOT)/ace/Free_List.i \
- $(ACE_ROOT)/ace/Free_List.cpp \
- $(ACE_ROOT)/ace/Malloc_T.i \
- $(ACE_ROOT)/ace/Malloc_T.cpp \
- $(ACE_ROOT)/ace/Memory_Pool.h \
- $(ACE_ROOT)/ace/Event_Handler.h \
- $(ACE_ROOT)/ace/Event_Handler.i \
- $(ACE_ROOT)/ace/Signal.h \
- $(ACE_ROOT)/ace/Signal.i \
- $(ACE_ROOT)/ace/Mem_Map.h \
- $(ACE_ROOT)/ace/Mem_Map.i \
- $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
- $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
- $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
- $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
- $(ACE_ROOT)/ace/Unbounded_Set.h \
- $(ACE_ROOT)/ace/Node.h \
- $(ACE_ROOT)/ace/Node.cpp \
- $(ACE_ROOT)/ace/Unbounded_Set.inl \
- $(ACE_ROOT)/ace/Unbounded_Set.cpp \
- $(ACE_ROOT)/ace/Memory_Pool.i \
- $(ACE_ROOT)/ace/Message_Block.i \
- $(ACE_ROOT)/ace/Message_Block_T.h \
- $(ACE_ROOT)/ace/Message_Block_T.i \
- $(ACE_ROOT)/ace/Message_Block_T.cpp \
- $(ACE_ROOT)/ace/CDR_Base.inl \
- $(TAO_ROOT)/tao/try_macros.h \
- $(TAO_ROOT)/tao/orbconf.h \
- $(ACE_ROOT)/ace/CORBA_macros.h \
- $(TAO_ROOT)/tao/varbase.h \
- $(TAO_ROOT)/tao/TAO_Export.h \
- $(TAO_ROOT)/tao/corbafwd.i \
- $(TAO_ROOT)/tao/Typecode.h \
- $(TAO_ROOT)/tao/Exception.h \
- $(ACE_ROOT)/ace/SString.h \
- $(ACE_ROOT)/ace/SString.i \
- $(TAO_ROOT)/tao/Exception.i \
- $(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/CDR.h \
- $(ACE_ROOT)/ace/CDR_Stream.h \
- $(ACE_ROOT)/ace/CDR_Stream.i \
- $(TAO_ROOT)/tao/CDR.i \
- $(TAO_ROOT)/tao/Environment.h \
- $(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
- $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/Any.i \
- $(TAO_ROOT)/tao/NVList.h \
- $(ACE_ROOT)/ace/Unbounded_Queue.h \
- $(ACE_ROOT)/ace/Unbounded_Queue.inl \
- $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
- $(TAO_ROOT)/tao/NVList.i \
- $(TAO_ROOT)/tao/LocalObject.h \
- $(TAO_ROOT)/tao/LocalObject.i \
- $(TAO_ROOT)/tao/Principal.h \
- $(TAO_ROOT)/tao/OctetSeqC.h \
- $(TAO_ROOT)/tao/Sequence.h \
- $(TAO_ROOT)/tao/Managed_Types.h \
- $(TAO_ROOT)/tao/Managed_Types.i \
- $(TAO_ROOT)/tao/Sequence.i \
- $(TAO_ROOT)/tao/Sequence_T.h \
- $(TAO_ROOT)/tao/Sequence_T.i \
- $(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/OctetSeqC.i \
- $(TAO_ROOT)/tao/Principal.i \
- $(TAO_ROOT)/tao/ORB.h \
- $(TAO_ROOT)/tao/Services.h \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/CORBA_String.h \
- $(TAO_ROOT)/tao/CORBA_String.inl \
- $(TAO_ROOT)/tao/PolicyC.h \
- $(TAO_ROOT)/tao/Encodable.h \
- $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/CurrentC.i \
- $(TAO_ROOT)/tao/PolicyC.i \
- $(TAO_ROOT)/tao/ORB.i \
- $(TAO_ROOT)/tao/BoundsC.h \
- $(TAO_ROOT)/tao/BoundsC.i \
- $(TAO_ROOT)/tao/ValueBase.h \
- $(TAO_ROOT)/tao/ValueBase.i \
- $(TAO_ROOT)/tao/ValueFactory.h \
- $(TAO_ROOT)/tao/ValueFactory.i \
- $(TAO_ROOT)/tao/DomainC.h \
- $(TAO_ROOT)/tao/DomainC.i \
- $(TAO_ROOT)/tao/WrongTransactionC.h \
- $(TAO_ROOT)/tao/Object_KeyC.h \
- $(TAO_ROOT)/tao/Object_KeyC.i \
- $(TAO_ROOT)/tao/ObjectIDList.h \
- $(TAO_ROOT)/tao/ObjectIDList.i \
- $(TAO_ROOT)/tao/StringSeqC.h \
- $(TAO_ROOT)/tao/StringSeqC.i \
- $(TAO_ROOT)/tao/PortableInterceptorC.h \
- $(TAO_ROOT)/tao/DynamicC.h \
- $(TAO_ROOT)/tao/DynamicC.i \
- $(TAO_ROOT)/tao/MessagingC.h \
- $(TAO_ROOT)/tao/TimeBaseC.h \
- $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
- $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
- $(TAO_ROOT)/tao/TAO_Singleton.h \
- $(TAO_ROOT)/tao/TAO_Singleton.inl \
- $(TAO_ROOT)/tao/TAO_Singleton.cpp \
- $(ACE_ROOT)/ace/Object_Manager.h \
- $(ACE_ROOT)/ace/Object_Manager.i \
- $(ACE_ROOT)/ace/Managed_Object.h \
- $(ACE_ROOT)/ace/Managed_Object.i \
- $(ACE_ROOT)/ace/Managed_Object.cpp \
- $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
- $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \
- $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \
- $(TAO_ROOT)/tao/TimeBaseC.i \
- $(TAO_ROOT)/tao/IOPC.h \
- $(TAO_ROOT)/tao/IOPC.i \
- $(TAO_ROOT)/tao/PollableC.h \
- $(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/MessagingC.i \
- $(TAO_ROOT)/tao/PortableInterceptorC.i \
- ../Common/rtcorba_common_export.h ../Common/testC.i \
- $(TAO_ROOT)/tao/TAOC.h \
- $(TAO_ROOT)/tao/TAOC.i \
- $(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i \
- $(ACE_ROOT)/ace/Task.h \
- $(ACE_ROOT)/ace/Service_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.i \
- $(ACE_ROOT)/ace/Service_Object.i \
- $(ACE_ROOT)/ace/Thread_Manager.h \
- $(ACE_ROOT)/ace/Containers.h \
- $(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Containers_T.h \
- $(ACE_ROOT)/ace/Array_Base.h \
- $(ACE_ROOT)/ace/Array_Base.inl \
- $(ACE_ROOT)/ace/Array_Base.cpp \
- $(ACE_ROOT)/ace/Containers_T.i \
- $(ACE_ROOT)/ace/Containers_T.cpp \
- $(ACE_ROOT)/ace/Singleton.h \
- $(ACE_ROOT)/ace/Singleton.i \
- $(ACE_ROOT)/ace/Singleton.cpp \
- $(ACE_ROOT)/ace/Thread_Manager.i \
- $(ACE_ROOT)/ace/Task.i \
- $(ACE_ROOT)/ace/Task_T.h \
- $(ACE_ROOT)/ace/Message_Queue.h \
- $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
- $(ACE_ROOT)/ace/Message_Queue_T.h \
- $(ACE_ROOT)/ace/Message_Queue_T.i \
- $(ACE_ROOT)/ace/Message_Queue_T.cpp \
- $(ACE_ROOT)/ace/Strategies.h \
- $(ACE_ROOT)/ace/Strategies_T.h \
- $(ACE_ROOT)/ace/Service_Config.h \
- $(ACE_ROOT)/ace/Service_Config.i \
- $(ACE_ROOT)/ace/Reactor.h \
- $(ACE_ROOT)/ace/Handle_Set.h \
- $(ACE_ROOT)/ace/Handle_Set.i \
- $(ACE_ROOT)/ace/Timer_Queue.h \
- $(ACE_ROOT)/ace/Timer_Queue_T.h \
- $(ACE_ROOT)/ace/Test_and_Set.h \
- $(ACE_ROOT)/ace/Test_and_Set.i \
- $(ACE_ROOT)/ace/Test_and_Set.cpp \
- $(ACE_ROOT)/ace/Timer_Queue_T.i \
- $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
- $(ACE_ROOT)/ace/Reactor.i \
- $(ACE_ROOT)/ace/Reactor_Impl.h \
- $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
- $(ACE_ROOT)/ace/Synch_Options.h \
- $(ACE_ROOT)/ace/Synch_Options.i \
- $(ACE_ROOT)/ace/Hash_Map_Manager.h \
- $(ACE_ROOT)/ace/Functor.h \
- $(ACE_ROOT)/ace/Functor.i \
- $(ACE_ROOT)/ace/Functor_T.h \
- $(ACE_ROOT)/ace/Functor_T.i \
- $(ACE_ROOT)/ace/Functor_T.cpp \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
- $(ACE_ROOT)/ace/Strategies_T.i \
- $(ACE_ROOT)/ace/Strategies_T.cpp \
- $(ACE_ROOT)/ace/Service_Repository.h \
- $(ACE_ROOT)/ace/Service_Types.h \
- $(ACE_ROOT)/ace/Service_Types.i \
- $(ACE_ROOT)/ace/Service_Repository.i \
- $(ACE_ROOT)/ace/WFMO_Reactor.h \
- $(ACE_ROOT)/ace/Process_Mutex.h \
- $(ACE_ROOT)/ace/Process_Mutex.inl \
- $(ACE_ROOT)/ace/WFMO_Reactor.i \
- $(ACE_ROOT)/ace/Strategies.i \
- $(ACE_ROOT)/ace/Message_Queue.i \
- $(ACE_ROOT)/ace/Task_T.i \
- $(ACE_ROOT)/ace/Task_T.cpp \
- $(ACE_ROOT)/ace/Module.h \
- $(ACE_ROOT)/ace/Module.i \
- $(ACE_ROOT)/ace/Module.cpp \
- $(ACE_ROOT)/ace/Stream_Modules.h \
- $(ACE_ROOT)/ace/Stream_Modules.cpp \
- $(ACE_ROOT)/ace/Stats.h \
- $(ACE_ROOT)/ace/Basic_Stats.h \
- $(ACE_ROOT)/ace/Basic_Stats.inl \
- $(ACE_ROOT)/ace/Stats.i \
- $(ACE_ROOT)/ace/High_Res_Timer.h \
- $(ACE_ROOT)/ace/High_Res_Timer.i \
- $(ACE_ROOT)/ace/Sched_Params.h \
- $(ACE_ROOT)/ace/Sched_Params.i
-
-.obj/server.o .obj/server.o .obj/server.o .obj/server.o: server.cpp ../Common/test_i.h ../Common/testS.h \
- ../Common/testC.h \
- $(TAO_ROOT)/tao/corba.h \
- $(ACE_ROOT)/ace/pre.h \
- $(ACE_ROOT)/ace/post.h \
- $(ACE_ROOT)/ace/ACE_export.h \
- $(ACE_ROOT)/ace/svc_export.h \
- $(ACE_ROOT)/ace/ace_wchar.h \
- $(ACE_ROOT)/ace/ace_wchar.inl \
- $(ACE_ROOT)/ace/OS_Errno.h \
- $(ACE_ROOT)/ace/OS_Export.h \
- $(ACE_ROOT)/ace/OS_Errno.inl \
- $(TAO_ROOT)/tao/corbafwd.h \
- $(ACE_ROOT)/ace/CDR_Base.h \
- $(ACE_ROOT)/ace/Basic_Types.h \
- $(ACE_ROOT)/ace/Basic_Types.i \
- $(ACE_ROOT)/ace/Message_Block.h \
- $(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/OS.h \
- $(ACE_ROOT)/ace/OS_Dirent.h \
- $(ACE_ROOT)/ace/OS_Dirent.inl \
- $(ACE_ROOT)/ace/OS_String.h \
- $(ACE_ROOT)/ace/OS_String.inl \
- $(ACE_ROOT)/ace/OS_Memory.h \
- $(ACE_ROOT)/ace/OS_Memory.inl \
- $(ACE_ROOT)/ace/OS_TLI.h \
- $(ACE_ROOT)/ace/OS_TLI.inl \
- $(ACE_ROOT)/ace/Min_Max.h \
- $(ACE_ROOT)/ace/streams.h \
- $(ACE_ROOT)/ace/Trace.h \
- $(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Flag_Manip.h \
- $(ACE_ROOT)/ace/Flag_Manip.i \
- $(ACE_ROOT)/ace/Handle_Ops.h \
- $(ACE_ROOT)/ace/Handle_Ops.i \
- $(ACE_ROOT)/ace/Lib_Find.h \
- $(ACE_ROOT)/ace/Lib_Find.i \
- $(ACE_ROOT)/ace/Init_ACE.h \
- $(ACE_ROOT)/ace/Init_ACE.i \
- $(ACE_ROOT)/ace/Sock_Connect.h \
- $(ACE_ROOT)/ace/Sock_Connect.i \
- $(ACE_ROOT)/ace/ACE.i \
- $(ACE_ROOT)/ace/Malloc.h \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \
- $(ACE_ROOT)/ace/Malloc.i \
- $(ACE_ROOT)/ace/Malloc_T.h \
- $(ACE_ROOT)/ace/Synch.h \
- $(ACE_ROOT)/ace/Synch.i \
- $(ACE_ROOT)/ace/Synch_T.h \
- $(ACE_ROOT)/ace/Synch_T.i \
- $(ACE_ROOT)/ace/Thread.h \
- $(ACE_ROOT)/ace/Thread_Adapter.h \
- $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
- $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \
- $(ACE_ROOT)/ace/Thread_Adapter.inl \
- $(ACE_ROOT)/ace/Thread.i \
- $(ACE_ROOT)/ace/Atomic_Op.i \
- $(ACE_ROOT)/ace/Synch_T.cpp \
- $(ACE_ROOT)/ace/Malloc_Allocator.h \
- $(ACE_ROOT)/ace/Malloc_Base.h \
- $(ACE_ROOT)/ace/Malloc_Allocator.i \
- $(ACE_ROOT)/ace/Free_List.h \
- $(ACE_ROOT)/ace/Free_List.i \
- $(ACE_ROOT)/ace/Free_List.cpp \
- $(ACE_ROOT)/ace/Malloc_T.i \
- $(ACE_ROOT)/ace/Malloc_T.cpp \
- $(ACE_ROOT)/ace/Memory_Pool.h \
- $(ACE_ROOT)/ace/Event_Handler.h \
- $(ACE_ROOT)/ace/Event_Handler.i \
- $(ACE_ROOT)/ace/Signal.h \
- $(ACE_ROOT)/ace/Signal.i \
- $(ACE_ROOT)/ace/Mem_Map.h \
- $(ACE_ROOT)/ace/Mem_Map.i \
- $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
- $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
- $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
- $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
- $(ACE_ROOT)/ace/Unbounded_Set.h \
- $(ACE_ROOT)/ace/Node.h \
- $(ACE_ROOT)/ace/Node.cpp \
- $(ACE_ROOT)/ace/Unbounded_Set.inl \
- $(ACE_ROOT)/ace/Unbounded_Set.cpp \
- $(ACE_ROOT)/ace/Memory_Pool.i \
- $(ACE_ROOT)/ace/Message_Block.i \
- $(ACE_ROOT)/ace/Message_Block_T.h \
- $(ACE_ROOT)/ace/Message_Block_T.i \
- $(ACE_ROOT)/ace/Message_Block_T.cpp \
- $(ACE_ROOT)/ace/CDR_Base.inl \
- $(TAO_ROOT)/tao/try_macros.h \
- $(TAO_ROOT)/tao/orbconf.h \
- $(ACE_ROOT)/ace/CORBA_macros.h \
- $(TAO_ROOT)/tao/varbase.h \
- $(TAO_ROOT)/tao/TAO_Export.h \
- $(TAO_ROOT)/tao/corbafwd.i \
- $(TAO_ROOT)/tao/Typecode.h \
- $(TAO_ROOT)/tao/Exception.h \
- $(ACE_ROOT)/ace/SString.h \
- $(ACE_ROOT)/ace/SString.i \
- $(TAO_ROOT)/tao/Exception.i \
- $(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/CDR.h \
- $(ACE_ROOT)/ace/CDR_Stream.h \
- $(ACE_ROOT)/ace/CDR_Stream.i \
- $(TAO_ROOT)/tao/CDR.i \
- $(TAO_ROOT)/tao/Environment.h \
- $(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
- $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/Any.i \
- $(TAO_ROOT)/tao/NVList.h \
- $(ACE_ROOT)/ace/Unbounded_Queue.h \
- $(ACE_ROOT)/ace/Unbounded_Queue.inl \
- $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
- $(TAO_ROOT)/tao/NVList.i \
- $(TAO_ROOT)/tao/LocalObject.h \
- $(TAO_ROOT)/tao/LocalObject.i \
- $(TAO_ROOT)/tao/Principal.h \
- $(TAO_ROOT)/tao/OctetSeqC.h \
- $(TAO_ROOT)/tao/Sequence.h \
- $(TAO_ROOT)/tao/Managed_Types.h \
- $(TAO_ROOT)/tao/Managed_Types.i \
- $(TAO_ROOT)/tao/Sequence.i \
- $(TAO_ROOT)/tao/Sequence_T.h \
- $(TAO_ROOT)/tao/Sequence_T.i \
- $(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/OctetSeqC.i \
- $(TAO_ROOT)/tao/Principal.i \
- $(TAO_ROOT)/tao/ORB.h \
- $(TAO_ROOT)/tao/Services.h \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/CORBA_String.h \
- $(TAO_ROOT)/tao/CORBA_String.inl \
- $(TAO_ROOT)/tao/PolicyC.h \
- $(TAO_ROOT)/tao/Encodable.h \
- $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/CurrentC.i \
- $(TAO_ROOT)/tao/PolicyC.i \
- $(TAO_ROOT)/tao/ORB.i \
- $(TAO_ROOT)/tao/BoundsC.h \
- $(TAO_ROOT)/tao/BoundsC.i \
- $(TAO_ROOT)/tao/ValueBase.h \
- $(TAO_ROOT)/tao/ValueBase.i \
- $(TAO_ROOT)/tao/ValueFactory.h \
- $(TAO_ROOT)/tao/ValueFactory.i \
- $(TAO_ROOT)/tao/DomainC.h \
- $(TAO_ROOT)/tao/DomainC.i \
- $(TAO_ROOT)/tao/WrongTransactionC.h \
- $(TAO_ROOT)/tao/Object_KeyC.h \
- $(TAO_ROOT)/tao/Object_KeyC.i \
- $(TAO_ROOT)/tao/ObjectIDList.h \
- $(TAO_ROOT)/tao/ObjectIDList.i \
- $(TAO_ROOT)/tao/StringSeqC.h \
- $(TAO_ROOT)/tao/StringSeqC.i \
- $(TAO_ROOT)/tao/PortableInterceptorC.h \
- $(TAO_ROOT)/tao/DynamicC.h \
- $(TAO_ROOT)/tao/DynamicC.i \
- $(TAO_ROOT)/tao/MessagingC.h \
- $(TAO_ROOT)/tao/TimeBaseC.h \
- $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
- $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
- $(TAO_ROOT)/tao/TAO_Singleton.h \
- $(TAO_ROOT)/tao/TAO_Singleton.inl \
- $(TAO_ROOT)/tao/TAO_Singleton.cpp \
- $(ACE_ROOT)/ace/Object_Manager.h \
- $(ACE_ROOT)/ace/Object_Manager.i \
- $(ACE_ROOT)/ace/Managed_Object.h \
- $(ACE_ROOT)/ace/Managed_Object.i \
- $(ACE_ROOT)/ace/Managed_Object.cpp \
- $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
- $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \
- $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \
- $(TAO_ROOT)/tao/TimeBaseC.i \
- $(TAO_ROOT)/tao/IOPC.h \
- $(TAO_ROOT)/tao/IOPC.i \
- $(TAO_ROOT)/tao/PollableC.h \
- $(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/MessagingC.i \
- $(TAO_ROOT)/tao/PortableInterceptorC.i \
- ../Common/rtcorba_common_export.h ../Common/testC.i \
- $(TAO_ROOT)/tao/PortableServer/PortableServer.h \
- $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \
- $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \
- $(TAO_ROOT)/tao/PortableServer/PortableServerC.i \
- $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \
- $(TAO_ROOT)/tao/Abstract_Servant_Base.h \
- $(TAO_ROOT)/tao/PortableServer/Servant_Base.i \
- $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \
- $(TAO_ROOT)/tao/PortableServer/Collocated_Object.i \
- $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \
- ../Common/testS_T.h ../Common/testS_T.i ../Common/testS_T.cpp \
- ../Common/testS.i ../Common/test_i.i \
- $(TAO_ROOT)/tao/RTCORBA/Pool_Per_Endpoint.h \
- $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \
- $(ACE_ROOT)/ace/Task.h \
- $(ACE_ROOT)/ace/Service_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.i \
- $(ACE_ROOT)/ace/Service_Object.i \
- $(ACE_ROOT)/ace/Thread_Manager.h \
- $(ACE_ROOT)/ace/Containers.h \
- $(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Containers_T.h \
- $(ACE_ROOT)/ace/Array_Base.h \
- $(ACE_ROOT)/ace/Array_Base.inl \
- $(ACE_ROOT)/ace/Array_Base.cpp \
- $(ACE_ROOT)/ace/Containers_T.i \
- $(ACE_ROOT)/ace/Containers_T.cpp \
- $(ACE_ROOT)/ace/Singleton.h \
- $(ACE_ROOT)/ace/Singleton.i \
- $(ACE_ROOT)/ace/Singleton.cpp \
- $(ACE_ROOT)/ace/Thread_Manager.i \
- $(ACE_ROOT)/ace/Task.i \
- $(ACE_ROOT)/ace/Task_T.h \
- $(ACE_ROOT)/ace/Message_Queue.h \
- $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
- $(ACE_ROOT)/ace/Message_Queue_T.h \
- $(ACE_ROOT)/ace/Message_Queue_T.i \
- $(ACE_ROOT)/ace/Message_Queue_T.cpp \
- $(ACE_ROOT)/ace/Strategies.h \
- $(ACE_ROOT)/ace/Strategies_T.h \
- $(ACE_ROOT)/ace/Service_Config.h \
- $(ACE_ROOT)/ace/Service_Config.i \
- $(ACE_ROOT)/ace/Reactor.h \
- $(ACE_ROOT)/ace/Handle_Set.h \
- $(ACE_ROOT)/ace/Handle_Set.i \
- $(ACE_ROOT)/ace/Timer_Queue.h \
- $(ACE_ROOT)/ace/Timer_Queue_T.h \
- $(ACE_ROOT)/ace/Test_and_Set.h \
- $(ACE_ROOT)/ace/Test_and_Set.i \
- $(ACE_ROOT)/ace/Test_and_Set.cpp \
- $(ACE_ROOT)/ace/Timer_Queue_T.i \
- $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
- $(ACE_ROOT)/ace/Reactor.i \
- $(ACE_ROOT)/ace/Reactor_Impl.h \
- $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
- $(ACE_ROOT)/ace/Synch_Options.h \
- $(ACE_ROOT)/ace/Synch_Options.i \
- $(ACE_ROOT)/ace/Hash_Map_Manager.h \
- $(ACE_ROOT)/ace/Functor.h \
- $(ACE_ROOT)/ace/Functor.i \
- $(ACE_ROOT)/ace/Functor_T.h \
- $(ACE_ROOT)/ace/Functor_T.i \
- $(ACE_ROOT)/ace/Functor_T.cpp \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
- $(ACE_ROOT)/ace/Strategies_T.i \
- $(ACE_ROOT)/ace/Strategies_T.cpp \
- $(ACE_ROOT)/ace/Service_Repository.h \
- $(ACE_ROOT)/ace/Service_Types.h \
- $(ACE_ROOT)/ace/Service_Types.i \
- $(ACE_ROOT)/ace/Service_Repository.i \
- $(ACE_ROOT)/ace/WFMO_Reactor.h \
- $(ACE_ROOT)/ace/Process_Mutex.h \
- $(ACE_ROOT)/ace/Process_Mutex.inl \
- $(ACE_ROOT)/ace/WFMO_Reactor.i \
- $(ACE_ROOT)/ace/Strategies.i \
- $(ACE_ROOT)/ace/Message_Queue.i \
- $(ACE_ROOT)/ace/Task_T.i \
- $(ACE_ROOT)/ace/Task_T.cpp \
- $(ACE_ROOT)/ace/Module.h \
- $(ACE_ROOT)/ace/Module.i \
- $(ACE_ROOT)/ace/Module.cpp \
- $(ACE_ROOT)/ace/Stream_Modules.h \
- $(ACE_ROOT)/ace/Stream_Modules.cpp \
- $(TAO_ROOT)/tao/RTCORBA/Pool_Per_Endpoint.i \
- $(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i \
- $(ACE_ROOT)/ace/Sched_Params.h \
- $(ACE_ROOT)/ace/Sched_Params.i
-
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp b/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp
deleted file mode 100644
index 72f83576b44..00000000000
--- a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(Single_Threaded_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h b/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/Single_Threaded_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/Single_Threaded_Latency/client.cpp b/TAO/performance-tests/Single_Threaded_Latency/client.cpp
deleted file mode 100644
index 2d841b9909d..00000000000
--- a/TAO/performance-tests/Single_Threaded_Latency/client.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-// $Id$
-
-#include "TestC.h"
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-#include "ace/Sample_History.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Single_Threaded_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 100;
-int do_dump_history = 0;
-int do_shutdown = 1;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "hxk:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'h':
- do_dump_history = 1;
- break;
-
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-x (disable shutdown) "
- "-h (dump history) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
- }
-
- for (int j = 0; j < 100; ++j)
- {
- ACE_hrtime_t start = 0;
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
-
- ACE_Sample_History history (niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
- for (int i = 0; i < niterations; ++i)
- {
- ACE_hrtime_t start = ACE_OS::gethrtime ();
-
- (void) roundtrip->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- history.sample (now - start);
- }
-
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "test finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- if (do_dump_history)
- {
- history.dump_samples ("HISTORY", gsf);
- }
-
- ACE_Basic_Stats stats;
- history.collect_basic_stats (stats);
- stats.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- stats.samples_count ());
-
- if (do_shutdown)
- {
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Single_Threaded_Latency/server.cpp b/TAO/performance-tests/Single_Threaded_Latency/server.cpp
deleted file mode 100644
index e96f0ff595a..00000000000
--- a/TAO/performance-tests/Single_Threaded_Latency/server.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Single_Threaded_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp
deleted file mode 100644
index 09d15331436..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// $Id$
-//
-#include "Client_Task.h"
-
-ACE_RCSID(Thread_Per_Connection_Latency, Client_Task, "$Id$")
-
-Client_Task::Client_Task (Test::Roundtrip_ptr roundtrip,
- int niterations)
- : roundtrip_ (Test::Roundtrip::_duplicate (roundtrip))
- , niterations_ (niterations)
-{
-}
-
-int
-Client_Task::svc (void)
-{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- this->validate_connection (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- for (int i = 0; i != this->niterations_; ++i)
- {
- CORBA::ULongLong start = ACE_OS::gethrtime ();
-
- (void) this->roundtrip_->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- this->latency_.sample (now - start);
- }
- }
- ACE_CATCHANY
- {
- return 0;
- }
- ACE_ENDTRY;
- return 0;
-}
-
-void
-Client_Task::accumulate_and_dump (ACE_Basic_Stats &totals,
- const char *msg,
- ACE_UINT32 gsf)
-{
- totals.accumulate (this->latency_);
- this->latency_.dump_results (msg, gsf);
-}
-
-void
-Client_Task::validate_connection (ACE_ENV_SINGLE_ARG_DECL)
-{
- CORBA::ULongLong dummy = 0;
- for (int i = 0; i != 100; ++i)
- {
- ACE_TRY
- {
- (void) this->roundtrip_->test_method (dummy ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY {} ACE_ENDTRY;
- }
-}
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h b/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h
deleted file mode 100644
index 476ee8bd23c..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/Client_Task.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef CLIENT_TASK_H
-#define CLIENT_TASK_H
-#include /**/ "ace/pre.h"
-
-#include "TestC.h"
-#include "ace/Task.h"
-#include "ace/Basic_Stats.h"
-
-/// Implement the Test::Client_Task interface
-class Client_Task : public ACE_Task_Base
-{
-public:
- /// Constructor
- Client_Task (Test::Roundtrip_ptr roundtrip,
- int niterations);
-
- /// Add this thread results to the global numbers and print the
- /// per-thread results.
- void accumulate_and_dump (ACE_Basic_Stats &totals,
- const char *msg,
- ACE_UINT32 gsf);
-
- /// The service method
- virtual int svc (void);
-
-private:
- /// Make sure that the current thread has a connection available.
- void validate_connection (ACE_ENV_SINGLE_ARG_DECL);
-
-private:
- /// The object reference used for this test
- Test::Roundtrip_var roundtrip_;
-
- /// The number of iterations
- int niterations_;
-
- /// Keep track of the latency (minimum, average, maximum and jitter)
- ACE_Basic_Stats latency_;
-};
-
-#include /**/ "ace/post.h"
-#endif /* CLIENT_TASK_H */
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp
deleted file mode 100644
index 2bc67948fd0..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(Single_Per_Connection_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h b/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp
deleted file mode 100644
index 69aac2b4ca5..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/client.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-// $Id$
-
-#include "Client_Task.h"
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Thread_Per_Connection_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 1000;
-int do_shutdown = 1;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "xk:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-x (disable shutdown) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
- }
-
- ACE_DEBUG ((LM_DEBUG, "Starting threads\n"));
-
- Client_Task task0(roundtrip.in (), niterations);
- Client_Task task1(roundtrip.in (), niterations);
- Client_Task task2(roundtrip.in (), niterations);
- Client_Task task3(roundtrip.in (), niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
- task0.activate(THR_NEW_LWP | THR_JOINABLE);
- task1.activate(THR_NEW_LWP | THR_JOINABLE);
- task2.activate(THR_NEW_LWP | THR_JOINABLE);
- task3.activate(THR_NEW_LWP | THR_JOINABLE);
-
- task0.thr_mgr()->wait ();
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "Threads finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- ACE_Basic_Stats totals;
- task0.accumulate_and_dump (totals, "Task[0]", gsf);
- task1.accumulate_and_dump (totals, "Task[1]", gsf);
- task2.accumulate_and_dump (totals, "Task[2]", gsf);
- task3.accumulate_and_dump (totals, "Task[3]", gsf);
-
- totals.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- totals.samples_count ());
-
- if (do_shutdown)
- {
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp b/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp
deleted file mode 100644
index 004ce70cebf..00000000000
--- a/TAO/performance-tests/Thread_Per_Connection_Latency/server.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Thread_Per_Connection_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp b/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp
deleted file mode 100644
index efb544633b2..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// $Id$
-//
-#include "Client_Task.h"
-
-ACE_RCSID(Thread_Pool_Latency, Client_Task, "$Id$")
-
-Client_Task::Client_Task (Test::Roundtrip_ptr roundtrip,
- int niterations)
- : roundtrip_ (Test::Roundtrip::_duplicate (roundtrip))
- , niterations_ (niterations)
-{
-}
-
-int
-Client_Task::svc (void)
-{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- this->validate_connection (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- for (int i = 0; i != this->niterations_; ++i)
- {
- CORBA::ULongLong start = ACE_OS::gethrtime ();
-
- (void) this->roundtrip_->test_method (start ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_hrtime_t now = ACE_OS::gethrtime ();
- this->latency_.sample (now - start);
- }
- }
- ACE_CATCHANY
- {
- return 0;
- }
- ACE_ENDTRY;
- return 0;
-}
-
-void
-Client_Task::accumulate_and_dump (ACE_Basic_Stats &totals,
- const char *msg,
- ACE_UINT32 gsf)
-{
- totals.accumulate (this->latency_);
- this->latency_.dump_results (msg, gsf);
-}
-
-void
-Client_Task::validate_connection (ACE_ENV_SINGLE_ARG_DECL)
-{
- CORBA::ULongLong dummy = 0;
- for (int i = 0; i != 100; ++i)
- {
- ACE_TRY
- {
- (void) this->roundtrip_->test_method (dummy ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY {} ACE_ENDTRY;
- }
-}
diff --git a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h b/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h
deleted file mode 100644
index 476ee8bd23c..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/Client_Task.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef CLIENT_TASK_H
-#define CLIENT_TASK_H
-#include /**/ "ace/pre.h"
-
-#include "TestC.h"
-#include "ace/Task.h"
-#include "ace/Basic_Stats.h"
-
-/// Implement the Test::Client_Task interface
-class Client_Task : public ACE_Task_Base
-{
-public:
- /// Constructor
- Client_Task (Test::Roundtrip_ptr roundtrip,
- int niterations);
-
- /// Add this thread results to the global numbers and print the
- /// per-thread results.
- void accumulate_and_dump (ACE_Basic_Stats &totals,
- const char *msg,
- ACE_UINT32 gsf);
-
- /// The service method
- virtual int svc (void);
-
-private:
- /// Make sure that the current thread has a connection available.
- void validate_connection (ACE_ENV_SINGLE_ARG_DECL);
-
-private:
- /// The object reference used for this test
- Test::Roundtrip_var roundtrip_;
-
- /// The number of iterations
- int niterations_;
-
- /// Keep track of the latency (minimum, average, maximum and jitter)
- ACE_Basic_Stats latency_;
-};
-
-#include /**/ "ace/post.h"
-#endif /* CLIENT_TASK_H */
diff --git a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp b/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp
deleted file mode 100644
index 6028512202c..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// $Id$
-//
-#include "Roundtrip.h"
-
-ACE_RCSID(Thread_Pool_Latency, Roundtrip, "$Id$")
-
-Roundtrip::Roundtrip (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-Test::Timestamp
-Roundtrip::test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-Roundtrip::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h b/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h
deleted file mode 100644
index 6474b130a24..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/Roundtrip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef ROUNDTRIP_H
-#define ROUNDTRIP_H
-#include /**/ "ace/pre.h"
-
-#include "TestS.h"
-
-#if defined (_MSC_VER)
-# if (_MSC_VER >= 1200)
-# pragma warning(push)
-# endif /* _MSC_VER >= 1200 */
-# pragma warning (disable:4250)
-#endif /* _MSC_VER */
-
-/// Implement the Test::Roundtrip interface
-class Roundtrip
- : public virtual POA_Test::Roundtrip
- , public virtual PortableServer::RefCountServantBase
-{
-public:
- /// Constructor
- Roundtrip (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual Test::Timestamp test_method (Test::Timestamp send_time
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
-private:
- /// Use an ORB reference to conver strings to objects and shutdown
- /// the application.
- CORBA::ORB_var orb_;
-};
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma warning(pop)
-#endif /* _MSC_VER */
-
-#include /**/ "ace/post.h"
-#endif /* ROUNDTRIP_H */
diff --git a/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp b/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp
deleted file mode 100644
index e485bb2b843..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/Worker_Thread.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// $Id$
-//
-#include "Worker_Thread.h"
-
-ACE_RCSID(Thread_Pool_Latency, Worker_Thread, "$Id$")
-
-Worker_Thread::Worker_Thread (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-int
-Worker_Thread::svc (void)
-{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY {} ACE_ENDTRY;
- return 0;
-}
diff --git a/TAO/performance-tests/Thread_Pool_Latency/client.cpp b/TAO/performance-tests/Thread_Pool_Latency/client.cpp
deleted file mode 100644
index 643f541a53f..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/client.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-// $Id$
-
-#include "Client_Task.h"
-#include "ace/Get_Opt.h"
-#include "ace/High_Res_Timer.h"
-#include "ace/Sched_Params.h"
-#include "ace/Stats.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Thread_Pool_Latency, client, "$Id$")
-
-const char *ior = "file://test.ior";
-int niterations = 1000;
-int do_shutdown = 1;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "xk:i:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'x':
- do_shutdown = 0;
- break;
-
- case 'k':
- ior = get_opts.opt_arg ();
- break;
-
- case 'i':
- niterations = ACE_OS::atoi (get_opts.opt_arg ());
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-k <ior> "
- "-i <niterations> "
- "-x (disable shutdown) "
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "client (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "client (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- CORBA::Object_var object =
- orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Test::Roundtrip_var roundtrip =
- Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (roundtrip.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "Nil Test::Roundtrip reference <%s>\n",
- ior),
- 1);
- }
-
- ACE_DEBUG ((LM_DEBUG, "Starting threads\n"));
-
- Client_Task task0(roundtrip.in (), niterations);
- Client_Task task1(roundtrip.in (), niterations);
- Client_Task task2(roundtrip.in (), niterations);
- Client_Task task3(roundtrip.in (), niterations);
-
- ACE_hrtime_t test_start = ACE_OS::gethrtime ();
- task0.activate(THR_NEW_LWP | THR_JOINABLE);
- task1.activate(THR_NEW_LWP | THR_JOINABLE);
- task2.activate(THR_NEW_LWP | THR_JOINABLE);
- task3.activate(THR_NEW_LWP | THR_JOINABLE);
-
- task0.thr_mgr()->wait ();
- ACE_hrtime_t test_end = ACE_OS::gethrtime ();
-
- ACE_DEBUG ((LM_DEBUG, "Threads finished\n"));
-
- ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
- ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
- ACE_DEBUG ((LM_DEBUG, "done\n"));
-
- ACE_Basic_Stats totals;
- task0.accumulate_and_dump (totals, "Task[0]", gsf);
- task1.accumulate_and_dump (totals, "Task[1]", gsf);
- task2.accumulate_and_dump (totals, "Task[2]", gsf);
- task3.accumulate_and_dump (totals, "Task[3]", gsf);
-
- totals.dump_results ("Total", gsf);
-
- ACE_Throughput_Stats::dump_throughput ("Total", gsf,
- test_end - test_start,
- totals.samples_count ());
-
- if (do_shutdown)
- {
- roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/performance-tests/Thread_Pool_Latency/server.cpp b/TAO/performance-tests/Thread_Pool_Latency/server.cpp
deleted file mode 100644
index bcacaf713c2..00000000000
--- a/TAO/performance-tests/Thread_Pool_Latency/server.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// $Id$
-
-#include "Roundtrip.h"
-#include "Worker_Thread.h"
-#include "ace/Get_Opt.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-ACE_RCSID(Thread_Pool_Latency, server, "$Id$")
-
-const char *ior_output_file = "test.ior";
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "o:");
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'o':
- ior_output_file = get_opts.opt_arg ();
- break;
-
- case '?':
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "usage: %s "
- "-o <iorfile>"
- "\n",
- argv [0]),
- -1);
- }
- // Indicates sucessful parsing of the command line
- return 0;
-}
-
-int
-main (int argc, char *argv[])
-{
- int priority =
- (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
- + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
- priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
- priority);
- // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
-
- if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
- priority,
- ACE_SCOPE_PROCESS)) != 0)
- {
- if (ACE_OS::last_error () == EPERM)
- {
- ACE_DEBUG ((LM_DEBUG,
- "server (%P|%t): user is not superuser, "
- "test runs in time-shared class\n"));
- }
- else
- ACE_ERROR ((LM_ERROR,
- "server (%P|%t): sched_params failed\n"));
- }
-
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var poa_object =
- orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (poa_object.in ()))
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POAManager_var poa_manager =
- root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (parse_args (argc, argv) != 0)
- return 1;
-
- Roundtrip *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- Roundtrip (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- Test::Roundtrip_var roundtrip =
- roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::String_var ior =
- orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // If the ior_output_file exists, output the ior to it
- FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
- if (output_file == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "Cannot open output file for writing IOR: %s",
- ior_output_file),
- 1);
- ACE_OS::fprintf (output_file, "%s", ior.in ());
- ACE_OS::fclose (output_file);
-
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- Worker_Thread worker (orb.in ());
-
- worker.activate (THR_NEW_LWP | THR_JOINABLE, 4, 1);
- worker.thr_mgr ()->wait ();
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
-
- root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");
- return 1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/tao/AnyTypeCode/PI_ForwardA.h b/TAO/tao/AnyTypeCode/PI_ForwardA.h
index f99092e4ec1..7286439cc39 100644
--- a/TAO/tao/AnyTypeCode/PI_ForwardA.h
+++ b/TAO/tao/AnyTypeCode/PI_ForwardA.h
@@ -121,8 +121,9 @@ namespace PortableInterceptor
// TAO_IDL - Generated from
// be\be_visitor_typedef/typedef_ch.cpp:379
- typedef CORBA::Long AdapterManagerId;
- typedef CORBA::Long_out AdapterManagerId_out;
+ typedef char * AdapterManagerId;
+ typedef CORBA::String_var AdapterManagerId_var;
+ typedef CORBA::String_out AdapterManagerId_out;
// TAO_IDL - Generated from
// be\be_visitor_typecode/typecode_decl.cpp:44
diff --git a/TAO/tao/AnyTypeCode/skip.cpp b/TAO/tao/AnyTypeCode/skip.cpp
index a508b7c8f89..81433f202fb 100644
--- a/TAO/tao/AnyTypeCode/skip.cpp
+++ b/TAO/tao/AnyTypeCode/skip.cpp
@@ -374,7 +374,7 @@ TAO_Marshal_Union::skip (CORBA::TypeCode_ptr tc,
CORBA::Char char_v = CORBA::Char();
CORBA::WChar wchar_v = CORBA::WChar();
CORBA::Boolean boolean_v = false;
-
+
switch (kind)
{
case CORBA::tk_short:
@@ -957,9 +957,9 @@ TAO_Marshal_Value::skip (CORBA::TypeCode_ptr tc,
{
this->nested_processing_ = 1;
- CORBA::ULong value_tag;
+ CORBA::Long value_tag;
- if (!stream->read_ulong (value_tag))
+ if (!stream->read_long (value_tag))
{
return TAO::TRAVERSE_STOP;
}
diff --git a/TAO/tao/Blocked_Connect_Strategy.cpp b/TAO/tao/Blocked_Connect_Strategy.cpp
index 9317a128679..e5ee355a042 100644
--- a/TAO/tao/Blocked_Connect_Strategy.cpp
+++ b/TAO/tao/Blocked_Connect_Strategy.cpp
@@ -38,21 +38,13 @@ TAO_Blocked_Connect_Strategy::synch_options (ACE_Time_Value *timeout,
}
}
-
int
-TAO_Blocked_Connect_Strategy::wait (TAO_Connection_Handler *,
+TAO_Blocked_Connect_Strategy::wait_i (TAO_LF_Event *,
+ TAO_Transport *,
ACE_Time_Value * )
{
// We cannot wait for connection completion
return -1;
}
-int
-TAO_Blocked_Connect_Strategy::wait (TAO_Transport *,
- ACE_Time_Value *)
-{
- // We cannot wait for connection completion
- return -1;
-}
-
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Blocked_Connect_Strategy.h b/TAO/tao/Blocked_Connect_Strategy.h
index 9c547ebfc23..9eea4edaebc 100644
--- a/TAO/tao/Blocked_Connect_Strategy.h
+++ b/TAO/tao/Blocked_Connect_Strategy.h
@@ -45,11 +45,11 @@ public:
virtual void synch_options (ACE_Time_Value *val,
ACE_Synch_Options &opt);
- virtual int wait (TAO_Connection_Handler *ch,
+protected:
+ virtual int wait_i (TAO_LF_Event *ev,
+ TAO_Transport *t,
ACE_Time_Value *val);
- virtual int wait (TAO_Transport *t,
- ACE_Time_Value *val);
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Bounded_Sequence_CDR_T.h b/TAO/tao/Bounded_Sequence_CDR_T.h
index 7213b9547f6..c0cbbdb5a01 100644
--- a/TAO/tao/Bounded_Sequence_CDR_T.h
+++ b/TAO/tao/Bounded_Sequence_CDR_T.h
@@ -12,6 +12,7 @@
*/
#include "tao/orbconf.h"
+#include "tao/SystemException.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -328,7 +329,9 @@ namespace TAO {
namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Short, MAX> & source) {
- const ::CORBA::ULong length = source.length ();
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
+ ::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
}
@@ -337,7 +340,9 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Long, MAX> & source) {
- const ::CORBA::ULong length = source.length ();
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
+ ::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
}
@@ -346,6 +351,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::ULong, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -355,6 +362,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::UShort, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -364,6 +373,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Octet, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -373,6 +384,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Char, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -383,6 +396,8 @@ namespace TAO {
# if defined (ACE_HAS_WCHAR) || defined (ACE_HAS_XPG4_MULTIBYTE_CHAR)
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::WChar, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -393,6 +408,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Float, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -402,6 +419,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Double, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -411,6 +430,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::ULongLong, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -420,6 +441,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::LongDouble, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -429,6 +452,8 @@ namespace TAO {
template <typename stream, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <CORBA::Boolean, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -438,6 +463,8 @@ namespace TAO {
template <typename stream, typename value_t, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_value_sequence <value_t, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -452,6 +479,8 @@ namespace TAO {
template <typename stream, typename charT, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::details::bounded_basic_string_sequence <charT, MAX> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -467,6 +496,8 @@ namespace TAO {
template <typename stream, typename object_t, typename object_t_var, CORBA::ULong MAX>
bool marshal_sequence(stream & strm, const TAO::bounded_object_reference_sequence<object_t, object_t_var, MAX> & source) {
typedef typename TAO::bounded_object_reference_sequence<object_t, object_t_var, MAX>::object_type object_type;
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
diff --git a/TAO/tao/CORBALOC_Parser.cpp b/TAO/tao/CORBALOC_Parser.cpp
index 2dda9784489..92369055416 100644
--- a/TAO/tao/CORBALOC_Parser.cpp
+++ b/TAO/tao/CORBALOC_Parser.cpp
@@ -233,7 +233,8 @@ TAO_CORBALOC_Parser::parse_string (const char * ior,
const char * str = full_ep.c_str();
endpoints[i].profile_->parse_string (str ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
- if (mprofile.give_profile(endpoints[i].profile_) != -1)
+ int share = orb->orb_core()->orb_params()->shared_profile();
+ if (mprofile.give_profile(endpoints[i].profile_, share) != -1)
endpoints[i].profile_ = 0;
else
{
diff --git a/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp b/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp
index 7fa1a03f257..72b8028cd94 100644
--- a/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp
+++ b/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.cpp
@@ -19,14 +19,14 @@ TAO_CSD_Default_Servant_Dispatcher::~TAO_CSD_Default_Servant_Dispatcher (void)
TAO_Root_POA *
TAO_CSD_Default_Servant_Dispatcher::create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
TAO_ORB_Core &orb_core,
TAO_Object_Adapter *object_adapter
ACE_ENV_ARG_DECL)
-{
+ {
TAO_CSD_POA *poa = 0;
ACE_NEW_THROW_EX (poa,
diff --git a/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h b/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h
index ed78621d075..1d041331e99 100644
--- a/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h
+++ b/TAO/tao/CSD_Framework/CSD_Default_Servant_Dispatcher.h
@@ -38,7 +38,7 @@ public:
/// Factory method for creating new CSD Root POA.
virtual TAO_Root_POA *create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/CSD_Framework/CSD_POA.cpp b/TAO/tao/CSD_Framework/CSD_POA.cpp
index cd63c5d7375..f3cc8e605f5 100644
--- a/TAO/tao/CSD_Framework/CSD_POA.cpp
+++ b/TAO/tao/CSD_Framework/CSD_POA.cpp
@@ -18,7 +18,7 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
// Implementation skeleton constructor
TAO_CSD_POA::TAO_CSD_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -66,7 +66,7 @@ void TAO_CSD_POA::set_csd_strategy (
TAO_Root_POA *
TAO_CSD_POA::new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/CSD_Framework/CSD_POA.h b/TAO/tao/CSD_Framework/CSD_POA.h
index 7bf2c338e0d..bcbf2e0495f 100644
--- a/TAO/tao/CSD_Framework/CSD_POA.h
+++ b/TAO/tao/CSD_Framework/CSD_POA.h
@@ -40,7 +40,7 @@ class TAO_CSD_FW_Export TAO_CSD_POA
public:
//Constructor
TAO_CSD_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -80,7 +80,7 @@ public:
///Method for creating new CSD POA.
TAO_Root_POA * new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp b/TAO/tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp
index 71aa9aa9b8c..9e87aaf73e6 100644
--- a/TAO/tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp
+++ b/TAO/tao/CSD_ThreadPool/CSD_TP_Strategy_Factory.cpp
@@ -86,7 +86,7 @@ TAO::CSD::TP_Strategy_Factory::init (int argc,
arg_remainder.substr (pos + 1, arg.length () - pos);
// Case-insensitive string comparison.
- if (ACE_OS::strcasecmp (off_str.c_str(),
+ if (ACE_OS::strcasecmp (ACE_TEXT_CHAR_TO_TCHAR (off_str.c_str()),
ACE_TEXT("OFF")) == 0)
{
serialize_servants = false;
diff --git a/TAO/tao/Client_Strategy_Factory.cpp b/TAO/tao/Client_Strategy_Factory.cpp
index f459955e2bf..f8cfb870b74 100644
--- a/TAO/tao/Client_Strategy_Factory.cpp
+++ b/TAO/tao/Client_Strategy_Factory.cpp
@@ -40,6 +40,12 @@ TAO_Client_Strategy_Factory::create_wait_strategy (TAO_Transport *)
return 0;
}
+TAO_Client_Strategy_Factory::Connect_Strategy
+TAO_Client_Strategy_Factory::connect_strategy (void) const
+{
+ return TAO_BLOCKED_CONNECT;
+}
+
TAO_Connect_Strategy *
TAO_Client_Strategy_Factory::create_connect_strategy (TAO_ORB_Core *)
{
diff --git a/TAO/tao/Client_Strategy_Factory.h b/TAO/tao/Client_Strategy_Factory.h
index 3c63290ad4a..407e580b509 100644
--- a/TAO/tao/Client_Strategy_Factory.h
+++ b/TAO/tao/Client_Strategy_Factory.h
@@ -71,6 +71,15 @@ public:
/// Create the correct client <asynch_connect> strategy.
virtual TAO_Connect_Strategy *create_connect_strategy (TAO_ORB_Core *);
+ enum Connect_Strategy
+ {
+ TAO_BLOCKED_CONNECT,
+ TAO_REACTIVE_CONNECT,
+ TAO_LEADER_FOLLOWER_CONNECT
+ };
+ /// Return the selected connection strategy option.
+ virtual Connect_Strategy connect_strategy (void) const;
+
/// Does the client allow any form of callback?
virtual int allow_callback (void);
diff --git a/TAO/tao/Codeset/Codeset_Manager_i.cpp b/TAO/tao/Codeset/Codeset_Manager_i.cpp
index ecf3fc73955..3d26ac2e423 100644
--- a/TAO/tao/Codeset/Codeset_Manager_i.cpp
+++ b/TAO/tao/Codeset/Codeset_Manager_i.cpp
@@ -62,7 +62,7 @@ TAO_Codeset_Manager_i::default_char_codeset = TAO_DEFAULT_CHAR_CODESET_ID;
CONV_FRAME::CodeSetId
TAO_Codeset_Manager_i::default_wchar_codeset = TAO_DEFAULT_WCHAR_CODESET_ID;
-TAO_Codeset_Manager_i::TAO_Codeset_Manager_i ()
+TAO_Codeset_Manager_i::TAO_Codeset_Manager_i (void)
: codeset_info_ (),
char_descriptor_ (),
wchar_descriptor_ ()
@@ -72,9 +72,10 @@ TAO_Codeset_Manager_i::TAO_Codeset_Manager_i ()
wchar_descriptor_.ncs(TAO_Codeset_Manager_i::default_wchar_codeset);
wchar_descriptor_.add_translator (ACE_TEXT ("UTF16_BOM_Factory"));
+
}
-TAO_Codeset_Manager_i::~TAO_Codeset_Manager_i ()
+TAO_Codeset_Manager_i::~TAO_Codeset_Manager_i (void)
{
}
diff --git a/TAO/tao/Codeset/Codeset_Manager_i.h b/TAO/tao/Codeset/Codeset_Manager_i.h
index f5ca8491ca3..a9167804b1c 100644
--- a/TAO/tao/Codeset/Codeset_Manager_i.h
+++ b/TAO/tao/Codeset/Codeset_Manager_i.h
@@ -19,15 +19,15 @@
#include "tao/CONV_FRAMEC.h"
#include "tao/Codeset_Manager.h"
+#include "tao/Codeset/codeset_export.h"
+#include "tao/Codeset/Codeset_Descriptor.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "ace/Unbounded_Set.h"
-#include "tao/Codeset/codeset_export.h"
-#include "tao/Codeset/Codeset_Descriptor.h"
-
+#include "ace/Dynamic_Service_Dependency.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -70,8 +70,8 @@ public:
/// to provide a non-compliant default wchar codeset may do so.
static CONV_FRAME::CodeSetId default_wchar_codeset;
- TAO_Codeset_Manager_i ();
- ~TAO_Codeset_Manager_i ();
+ TAO_Codeset_Manager_i (void);
+ ~TAO_Codeset_Manager_i (void);
/// Called by an object of TAO_Acceptor to set NCS and CCS values
/// for Char/Wchar in to the Object Reference.
diff --git a/TAO/tao/Connect_Strategy.cpp b/TAO/tao/Connect_Strategy.cpp
index 2299f775d46..9a79bece571 100644
--- a/TAO/tao/Connect_Strategy.cpp
+++ b/TAO/tao/Connect_Strategy.cpp
@@ -1,4 +1,7 @@
#include "tao/Connect_Strategy.h"
+#include "tao/Transport.h"
+#include "tao/Connection_Handler.h"
+#include "tao/LF_Multi_Event.h"
ACE_RCSID (tao,
Connect_Strategy,
@@ -16,4 +19,41 @@ TAO_Connect_Strategy::~TAO_Connect_Strategy (void)
{
}
+int
+TAO_Connect_Strategy::wait (TAO_Connection_Handler *ch,
+ ACE_Time_Value *max_wait_time)
+{
+ if (ch == 0)
+ return -1;
+
+ return this->wait_i (ch, ch->transport (),max_wait_time);
+}
+
+int
+TAO_Connect_Strategy::wait (TAO_Transport *t,
+ ACE_Time_Value *max_wait_time)
+{
+ // Basically the connection was EINPROGRESS, but before we could
+ // wait for it some other thread detected a failure and cleaned up
+ // the connection handler.
+ if (t == 0)
+ return -1;
+
+ return this->wait_i (t->connection_handler(),t,max_wait_time);
+}
+
+int
+TAO_Connect_Strategy::wait (TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *max_wait_time)
+{
+ return this->wait_i (mev, mev->base_transport(), max_wait_time);
+}
+
+int
+TAO_Connect_Strategy::poll (TAO_LF_Multi_Event *mev)
+{
+ ACE_Time_Value zero(ACE_Time_Value::zero);
+ return this->wait_i (mev, mev->base_transport(), &zero);
+}
+
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Connect_Strategy.h b/TAO/tao/Connect_Strategy.h
index 1189a6cd171..4783039326a 100644
--- a/TAO/tao/Connect_Strategy.h
+++ b/TAO/tao/Connect_Strategy.h
@@ -34,6 +34,8 @@ class TAO_ORB_Core;
class TAO_Connector;
class TAO_Connection_Handler;
class TAO_Transport;
+class TAO_LF_Multi_Event;
+class TAO_LF_Event;
/**
* @class TAO_Connect_Strategy
@@ -72,13 +74,23 @@ public:
/* If the connection establishment fails the state within the
* connection handler is set appropriately.
*/
- virtual int wait (TAO_Connection_Handler *ch,
- ACE_Time_Value *val) = 0;
+ int wait (TAO_Connection_Handler *ch, ACE_Time_Value *val);
- virtual int wait (TAO_Transport *t,
- ACE_Time_Value *val) = 0;
+ int wait (TAO_Transport *t, ACE_Time_Value *val);
+
+ /// Wait for one of many connections to complete. Returns when one
+ /// succeeds or all fail.
+ int wait (TAO_LF_Multi_Event *ev, ACE_Time_Value *val);
+
+ /// Do a quick check to see if any connections are complete. This
+ /// does the same as the wait with an explicit time value of 0.
+ int poll (TAO_LF_Multi_Event *ev);
protected:
+ /// This is the method that does all the real interesting stuff.
+ virtual int wait_i (TAO_LF_Event *ev,
+ TAO_Transport *t,
+ ACE_Time_Value *val) = 0;
/// Cached copy of the ORB core pointer
TAO_ORB_Core * const orb_core_;
diff --git a/TAO/tao/DLL_Parser.cpp b/TAO/tao/DLL_Parser.cpp
index 753ae4496d7..87fb45d897f 100644
--- a/TAO/tao/DLL_Parser.cpp
+++ b/TAO/tao/DLL_Parser.cpp
@@ -6,6 +6,7 @@
#include "tao/Environment.h"
#include "tao/ORB_Constants.h"
#include "tao/SystemException.h"
+#include "tao/ORB_Core.h"
#include "ace/Dynamic_Service.h"
#include "ace/Log_Msg.h"
@@ -44,8 +45,11 @@ TAO_DLL_Parser::parse_string (const char *ior,
const char *name =
ior + sizeof (::dll_prefix) - 1;
+ TAO_ORB_Core *oc = orb->orb_core ();
+
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance (name);
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (oc->configuration(), name);
if (loader == 0)
{
diff --git a/TAO/tao/Endpoint.cpp b/TAO/tao/Endpoint.cpp
index 75f61995341..6077a1b6b94 100644
--- a/TAO/tao/Endpoint.cpp
+++ b/TAO/tao/Endpoint.cpp
@@ -1,6 +1,7 @@
// $Id$
#include "tao/Endpoint.h"
+#include "tao/ORB_Core.h"
#if !defined (__ACE_INLINE__)
#include "tao/Endpoint.i"
@@ -16,6 +17,14 @@ TAO_Endpoint::~TAO_Endpoint (void)
{
}
+TAO_Endpoint *
+TAO_Endpoint::next_filtered (TAO_ORB_Core *, TAO_Endpoint *root)
+{
+ if (root == 0)
+ return this;
+ return this->next();
+}
+
TAO_END_VERSIONED_NAMESPACE_DECL
//@@ TAO_ENDPOINT_SPL_METHODS_ADD_HOOK
diff --git a/TAO/tao/Endpoint.h b/TAO/tao/Endpoint.h
index b762595ef58..d89582e973e 100644
--- a/TAO/tao/Endpoint.h
+++ b/TAO/tao/Endpoint.h
@@ -29,6 +29,8 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+class TAO_ORB_Core;
+
/*
* Includes and forward decls for specializing TAO's
* endpoint implementation.
@@ -79,12 +81,29 @@ public:
*/
virtual CORBA::Boolean is_equivalent (const TAO_Endpoint *other_endpoint) = 0;
- /// Endpoints can be stringed in a list.
+ /// Endpoints can be linked in a list.
/**
* @return The next endpoint in the list, if any.
*/
virtual TAO_Endpoint *next (void) = 0;
+ /**
+ * Return the next endpoint in the list, but use protocol-specific
+ * filtering to constrain the value. The orb core is needed to supply
+ * any sort of filter arguments, and the root endpoint is needed in case
+ * the algorithm needs to rewind. If the supplied root is 0, then this
+ * is assumed to be the candidate next endpoint.
+ *
+ * To use this, the caller starts off the change with root == 0. This
+ * is a bit of a violation in logic, a more correct implementation would
+ * accept this == 0 and a non-null root.
+ * To do iteration using next_filtered, do:
+ * for (TAO_Endpoint *ep = root_endpoint->next_filtered (orb_core, 0);
+ * ep != 0;
+ * ep = ep->next_filtered(orb_core, root_endpoint)) { }
+ */
+ virtual TAO_Endpoint *next_filtered (TAO_ORB_Core *, TAO_Endpoint *root);
+
/// Return a string representation for the address.
/**
* The purpose of this method is to provide a general interface to
diff --git a/TAO/tao/IIOP_Connection_Handler.cpp b/TAO/tao/IIOP_Connection_Handler.cpp
index 7073a6523fc..ddfda1fdb1b 100644
--- a/TAO/tao/IIOP_Connection_Handler.cpp
+++ b/TAO/tao/IIOP_Connection_Handler.cpp
@@ -89,6 +89,8 @@ TAO_IIOP_Connection_Handler::open (void*)
this->orb_core ()->orb_params ()->nodelay ();
protocol_properties.keep_alive_ =
this->orb_core ()->orb_params ()->sock_keepalive ();
+ protocol_properties.dont_route_ =
+ this->orb_core ()->orb_params ()->sock_dontroute ();
TAO_Protocols_Hooks *tph =
this->orb_core ()->get_protocols_hooks ();
@@ -148,6 +150,21 @@ TAO_IIOP_Connection_Handler::open (void*)
}
}
+#if !defined (ACE_LACKS_SO_DONTROUTE)
+ if (protocol_properties.dont_route_)
+ {
+ if (this->peer ().
+ set_option (SOL_SOCKET,
+ SO_DONTROUTE,
+ (void *) &protocol_properties.dont_route_,
+ sizeof (protocol_properties.dont_route_)) == -1
+ && errno != ENOTSUP)
+ {
+ return -1;
+ }
+ }
+#endif /* ! ACE_LACKS_SO_DONTROUTE */
+
if (this->transport ()->wait_strategy ()->non_blocking ()
|| this->transport ()->opened_as () == TAO::TAO_SERVER_ROLE)
{
@@ -169,8 +186,9 @@ TAO_IIOP_Connection_Handler::open (void*)
if (TAO_debug_level > 2)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT("TAO (%P|%t) - IIOP_Connection_Handler::open, ")
- ACE_TEXT("The local addr is <%s> \n"),
- local_addr. get_host_addr ()));
+ ACE_TEXT("The local addr is <%s:%d> \n"),
+ local_addr.get_host_addr (),
+ local_addr.get_port_number()));
if (local_addr == remote_addr)
{
@@ -478,6 +496,31 @@ TAO_IIOP_Connection_Handler::set_dscp_codepoint (CORBA::Boolean set_network_prio
return 0;
}
+
+void
+TAO_IIOP_Connection_Handler::abort (void)
+{
+ struct linger lval;
+ lval.l_onoff = 1;
+ lval.l_linger = 0;
+
+ if (this->peer ().set_option(SOL_SOCKET,
+ SO_LINGER,
+ (void*) &lval,
+ sizeof (lval)) == -1)
+ {
+ if (TAO_debug_level)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) Unable to set ")
+ ACE_TEXT ("SO_LINGER on %d\n"),
+ this->peer ().get_handle ()));
+ }
+ }
+}
+
+
+
//@@ CONNECTION_HANDLER_SPL_COPY_HOOK_END
/*
* End copy hook
diff --git a/TAO/tao/IIOP_Connection_Handler.h b/TAO/tao/IIOP_Connection_Handler.h
index 08e2b7478af..16f647affa0 100644
--- a/TAO/tao/IIOP_Connection_Handler.h
+++ b/TAO/tao/IIOP_Connection_Handler.h
@@ -109,6 +109,11 @@ public:
virtual int open_handler (void *);
+ /// This is used during a canceled connection attempt. Force the
+ /// SO_LINGER timeout to 0 so that when the peer is closed, it won't
+ /// hang around.
+ void abort (void);
+
protected:
/// Constructor that could be used by the derived classes.
diff --git a/TAO/tao/IIOP_Connector.cpp b/TAO/tao/IIOP_Connector.cpp
index 91cd5db0599..dd7aa107fe7 100644
--- a/TAO/tao/IIOP_Connector.cpp
+++ b/TAO/tao/IIOP_Connector.cpp
@@ -10,11 +10,14 @@
#include "tao/Connect_Strategy.h"
#include "tao/Thread_Lane_Resources.h"
#include "tao/Profile_Transport_Resolver.h"
+#include "tao/Base_Transport_Property.h"
#include "tao/Transport.h"
#include "tao/Wait_Strategy.h"
#include "tao/SystemException.h"
+#include "tao/LF_Multi_Event.h"
#include "ace/OS_NS_strings.h"
#include "ace/OS_NS_string.h"
+#include "ace/OS_NS_time.h"
ACE_RCSID (tao,
IIOP_Connector,
@@ -22,6 +25,51 @@ ACE_RCSID (tao,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+//-----------------------------------------------------------------------------
+
+/**
+ * @class TAO_Event_Handler_Array_var
+ *
+ * @brief Auto pointer like class for an array of Event Handlers.
+ *
+ * Used to manage lifecycle of handlers. This class calls
+ * ACE_Event_Handler::remove_reference() on each handler in its destructor
+ * This class started out life as a replacement for the ACE_Event_Handle_var
+ * but is now pared down to be very specific in its role..
+ */
+class TAO_IIOP_Connection_Handler_Array_Guard
+{
+public:
+ TAO_IIOP_Connection_Handler_Array_Guard (TAO_IIOP_Connection_Handler **p, unsigned count);
+ ~TAO_IIOP_Connection_Handler_Array_Guard (void);
+
+private:
+ /// Handler.
+ TAO_IIOP_Connection_Handler **ptr_;
+ unsigned count_;
+};
+
+TAO_IIOP_Connection_Handler_Array_Guard::TAO_IIOP_Connection_Handler_Array_Guard (TAO_IIOP_Connection_Handler **p,
+ unsigned count)
+ : ptr_ (p),
+ count_ (count)
+{
+}
+
+TAO_IIOP_Connection_Handler_Array_Guard::~TAO_IIOP_Connection_Handler_Array_Guard (void)
+{
+ if (this->ptr_ != 0)
+ {
+ for (unsigned i = 0; i < this->count_; i++)
+ this->ptr_[i]->remove_reference ();
+ }
+}
+
+//---------------------------------------------------------------------------
+
+
TAO_IIOP_Connector::~TAO_IIOP_Connector (void)
{
}
@@ -81,6 +129,12 @@ TAO_IIOP_Connector::close (void)
}
int
+TAO_IIOP_Connector::supports_parallel_connects(void) const
+{
+ return 1;
+}
+
+int
TAO_IIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint)
{
TAO_IIOP_Endpoint *iiop_endpoint =
@@ -105,8 +159,8 @@ TAO_IIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint)
if (TAO_debug_level > 0)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) IIOP connection failed.\n")
- ACE_TEXT ("TAO (%P|%t) This is most likely ")
+ ACE_TEXT ("(%P|%t) IIOP connection failed.\n")
+ ACE_TEXT (" This is most likely ")
ACE_TEXT ("due to a hostname lookup ")
ACE_TEXT ("failure.\n")));
}
@@ -122,12 +176,124 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
TAO_Transport_Descriptor_Interface &desc,
ACE_Time_Value *timeout)
{
+ TAO_IIOP_Connection_Handler *svc_handler = 0;
TAO_IIOP_Endpoint *iiop_endpoint =
- this->remote_endpoint (desc.endpoint ());
-
+ this->remote_endpoint (desc.endpoint());
+ int result = -1;
if (iiop_endpoint == 0)
return 0;
+ result = this->begin_connection (svc_handler, r, iiop_endpoint, timeout);
+
+ if (result == -1 && errno != EWOULDBLOCK)
+ {
+ // connect completed unsuccessfully
+ svc_handler->remove_reference();
+ // Give users a clue to the problem.
+ if (TAO_debug_level > 3)
+ {
+ ACE_DEBUG ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) IIOP_Connector::make_connection, ")
+ ACE_TEXT("connection to <%s:%d> failed (%p)\n"),
+ ACE_TEXT_CHAR_TO_TCHAR (iiop_endpoint->host ()),
+ iiop_endpoint->port (),
+ ACE_TEXT("errno")));
+ }
+ return 0;
+ }
+ TAO_IIOP_Connection_Handler **sh_ptr = &svc_handler;
+ TAO_IIOP_Endpoint **ep_ptr = &iiop_endpoint;
+ TAO_LF_Multi_Event mev;
+ mev.add_event(svc_handler);
+ return this->complete_connection (result, sh_ptr, ep_ptr, 1U, r, &mev, timeout);
+}
+
+TAO_Transport *
+TAO_IIOP_Connector::make_parallel_connection (TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface &desc,
+ ACE_Time_Value *timeout)
+{
+ TAO_Endpoint *root_ep = desc.endpoint();
+ unsigned max_count = 1;
+ unsigned long ns_stagger =
+ this->orb_core()->orb_params()->parallel_connect_delay();
+ unsigned long sec_stagger = ns_stagger/1000;
+ ns_stagger = (ns_stagger % 1000) * 1000000;
+ for (TAO_Endpoint *ep = root_ep->next_filtered (this->orb_core(),0);
+ ep != 0;
+ ep = ep->next_filtered(this->orb_core(),root_ep))
+ max_count++;
+
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - IIOP_Connector::")
+ ACE_TEXT ("make_parallel_connection, ")
+ ACE_TEXT ("to %d endpoints\n"), max_count));
+ TAO_IIOP_Endpoint **eplist = 0;
+ TAO_IIOP_Connection_Handler **shlist = 0;
+ ACE_NEW_RETURN (shlist,TAO_IIOP_Connection_Handler *[max_count], 0);
+ ACE_NEW_RETURN (eplist, TAO_IIOP_Endpoint *[max_count], 0);
+
+ TAO_LF_Multi_Event mev;
+ int result = 0;
+ unsigned count = 0;
+ for (TAO_Endpoint *ep = root_ep->next_filtered (this->orb_core(),0);
+ ep != 0;
+ ep = ep->next_filtered(this->orb_core(),root_ep))
+ {
+ eplist[count] = this->remote_endpoint (ep);
+ shlist[count] = 0;
+ result = this->begin_connection (shlist[count],
+ r,
+ eplist[count],
+ timeout);
+
+ // The connection may fail because it is slow, or for other reasons.
+ // If it was an incomplete non-blocking connection, add it to the list
+ // to be waited on, otherwise remove the reference to the handler and
+ // move on to the next endpoint.
+ if (result == -1)
+ {
+ if (errno == EWOULDBLOCK)
+ {
+ mev.add_event(shlist[count++]);
+ if (ep->next() != 0)
+ {
+ struct timespec nsleep = {sec_stagger, ns_stagger};
+ ACE_OS::nanosleep (&nsleep);
+ result = this->active_connect_strategy_->poll (&mev);
+ if (result != -1)
+ break;
+ }
+ }
+ else
+ {
+ shlist[count]->remove_reference(); // done bump the list count
+ }
+ continue;
+ }
+
+ if (result != -1) // we have a winner!
+ {
+ count++;
+ break; // no waiting involved since a connection is completed
+ }
+ }
+
+ TAO_Transport *winner = 0;
+ if (count > 0) // only complete if at least one pending or success
+ winner = this->complete_connection (result,shlist,eplist,count,r,&mev,timeout);
+ delete [] shlist; // reference reductions should have been done already
+ delete [] eplist;
+ return winner;
+}
+
+int
+TAO_IIOP_Connector::begin_connection (TAO_IIOP_Connection_Handler *&svc_handler,
+ TAO::Profile_Transport_Resolver *r,
+ TAO_IIOP_Endpoint *iiop_endpoint,
+ ACE_Time_Value *timeout)
+{
const ACE_INET_Addr &remote_address =
iiop_endpoint->object_addr ();
@@ -146,8 +312,8 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
if (TAO_debug_level > 2)
ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t) - IIOP_Connector::make_connection, "
- "to <%s:%d> which should %s\n",
+ ACE_TEXT ("TAO (%P|%t) - IIOP_Connector::begin_connection, ")
+ ACE_TEXT ("to <%s:%d> which should %s\n"),
ACE_TEXT_TO_TCHAR_IN(iiop_endpoint->host()),
iiop_endpoint->port(),
r->blocked_connect () ? ACE_TEXT("block") : ACE_TEXT("nonblock")));
@@ -167,7 +333,7 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
timeout = &tmp_zero;
}
- TAO_IIOP_Connection_Handler *svc_handler = 0;
+ svc_handler = 0;
int result =
this->base_connector_.connect (svc_handler,
@@ -193,62 +359,124 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
// once the connect() returns since this might be too late if
// another thread pick up the completion and potentially deletes the
// handler before we get a chance to increment the reference count.
+ return result;
+}
- // Make sure that we always do a remove_reference
- ACE_Event_Handler_var svc_handler_auto_ptr (svc_handler);
-
- TAO_Transport *transport = svc_handler->transport ();
-
- if (result == -1)
+TAO_Transport *
+TAO_IIOP_Connector::complete_connection (int result,
+ TAO_IIOP_Connection_Handler **&sh_list,
+ TAO_IIOP_Endpoint **ep_list,
+ unsigned count,
+ TAO::Profile_Transport_Resolver *r,
+ TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *timeout)
+{
+ // Make sure that we always do a remove_reference for every member
+ // of the list
+ TAO_IIOP_Connection_Handler_Array_Guard svc_handler_auto_ptr (sh_list,count);
+ TAO_Transport *transport = 0;
+ TAO_Transport **tlist = 0;
+ ACE_NEW_RETURN (tlist,TAO_Transport*[count],0);
+
+ // populate the transport list
+ for (unsigned i = 0; i < count; i++)
+ tlist[i] = sh_list[i]->transport();
+
+ if (result != -1)
+ {
+ // We received a compeleted connection and 0 or more pending.
+ // the winner is the last member of the list, because the
+ // iterator stopped on a successful connect.
+ transport = tlist[count-1];
+ }
+ else
{
- // No immediate result, wait for completion
- if (errno == EWOULDBLOCK)
+ if (count == 1)
{
- // Try to wait until connection completion. Incase we block, then we
- // get a connected transport or not. In case of non block we get
- // a connected or not connected transport
+ transport = tlist[0];
if (!this->wait_for_connection_completion (r,
transport,
timeout))
{
if (TAO_debug_level > 2)
- ACE_ERROR ((LM_ERROR, "TAO (%P|%t) - IIOP_Connector::"
- "make_connection, "
- "wait for completion failed\n"));
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - IIOP_Connector::")
+ ACE_TEXT ("complete_connection, wait for completion ")
+ ACE_TEXT ("failed for 1 pending connect\n")));
}
}
else
{
- // Transport is not usable
- transport = 0;
+ if (!this->wait_for_connection_completion (r,
+ transport,
+ tlist,
+ count,
+ mev,
+ timeout))
+ {
+ if (TAO_debug_level > 2)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - IIOP_Connector::")
+ ACE_TEXT ("complete_connection, wait for completion ")
+ ACE_TEXT ("failed for %d pending connects\n"),
+ count));
+ }
+ }
+ }
+ // At this point, the connection has be successfully created
+ // connected or not connected, but we have a connection.
+ TAO_IIOP_Connection_Handler *svc_handler = 0;
+ TAO_IIOP_Endpoint *iiop_endpoint = 0;
+
+ if (transport != 0)
+ {
+ for (unsigned i = 0; i < count; i++)
+ {
+ if (transport == tlist[i])
+ {
+ svc_handler = sh_list[i];
+ iiop_endpoint = ep_list[i];
+ break;
+ }
}
}
+
+ // Done with the transport list
+ delete [] tlist;
+
// In case of errors transport is zero
if (transport == 0)
{
// Give users a clue to the problem.
if (TAO_debug_level > 3)
+ {
+ for (unsigned i = 0; i < count; i++)
ACE_DEBUG ((LM_ERROR,
- "TAO (%P|%t) - IIOP_Connector::make_connection, "
- "connection to <%s:%d> failed (%p)\n",
- iiop_endpoint->host (), iiop_endpoint->port (),
+ ACE_TEXT ("(%P|%t) IIOP_Connector::make_connection, ")
+ ACE_TEXT("connection to <%s:%d> failed (%p)\n"),
+ ACE_TEXT_CHAR_TO_TCHAR (ep_list[i]->host ()),
+ ep_list[i]->port (),
ACE_TEXT("errno")));
+ }
return 0;
}
- // At this point, the connection has be successfully created
- // connected or not connected, but we have a connection.
+
if (TAO_debug_level > 2)
+ {
ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t) - IIOP_Connector::make_connection, "
- "new %s connection to <%s:%d> on Transport[%d]\n",
- transport->is_connected() ? "connected" : "not connected",
- iiop_endpoint->host (),
+ ACE_TEXT ("TAO (%P|%t) - IIOP_Connector::make_connection, ")
+ ACE_TEXT ("new %s connection to <%s:%d> on Transport[%d]\n"),
+ transport->is_connected() ?
+ ACE_TEXT("connected") : ACE_TEXT("not connected"),
+ ACE_TEXT_CHAR_TO_TCHAR (iiop_endpoint->host ()),
iiop_endpoint->port (),
svc_handler->peer ().get_handle ()));
+ }
+ TAO_Base_Transport_Property desc(iiop_endpoint,0);
// Add the handler to Cache
int retval =
this->orb_core ()->lane_resources ().transport_cache ().cache_transport (
@@ -264,8 +492,8 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
if (TAO_debug_level > 0)
{
ACE_ERROR ((LM_ERROR,
- "TAO (%P|%t) - IIOP_Connector::make_connection, "
- "could not add the new connection to cache\n"));
+ ACE_TEXT ("(%P|%t) IIOP_Connector::make_connection, ")
+ ACE_TEXT ("could not add new connection to cache\n")));
}
return 0;
@@ -285,9 +513,9 @@ TAO_IIOP_Connector::make_connection (TAO::Profile_Transport_Resolver *r,
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
- "TAO (%P|%t) - IIOP_Connector [%d]::make_connection, "
- "could not register the transport "
- "in the reactor.\n",
+ ACE_TEXT ("(%P|%t) IIOP_Connector [%d]::make_connection, ")
+ ACE_TEXT ("could not register the transport ")
+ ACE_TEXT ("in the reactor.\n"),
transport->id ()));
return 0;
@@ -395,10 +623,15 @@ TAO_IIOP_Connector::cancel_svc_handler (
// Cancel from the connector
if (handler)
+ {
+ handler->abort();
return this->base_connector_.cancel (handler);
+ }
return -1;
}
+
+
//@@ TAO_CONNECTOR_SPL_COPY_HOOK_END
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/IIOP_Connector.h b/TAO/tao/IIOP_Connector.h
index f465814dbc6..c1026010a09 100644
--- a/TAO/tao/IIOP_Connector.h
+++ b/TAO/tao/IIOP_Connector.h
@@ -90,12 +90,23 @@ public:
//@@ TAO_CONNECTOR_SPL_PUBLIC_METHODS_COPY_HOOK_END
protected:
+ /// A flag indicating the actual connector supports parallel
+ /// connection attempts. The base implementation always returns
+ /// 0. Override to return non-zero if parallel connection attempts
+ /// may be tried.
+ virtual int supports_parallel_connects (void) const;
// = The TAO_Connector methods, please check the documentation on
// Transport_Connector.h
int set_validate_endpoint (TAO_Endpoint *ep);
- TAO_Transport *make_connection (TAO::Profile_Transport_Resolver *r,
+ virtual TAO_Transport *make_connection (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface &desc,
+ ACE_Time_Value *timeout = 0);
+
+ virtual TAO_Transport *make_parallel_connection (
+ TAO::Profile_Transport_Resolver *r,
TAO_Transport_Descriptor_Interface &desc,
ACE_Time_Value *timeout = 0);
@@ -118,6 +129,26 @@ protected:
const bool lite_flag_;
private:
+ /// This is the first half of making a connection. Both make_connection
+ /// and make_parallel_connection will start out using begin_connection.
+ int begin_connection (TAO_IIOP_Connection_Handler *&svc_handler,
+ TAO::Profile_Transport_Resolver *r,
+ TAO_IIOP_Endpoint *endpoint,
+ ACE_Time_Value *timeout = 0);
+
+ /// This is the second half of making a connection when several endpoints
+ /// are involved. This works with modified wait strategies to wait for one
+ /// of many transports, and when once completes it will cancel the rest.
+ /// The winning transport is returned.
+ TAO_Transport *complete_connection (int result,
+ TAO_IIOP_Connection_Handler **&sh_list,
+ TAO_IIOP_Endpoint **ep_list,
+ unsigned count,
+ TAO::Profile_Transport_Resolver *r,
+ TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *timeout = 0);
+
+
/// Return the remote endpoint, a helper function
TAO_IIOP_Endpoint *remote_endpoint (TAO_Endpoint *ep);
diff --git a/TAO/tao/IIOP_Endpoint.cpp b/TAO/tao/IIOP_Endpoint.cpp
index 2ca751b4ba2..f72f3999629 100644
--- a/TAO/tao/IIOP_Endpoint.cpp
+++ b/TAO/tao/IIOP_Endpoint.cpp
@@ -109,6 +109,22 @@ TAO_IIOP_Endpoint::TAO_IIOP_Endpoint (const char *host,
//@@ TAO_ENDPOINT_SPL_COPY_HOOK_END
+TAO_IIOP_Endpoint &
+TAO_IIOP_Endpoint::operator= (const TAO_IIOP_Endpoint &other)
+{
+ this->host_ = other.host_;
+ this->port_ = other.port_;
+#if defined (ACE_HAS_IPV6)
+ this->is_ipv6_decimal_ = other.is_ipv6_decimal_;
+#endif /* ACE_HAS_IPV6 */
+ this->is_encodable_ = other.is_encodable_;
+ this->object_addr_set_ = other.object_addr_set_;
+ this->object_addr_ = other.object_addr_;
+ this->preferred_path_ = other.preferred_path_;
+ this->next_ = 0; // do not copy list membership, since we are only cloning the values
+ return *this;
+}
+
TAO_IIOP_Endpoint::~TAO_IIOP_Endpoint (void)
{
}
@@ -228,6 +244,75 @@ TAO_IIOP_Endpoint::next (void)
}
TAO_Endpoint *
+TAO_IIOP_Endpoint::next_filtered (TAO_ORB_Core * orb_core, TAO_Endpoint *root)
+{
+ bool want_ipv6 = false;
+ bool ipv6_only = false;
+ bool prefer_ipv6 = false;
+#if defined (ACE_HAS_IPV6)
+ want_ipv6 = true;
+ ipv6_only = orb_core->orb_params()->connect_ipv6_only();
+ prefer_ipv6 = orb_core->orb_params()->prefer_ipv6_interfaces();
+#else
+ ACE_UNUSED_ARG (orb_core);
+#endif /* ACE_HAS_IPV6 */
+ return
+ this->next_filtered_i (static_cast<TAO_IIOP_Endpoint *>(root),
+ ipv6_only,
+ prefer_ipv6,
+ want_ipv6);
+}
+
+TAO_IIOP_Endpoint*
+TAO_IIOP_Endpoint::next_filtered_i (TAO_IIOP_Endpoint *root,
+ bool ipv6_only,
+ bool prefer_ipv6,
+ bool want_ipv6)
+{
+ // the candidate is nominally the next entry in the list, but since
+ // the list may loop back on itself, the root of the list needs to be
+ // initialized.
+ TAO_IIOP_Endpoint *candidate = (root == 0) ? this : next_;
+ if (root == 0)
+ root = this;
+
+#if defined (ACE_HAS_IPV6)
+ if (ipv6_only)
+ {
+ if (candidate == 0 || candidate->is_ipv6_decimal())
+ return candidate;
+ const ACE_INET_Addr &addr = candidate->object_addr ();
+ bool allowed = addr.get_type () == AF_INET6 &&
+ !addr.is_ipv4_mapped_ipv6();
+
+ return allowed ? candidate :
+ candidate->next_filtered_i(root, ipv6_only, prefer_ipv6, true);
+ }
+ if (prefer_ipv6)
+ {
+ if (candidate == 0)
+ return !want_ipv6 ? candidate :
+ root->next_filtered_i(root, ipv6_only, prefer_ipv6, false);
+
+ if (want_ipv6 == candidate->is_ipv6_decimal())
+ return candidate;
+
+ const ACE_INET_Addr &addr = candidate->object_addr ();
+ bool really_ipv6 = addr.get_type () == AF_INET6 &&
+ !addr.is_ipv4_mapped_ipv6();
+ return (want_ipv6 == really_ipv6) ? candidate :
+ candidate->next_filtered_i(root, ipv6_only, prefer_ipv6, want_ipv6);
+ }
+#else
+ ACE_UNUSED_ARG (want_ipv6);
+ ACE_UNUSED_ARG (ipv6_only);
+ ACE_UNUSED_ARG (prefer_ipv6);
+#endif
+
+ return candidate;
+}
+
+TAO_Endpoint *
TAO_IIOP_Endpoint::duplicate (void)
{
TAO_IIOP_Endpoint *endpoint = 0;
diff --git a/TAO/tao/IIOP_Endpoint.h b/TAO/tao/IIOP_Endpoint.h
index 73fda040cd1..fff92575b94 100644
--- a/TAO/tao/IIOP_Endpoint.h
+++ b/TAO/tao/IIOP_Endpoint.h
@@ -85,6 +85,23 @@ public:
virtual TAO_Endpoint *next (void);
+ /**
+ * Return the next endpoint in the list, but use protocol-specific
+ * filtering to constrain the value. The orb core is needed to supply
+ * any sort of filter arguments, and the root endpoint is needed in case
+ * the algorithm needs to rewind. If the supplied root is 0, then this
+ * is assumed to be the candidate next endpoint.
+ *
+ * To use this, the caller starts off the change with root == 0. This
+ * is a bit of a violation in logic, a more correct implementation would
+ * accept this == 0 and a non-null root.
+ * To do iteration using next_filtered, do:
+ * for (TAO_Endpoint *ep = root_endpoint->next_filtered (orb_core, 0);
+ * ep != 0;
+ * ep = ep->next_filtered(orb_core, root_endpoint)) { }
+ */
+ virtual TAO_Endpoint *next_filtered (TAO_ORB_Core *, TAO_Endpoint *root);
+
virtual int addr_to_string (char *buffer, size_t length);
/// Makes a copy of @c this
@@ -135,7 +152,17 @@ public:
//@@ TAO_ENDPOINT_SPL_PUBLIC_METHODS_COPY_HOOK_END
+
+ /// Need to have an assignment operator since the IIOP_Profile class may
+ /// have to reorder its list of endpoints based on filtering by the EndpointPolicy.
+ TAO_IIOP_Endpoint & operator= (const TAO_IIOP_Endpoint& other);
+
private:
+ TAO_IIOP_Endpoint *next_filtered_i (TAO_IIOP_Endpoint *root,
+ bool ipv6_only,
+ bool prefer_ipv6,
+ bool want_ipv6);
+
//@@ TAO_ENDPOINT_SPL_PRIVATE_DATA_COPY_HOOK_START
diff --git a/TAO/tao/IIOP_Profile.cpp b/TAO/tao/IIOP_Profile.cpp
index 93bc39cbd7d..4866b52a071 100644
--- a/TAO/tao/IIOP_Profile.cpp
+++ b/TAO/tao/IIOP_Profile.cpp
@@ -202,13 +202,16 @@ TAO_IIOP_Profile::parse_string_i (const char *ior
{
// A port number or port name was specified.
CORBA::ULong length_port = okd - cp_pos - 1;
-
CORBA::String_var tmp = CORBA::string_alloc (length_port);
ACE_OS::strncpy (tmp.inout (), cp_pos + 1, length_port);
tmp[length_port] = '\0';
-
- if (ACE_OS::strspn (tmp.in (), "1234567890") == length_port)
+ if (length_port == 0)
+ {
+ this->endpoint_.port_ = 2809; // default IIOP port for
+ // parsing corbaloc strings
+ }
+ else if (ACE_OS::strspn (tmp.in (), "1234567890") == length_port)
{
this->endpoint_.port_ =
static_cast<CORBA::UShort> (ACE_OS::atoi (tmp.in ()));
@@ -299,6 +302,9 @@ TAO_IIOP_Profile::parse_string_i (const char *ior
CORBA::Boolean
TAO_IIOP_Profile::do_is_equivalent (const TAO_Profile *other_profile)
{
+ if (other_profile == this)
+ return 1;
+
const TAO_IIOP_Profile *op =
dynamic_cast<const TAO_IIOP_Profile *> (other_profile);
@@ -306,6 +312,10 @@ TAO_IIOP_Profile::do_is_equivalent (const TAO_Profile *other_profile)
if (op == 0)
return 0;
+ if (this->count_ == 0 && op->count_ == 0)
+ return 1;
+ if (this->count_ != op->count_)
+ return 0;
// Check endpoints equivalence.
const TAO_IIOP_Endpoint *other_endp = &op->endpoint_;
for (TAO_IIOP_Endpoint *endp = &this->endpoint_;
@@ -372,6 +382,65 @@ TAO_IIOP_Profile::add_endpoint (TAO_IIOP_Endpoint *endp)
++this->count_;
}
+void
+TAO_IIOP_Profile::remove_endpoint (TAO_IIOP_Endpoint *endp)
+{
+ if (endp == 0)
+ return;
+
+ // special handling for the target matching the base endpoint
+ if (endp == &this->endpoint_)
+ {
+ if (--this->count_ > 0)
+ {
+ TAO_IIOP_Endpoint* n = this->endpoint_.next_;
+ this->endpoint_ = *n;
+ // since the assignment operator does not copy the next_
+ // pointer, we must do it by hand
+ this->endpoint_.next_ = n->next_;
+ delete n;
+ }
+ return;
+ }
+
+ TAO_IIOP_Endpoint* last = &this->endpoint_;
+ TAO_IIOP_Endpoint* cur = this->endpoint_.next_;
+
+ while (cur != 0)
+ {
+ if (cur == endp)
+ break;
+ last = cur;
+ cur = cur->next_;
+ }
+
+ if (cur != 0)
+ {
+ last->next_ = cur->next_;
+ cur->next_ = 0;
+ --this->count_;
+ delete cur;
+ }
+}
+
+void
+TAO_IIOP_Profile::remove_generic_endpoint (TAO_Endpoint *ep)
+{
+ this->remove_endpoint(dynamic_cast<TAO_IIOP_Endpoint *>(ep));
+}
+
+void
+TAO_IIOP_Profile::add_generic_endpoint (TAO_Endpoint *endp)
+{
+ TAO_IIOP_Endpoint *iep = dynamic_cast<TAO_IIOP_Endpoint *>(endp);
+ if (iep != 0)
+ {
+ TAO_IIOP_Endpoint *clone;
+ ACE_NEW (clone, TAO_IIOP_Endpoint(*iep));
+ this->add_endpoint(clone);
+ }
+}
+
char *
TAO_IIOP_Profile::to_string (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
{
diff --git a/TAO/tao/IIOP_Profile.h b/TAO/tao/IIOP_Profile.h
index 4c338cbc664..03cf95694bd 100644
--- a/TAO/tao/IIOP_Profile.h
+++ b/TAO/tao/IIOP_Profile.h
@@ -77,6 +77,18 @@ public:
*/
void add_endpoint (TAO_IIOP_Endpoint *endp);
+ /**
+ * Remove @a endp from this profile's list of endpoints and free the
+ * @a endp memory.
+ * This method assumes @a endp is in this profile's endpoint list.
+ */
+ void remove_endpoint (TAO_IIOP_Endpoint *endp);
+
+ virtual void remove_generic_endpoint (TAO_Endpoint *ep);
+
+ /// Add an endpoint when the specific endpoint type is unknown
+ virtual void add_generic_endpoint (TAO_Endpoint *ep);
+
//@@ TAO_PROFILE_SPL_PUBLIC_METHODS_COPY_HOOK_END
/// The object key delimiter that IIOP uses or expects.
diff --git a/TAO/tao/IORInterceptor/IORInfo.cpp b/TAO/tao/IORInterceptor/IORInfo.cpp
index 8c9f231166f..de6dd91494d 100644
--- a/TAO/tao/IORInterceptor/IORInfo.cpp
+++ b/TAO/tao/IORInterceptor/IORInfo.cpp
@@ -90,14 +90,16 @@ TAO_IORInfo::add_ior_component_to_profile (
ACE_CHECK;
}
-PortableInterceptor::AdapterManagerId
+char *
TAO_IORInfo::manager_id (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
this->check_validity (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
- return this->poa_->get_manager_id (ACE_ENV_SINGLE_ARG_PARAMETER);
+ PortableServer::POAManager_var poa_manager = this->poa_->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+ return poa_manager->get_id (ACE_ENV_SINGLE_ARG_PARAMETER);
}
PortableInterceptor::AdapterState
diff --git a/TAO/tao/IORInterceptor/IORInfo.h b/TAO/tao/IORInterceptor/IORInfo.h
index d0314b30f7e..3d4803a6792 100644
--- a/TAO/tao/IORInterceptor/IORInfo.h
+++ b/TAO/tao/IORInterceptor/IORInfo.h
@@ -79,7 +79,7 @@ public:
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
- virtual PortableInterceptor::AdapterManagerId manager_id (
+ virtual char * manager_id (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/tao/IORInterceptor/IORInfoC.h b/TAO/tao/IORInterceptor/IORInfoC.h
index 80b0ab75f1d..488250f84ef 100644
--- a/TAO/tao/IORInterceptor/IORInfoC.h
+++ b/TAO/tao/IORInterceptor/IORInfoC.h
@@ -160,7 +160,7 @@ namespace PortableInterceptor
// TAO_IDL - Generated from
// be\be_visitor_operation/operation_ch.cpp:46
- virtual ::PortableInterceptor::AdapterManagerId manager_id (
+ virtual char * manager_id (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
diff --git a/TAO/tao/IORInterceptor/IORInterceptorC.h b/TAO/tao/IORInterceptor/IORInterceptorC.h
index 7f78cfe946f..5b0df155836 100644
--- a/TAO/tao/IORInterceptor/IORInterceptorC.h
+++ b/TAO/tao/IORInterceptor/IORInterceptorC.h
@@ -235,7 +235,7 @@ namespace PortableInterceptor
// be\be_visitor_operation/operation_ch.cpp:46
virtual void adapter_manager_state_changed (
- ::PortableInterceptor::AdapterManagerId id,
+ const char * id,
::PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL_WITH_DEFAULTS
)
diff --git a/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp b/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp
index 35cbb376d28..00a00383fd6 100644
--- a/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp
+++ b/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.cpp
@@ -220,7 +220,7 @@ TAO_IORInterceptor_Adapter_Impl::adapter_state_changed (
void
TAO_IORInterceptor_Adapter_Impl::adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.h b/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.h
index 6257c699b9a..5dc289f77d8 100644
--- a/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.h
+++ b/TAO/tao/IORInterceptor/IORInterceptor_Adapter_Impl.h
@@ -80,7 +80,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/tao/IORInterceptor_Adapter.h b/TAO/tao/IORInterceptor_Adapter.h
index ea337f5c9f3..5dc955a3393 100644
--- a/TAO/tao/IORInterceptor_Adapter.h
+++ b/TAO/tao/IORInterceptor_Adapter.h
@@ -101,7 +101,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
diff --git a/TAO/tao/Invocation_Endpoint_Selectors.cpp b/TAO/tao/Invocation_Endpoint_Selectors.cpp
index bdb493bd648..5221ee8d9c5 100644
--- a/TAO/tao/Invocation_Endpoint_Selectors.cpp
+++ b/TAO/tao/Invocation_Endpoint_Selectors.cpp
@@ -14,7 +14,7 @@ ACE_RCSID (tao,
"$Id$")
-TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_Invocation_Endpoint_Selector::~TAO_Invocation_Endpoint_Selector (void)
{
@@ -27,98 +27,10 @@ TAO_Default_Endpoint_Selector::~TAO_Default_Endpoint_Selector (void)
}
void
-TAO_Default_Endpoint_Selector::select_endpoint (
- TAO::Profile_Transport_Resolver *r,
- ACE_Time_Value *max_wait_time
- ACE_ENV_ARG_DECL)
+TAO_Default_Endpoint_Selector::select_endpoint (TAO::Profile_Transport_Resolver *r,
+ ACE_Time_Value *max_wait_time
+ ACE_ENV_ARG_DECL)
{
-#if defined (ACE_HAS_IPV6)
- // See if we have IIOP selector preference parameters set.
- // If so we need to walk a different path in selecting an endpoint.
- if (r->stub ()->orb_core ()->orb_params ()->prefer_ipv6_interfaces () ||
- r->stub ()->orb_core ()->orb_params ()->connect_ipv6_only ())
- {
- bool test_ipv6 = true; // first round try IPv6
-
- for (unsigned test_count = 2; test_count > 0 ;--test_count)
- {
- do
- {
- r->profile (r->stub ()->profile_in_use ());
-
- // Check whether we need to do a blocked wait or we have a
- // non-blocked wait and we support that. If this is not the
- // case we can't use this profile so try the next.
- if (r->blocked_connect () ||
- (!r->blocked_connect () &&
- r->profile ()->supports_non_blocking_oneways ()))
- {
- const size_t endpoint_count =
- r->profile ()->endpoint_count ();
-
- TAO_Endpoint *ep =
- r->profile ()->endpoint ();
-
- for (size_t i = 0; i < endpoint_count; ++i)
- {
- // in case we're running the first round:
- // try this endpoint if it either *not* an IIOP endpoint OR
- // if it is an IIOP IPv6 endpoint.
- // else
- // only try when it's an IPv4 IIOP endpoint
- bool try_ep = test_ipv6;
-
- if (r->profile ()->tag () == IOP::TAG_INTERNET_IOP)
- {
- TAO_IIOP_Endpoint *iep =
- dynamic_cast<TAO_IIOP_Endpoint *> (ep);
- if (!iep->is_ipv6_decimal ())
- {
- const ACE_INET_Addr &addr = iep->object_addr ();
-
- if (test_ipv6)
- try_ep =
- addr.get_type () == AF_INET6 &&
- !addr.is_ipv4_mapped_ipv6();
- else
- try_ep =
- addr.get_type () == AF_INET ||
- (addr.get_type () == AF_INET6 &&
- addr.is_ipv4_mapped_ipv6());
- }
- }
-
- if (try_ep)
- {
- TAO_Base_Transport_Property desc (ep);
- const bool retval =
- r->try_connect (&desc,
- max_wait_time
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
-
- // Check if the connect has completed.
- if (retval)
- return;
- }
-
- // Go to the next endpoint in this profile.
- ep = ep->next ();
- }
- }
- }
- while (r->stub ()->next_profile_retry () != 0);
-
- // If we get here we did not find any suitable non-IPv4 endpoint so
- // now try those if allowed
- if (!r->stub ()->orb_core ()->orb_params ()->connect_ipv6_only ())
- test_ipv6 = false;
- else
- break; // Do not test remaining (if any) IPv4 endpoints
- }
- }
- else
-#endif /* ACE_HAS_IPV6 */
do
{
r->profile (r->stub ()->profile_in_use ());
@@ -127,18 +39,41 @@ TAO_Default_Endpoint_Selector::select_endpoint (
// non-blocked wait and we support that. If this is not the
// case we can't use this profile so try the next.
if (r->blocked_connect () ||
- (!r->blocked_connect () && r->profile ()->supports_non_blocking_oneways ()))
+ (!r->blocked_connect () &&
+ r->profile ()->supports_non_blocking_oneways ()))
{
- size_t const endpoint_count =
- r->profile ()->endpoint_count ();
+ if (r->profile ()->endpoint_count () > 1 &&
+ r->use_parallel_connect())
+ {
+
+ TAO_Endpoint *ep =
+ r->profile ()->endpoint ();
- TAO_Endpoint * ep =
- r->profile ()->endpoint ();
+ TAO_Base_Transport_Property desc (ep);
+ bool success =
+ r->try_parallel_connect (&desc,
+ max_wait_time
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
- for (size_t i = 0; i < endpoint_count; ++i)
+ // Check if the connect has completed.
+ if (success)
+ return;
+ // The default implementation of try_parallel_connect returns
+ // a not supported errno. In this case, allow the ordinary
+ // connection mechanism to be tried. OTOH, if the connection
+ // attempt failed for some other reason, then abandon this
+ // profile and try the next one in the list.
+ else if (errno != ENOTSUP)
+ continue;
+ }
+
+ for (TAO_Endpoint *ep = r->profile ()->first_filtered_endpoint ();
+ ep != 0;
+ ep = r->profile ()->next_filtered_endpoint (ep))
{
TAO_Base_Transport_Property desc (ep);
- bool const retval =
+ bool retval =
r->try_connect (&desc,
max_wait_time
ACE_ENV_ARG_PARAMETER);
@@ -147,14 +82,13 @@ TAO_Default_Endpoint_Selector::select_endpoint (
// Check if the connect has completed.
if (retval)
return;
-
- // Go to the next endpoint in this profile.
- ep = ep->next ();
}
+
}
}
while (r->stub ()->next_profile_retry () != 0);
+
// If we get here, we completely failed to find an endpoint selector
// that we know how to use, so throw an exception.
ACE_THROW (CORBA::TRANSIENT (CORBA::OMGVMCID | 2,
diff --git a/TAO/tao/Invocation_Endpoint_Selectors.h b/TAO/tao/Invocation_Endpoint_Selectors.h
index 29b5580d88a..bd2c5101889 100644
--- a/TAO/tao/Invocation_Endpoint_Selectors.h
+++ b/TAO/tao/Invocation_Endpoint_Selectors.h
@@ -99,6 +99,7 @@ public:
virtual void select_endpoint (TAO::Profile_Transport_Resolver *r,
ACE_Time_Value *val
ACE_ENV_ARG_DECL);
+
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/LF_CH_Event.h b/TAO/tao/LF_CH_Event.h
index 2a92f9007ab..f9adcc5fb1b 100644
--- a/TAO/tao/LF_CH_Event.h
+++ b/TAO/tao/LF_CH_Event.h
@@ -23,6 +23,8 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+class TAO_LF_Multi_Event;
+
/**
* @class TAO_LF_CH_Event
*
@@ -35,6 +37,15 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
class TAO_Export TAO_LF_CH_Event: public TAO_LF_Event
{
public:
+ /**
+ * The TAO_LF_Multi_Event class is another specialization of
+ * TAO_LF_Event, used for aggregating many connection handlers into
+ * a single event object.. It requires friendship so that it can
+ * check the is_state_final() flag on each of its contained
+ * connection handlers.
+ */
+ friend class TAO_LF_Multi_Event;
+
/// Constructor
TAO_LF_CH_Event (void);
diff --git a/TAO/tao/LF_Connect_Strategy.cpp b/TAO/tao/LF_Connect_Strategy.cpp
index d1d71b550e3..bc401286334 100644
--- a/TAO/tao/LF_Connect_Strategy.cpp
+++ b/TAO/tao/LF_Connect_Strategy.cpp
@@ -1,4 +1,5 @@
#include "tao/LF_Connect_Strategy.h"
+#include "tao/LF_Multi_Event.h"
#include "tao/Connection_Handler.h"
#include "tao/LF_Follower.h"
#include "tao/Leader_Follower.h"
@@ -41,41 +42,26 @@ TAO_LF_Connect_Strategy::synch_options (ACE_Time_Value *timeout,
}
int
-TAO_LF_Connect_Strategy::wait (TAO_Connection_Handler *ch,
+TAO_LF_Connect_Strategy::wait_i (TAO_LF_Event *ev,
+ TAO_Transport *transport,
ACE_Time_Value *max_wait_time)
{
- ACE_ASSERT (ch != 0);
-
- return this->wait (ch->transport (),
- max_wait_time);
-}
-
-int
-TAO_LF_Connect_Strategy::wait (TAO_Transport *transport,
- ACE_Time_Value *max_wait_time)
-{
- // Basically the connection was EINPROGRESS, but before we could
- // wait for it some other thread detected a failure and cleaned up
- // the connection handler.
if (transport == 0)
return -1;
- TAO_Connection_Handler *ch =
- transport->connection_handler ();
-
TAO_Leader_Follower &leader_follower =
this->orb_core_->leader_follower ();
int result =
- leader_follower.wait_for_event (ch,
+ leader_follower.wait_for_event (ev,
transport,
max_wait_time);
- // Set the result.
- if (ch->error_detected () && result != -1)
+ if (ev->error_detected () && result != -1)
result = -1;
return result;
}
+
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/LF_Connect_Strategy.h b/TAO/tao/LF_Connect_Strategy.h
index 4cff8ed7976..35e6e514046 100644
--- a/TAO/tao/LF_Connect_Strategy.h
+++ b/TAO/tao/LF_Connect_Strategy.h
@@ -28,7 +28,7 @@ ACE_END_VERSIONED_NAMESPACE_DECL
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-class TAO_Connector;
+class TAO_LF_Event;
/**
* @class TAO_LF_Connect_Strategy
@@ -53,13 +53,11 @@ public:
virtual void synch_options (ACE_Time_Value *val,
ACE_Synch_Options &opt);
- virtual int wait (TAO_Connection_Handler *ch,
+protected:
+ virtual int wait_i (TAO_LF_Event *ev,
+ TAO_Transport *t,
ACE_Time_Value *val);
- virtual int wait (TAO_Transport *ch,
- ACE_Time_Value *val);
-
-
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/LF_Event.h b/TAO/tao/LF_Event.h
index 678be63cb3c..473fc8a4868 100644
--- a/TAO/tao/LF_Event.h
+++ b/TAO/tao/LF_Event.h
@@ -65,12 +65,15 @@ public:
* method is used to bind the waiting thread to the event, in order
* to let the event signal any important state changes.
*
+ * This is virtual to allow the LF_Multi_Event derived type share
+ * the follower with all the subordinate LF_CH_Events.
+ *
* @return -1 if the LF_Event is already bound, 0 otherwise
*/
- int bind (TAO_LF_Follower *follower);
+ virtual int bind (TAO_LF_Follower *follower);
/// Unbind the follower
- int unbind (void);
+ virtual int unbind (void);
//@{
/** @name State management
diff --git a/TAO/tao/MProfile.cpp b/TAO/tao/MProfile.cpp
index 59e25c0bfb7..94fb9e4dbf0 100644
--- a/TAO/tao/MProfile.cpp
+++ b/TAO/tao/MProfile.cpp
@@ -364,4 +364,19 @@ TAO_MProfile::policy_list (ACE_ENV_SINGLE_ARG_DECL)
return ret_val;
}
+int
+TAO_MProfile::give_shared_profile (TAO_Profile *pfile)
+{
+ for (unsigned i = 0; i < this->last_; i++)
+ if (pfile->tag() == this->pfiles_[i]->tag() &&
+ pfile->compare_key(this->pfiles_[i]))
+ {
+ this->pfiles_[i]->add_generic_endpoint(pfile->endpoint());
+ pfile->_decr_refcnt();
+ return i;
+ }
+ return this->give_profile(pfile,0);
+}
+
+
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/MProfile.h b/TAO/tao/MProfile.h
index ba45b3a4a5d..7fef351e37c 100644
--- a/TAO/tao/MProfile.h
+++ b/TAO/tao/MProfile.h
@@ -140,7 +140,7 @@ public:
/// Return the index of this entry or -1 if it can not be added.
/// this object assumes ownership of this profile!!
- int give_profile (TAO_Profile *pfile);
+ int give_profile (TAO_Profile *pfile, int share = 0);
/// append the profiles in pfiles to this object. The count
/// will be incremented on the individual profile objects.
@@ -217,6 +217,12 @@ private:
/// Helper method to implement the destructor
void cleanup (void);
+ /// A helper to give_profile to be used when share is true. This
+ /// method is used primarily to help the corbaloc parser create a
+ /// single profile with multiple endpoints rather than constructing
+ /// multiple profiles with 1 endpoint per.
+ int give_shared_profile (TAO_Profile *pfile);
+
private:
/**
diff --git a/TAO/tao/MProfile.i b/TAO/tao/MProfile.i
index b3ebb70abf5..2cf4d05d274 100644
--- a/TAO/tao/MProfile.i
+++ b/TAO/tao/MProfile.i
@@ -142,8 +142,10 @@ TAO_MProfile::rewind (void)
current_ = 0;
}
ACE_INLINE int
-TAO_MProfile::give_profile (TAO_Profile *pfile)
+TAO_MProfile::give_profile (TAO_Profile *pfile, int share)
{
+ if (share)
+ return this->give_shared_profile(pfile);
// skip by the used slots
if (last_ == size_) // full!
return -1;
diff --git a/TAO/tao/Makefile.am b/TAO/tao/Makefile.am
index 8829c8e503c..40e0939707f 100644
--- a/TAO/tao/Makefile.am
+++ b/TAO/tao/Makefile.am
@@ -130,6 +130,7 @@ libTAO_la_SOURCES = \
LF_Follower_Auto_Adder.cpp \
LF_Follower_Auto_Ptr.cpp \
LF_Invocation_Event.cpp \
+ LF_Multi_Event.cpp \
LF_Strategy.cpp \
LF_Strategy_Complete.cpp \
LRU_Connection_Purging_Strategy.cpp \
@@ -276,6 +277,7 @@ nobase_include_HEADERS = \
Any_Insert_Policy_T.h \
Arg_Traits_T.h \
Argument.h \
+ Array_Traits_T.h \
Array_VarOut_T.cpp \
Array_VarOut_T.h \
Array_VarOut_T.inl \
@@ -301,6 +303,16 @@ nobase_include_HEADERS = \
BooleanSeq.pidl \
BooleanSeqC.h \
BooleanSeqS.h \
+ Bounded_Array_Allocation_Traits.h \
+ Bounded_Array_Sequence_T.h \
+ Bounded_Basic_String_Sequence_T.h \
+ Bounded_Object_Reference_Sequence_T.h \
+ Bounded_Reference_Allocation_Traits.h \
+ Bounded_Sequence_CDR_T.h \
+ Bounded_String_Sequence_T.h \
+ Bounded_Value_Allocation_Traits_T.h \
+ Bounded_Value_Sequence_T.h \
+ Bounded_Wstring_Sequence_T.h \
Buffer_Allocator_T.cpp \
Buffer_Allocator_T.h \
Buffering_Constraint_Policy.h \
@@ -405,6 +417,7 @@ nobase_include_HEADERS = \
GIOP_Message_Version.inl \
GIOP_Utils.h \
GUIResource_Factory.h \
+ Generic_Sequence_T.h \
IFR_Client_Adapter.h \
IIOP.pidl \
IIOPC.h \
@@ -461,6 +474,7 @@ nobase_include_HEADERS = \
LF_Follower_Auto_Ptr.h \
LF_Follower_Auto_Ptr.inl \
LF_Invocation_Event.h \
+ LF_Multi_Event.h \
LF_Strategy.h \
LF_Strategy_Complete.h \
LRU_Connection_Purging_Strategy.h \
@@ -518,6 +532,9 @@ nobase_include_HEADERS = \
Object_Proxy_Broker.h \
Object_Ref_Table.h \
Object_Ref_Table.inl \
+ Object_Reference_Sequence_Element_T.h \
+ Object_Reference_Traits_Base_T.h \
+ Object_Reference_Traits_T.h \
Object_T.cpp \
Object_T.h \
Objref_VarOut_T.cpp \
@@ -570,6 +587,7 @@ nobase_include_HEADERS = \
Pseudo_VarOut_T.h \
Pseudo_VarOut_T.inl \
Queued_Message.h \
+ Range_Checking_T.h \
Reactive_Connect_Strategy.h \
Reactive_Flushing_Strategy.h \
Refcounted_ObjectKey.h \
@@ -588,6 +606,7 @@ nobase_include_HEADERS = \
Seq_Var_T.cpp \
Seq_Var_T.h \
Seq_Var_T.inl \
+ Sequence_T.h \
ServerRequestInterceptor_Adapter.h \
ServerRequestInterceptor_Adapter_Factory.h \
Server_Strategy_Factory.h \
@@ -609,6 +628,10 @@ nobase_include_HEADERS = \
StringSeqC.h \
StringSeqS.h \
String_Alloc.h \
+ String_Manager_T.h \
+ String_Sequence_Element_T.h \
+ String_Traits_Base_T.h \
+ String_Traits_T.h \
Stub.h \
Stub.i \
Stub_Factory.h \
@@ -672,8 +695,20 @@ nobase_include_HEADERS = \
UShortSeq.pidl \
UShortSeqC.h \
UShortSeqS.h \
+ Unbounded_Array_Allocation_Traits_T.h \
+ Unbounded_Array_Sequence_T.h \
+ Unbounded_Basic_String_Sequence_T.h \
+ Unbounded_Object_Reference_Sequence_T.h \
+ Unbounded_Octet_Sequence_T.h \
+ Unbounded_Reference_Allocation_Traits_T.h \
+ Unbounded_Sequence_CDR_T.h \
+ Unbounded_String_Sequence_T.h \
+ Unbounded_Value_Allocation_Traits_T.h \
+ Unbounded_Value_Sequence_T.h \
+ Unbounded_Wstring_Sequence_T.h \
UserException.h \
UserException.inl \
+ Value_Traits_T.h \
Valuetype_Adapter.h \
Valuetype_Adapter_Factory.h \
VarOut_T.cpp \
@@ -1302,6 +1337,7 @@ libTAO_PortableServer_la_CPPFLAGS = \
-DTAO_PORTABLESERVER_BUILD_DLL
libTAO_PortableServer_la_SOURCES = \
+ PortableServer/Acceptor_Filter_Factory.cpp \
PortableServer/Active_Object_Map.cpp \
PortableServer/Active_Object_Map_Entry.cpp \
PortableServer/Active_Policy_Strategies.cpp \
@@ -1360,6 +1396,8 @@ libTAO_PortableServer_la_SOURCES = \
PortableServer/Operation_Table_Perfect_Hash.cpp \
PortableServer/POAManager.cpp \
PortableServer/POAManagerC.cpp \
+ PortableServer/POAManagerFactory.cpp \
+ PortableServer/POAManagerFactoryC.cpp \
PortableServer/POA_Cached_Policies.cpp \
PortableServer/POA_Current.cpp \
PortableServer/POA_Current_Factory.cpp \
@@ -1429,6 +1467,7 @@ libTAO_PortableServer_la_LIBADD = \
$(ACE_BUILDDIR)/ace/libACE.la
nobase_include_HEADERS += \
+ PortableServer/Acceptor_Filter_Factory.h \
PortableServer/Active_Object_Map.h \
PortableServer/Active_Object_Map.i \
PortableServer/Active_Object_Map_Entry.h \
@@ -1525,6 +1564,9 @@ nobase_include_HEADERS += \
PortableServer/POAManager.i \
PortableServer/POAManager.pidl \
PortableServer/POAManagerC.h \
+ PortableServer/POAManagerFactory.h \
+ PortableServer/POAManagerFactory.pidl \
+ PortableServer/POAManagerFactoryC.h \
PortableServer/POA_Cached_Policies.h \
PortableServer/POA_Cached_Policies.i \
PortableServer/POA_Current.h \
@@ -2242,6 +2284,74 @@ EXTRA_DIST += \
DynamicInterface/TAO_DynamicInterface.rc
+## Makefile.EndpointPolicy.am
+
+lib_LTLIBRARIES += libTAO_EndpointPolicy.la
+
+libTAO_EndpointPolicy_la_CPPFLAGS = \
+ -I$(ACE_ROOT) \
+ -I$(ACE_BUILDDIR) \
+ -I$(TAO_ROOT) \
+ -I$(TAO_BUILDDIR) \
+ -DTAO_ENDPOINTPOLICY_BUILD_DLL
+
+libTAO_EndpointPolicy_la_SOURCES = \
+ EndpointPolicy/EndpointPolicy.cpp \
+ EndpointPolicy/EndpointPolicyA.cpp \
+ EndpointPolicy/EndpointPolicyC.cpp \
+ EndpointPolicy/EndpointPolicyTypeA.cpp \
+ EndpointPolicy/EndpointPolicyTypeC.cpp \
+ EndpointPolicy/EndpointPolicy_Factory.cpp \
+ EndpointPolicy/EndpointPolicy_ORBInitializer.cpp \
+ EndpointPolicy/EndpointPolicy_i.cpp \
+ EndpointPolicy/Endpoint_Acceptor_Filter.cpp \
+ EndpointPolicy/Endpoint_Acceptor_Filter_Factory.cpp \
+ EndpointPolicy/IIOPEndpointValueA.cpp \
+ EndpointPolicy/IIOPEndpointValueC.cpp \
+ EndpointPolicy/IIOPEndpointValue_i.cpp
+
+libTAO_EndpointPolicy_la_LDFLAGS = \
+ -version-number @TAO_MAJOR@:@TAO_MINOR@:@TAO_BETA@
+
+libTAO_EndpointPolicy_la_LIBADD = \
+ libTAO_PI.la \
+ libTAO_CodecFactory.la \
+ libTAO_PortableServer.la \
+ libTAO_AnyTypeCode.la \
+ libTAO.la \
+ $(ACE_BUILDDIR)/ace/libACE.la
+
+nobase_include_HEADERS += \
+ EndpointPolicy/EndpointPolicy.h \
+ EndpointPolicy/EndpointPolicyA.h \
+ EndpointPolicy/EndpointPolicyC.h \
+ EndpointPolicy/EndpointPolicyC.inl \
+ EndpointPolicy/EndpointPolicyTypeA.h \
+ EndpointPolicy/EndpointPolicyTypeC.h \
+ EndpointPolicy/EndpointPolicy_Export.h \
+ EndpointPolicy/EndpointPolicy_Factory.h \
+ EndpointPolicy/EndpointPolicy_ORBInitializer.h \
+ EndpointPolicy/EndpointPolicy_i.h \
+ EndpointPolicy/Endpoint_Acceptor_Filter.h \
+ EndpointPolicy/Endpoint_Acceptor_Filter_Factory.h \
+ EndpointPolicy/Endpoint_Value_Impl.h \
+ EndpointPolicy/IIOPEndpointValueA.h \
+ EndpointPolicy/IIOPEndpointValueC.h \
+ EndpointPolicy/IIOPEndpointValue_i.h
+
+pkgconfig_DATA += \
+ TAO_EndpointPolicy.pc
+
+CLEANFILES += \
+ TAO_EndpointPolicy.pc
+
+TAO_EndpointPolicy.pc: ${top_builddir}/config.status ${srcdir}/EndpointPolicy/TAO_EndpointPolicy.pc.in
+ ${top_builddir}/config.status --file $@:${srcdir}/EndpointPolicy/TAO_EndpointPolicy.pc.in
+
+EXTRA_DIST += \
+ EndpointPolicy/TAO_EndpointPolicy.pc.in
+
+
## Makefile.ObjRefTemplate.am
lib_LTLIBRARIES += libTAO_ObjRefTemplate.la
diff --git a/TAO/tao/Messaging/ExceptionHolderC.cpp b/TAO/tao/Messaging/ExceptionHolderC.cpp
index 8de5efc6d7b..3c9396ae7da 100644
--- a/TAO/tao/Messaging/ExceptionHolderC.cpp
+++ b/TAO/tao/Messaging/ExceptionHolderC.cpp
@@ -90,6 +90,12 @@ Messaging::ExceptionHolder::_tao_obv_repository_id (void) const
}
void
+Messaging::ExceptionHolder::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
+void
Messaging::ExceptionHolder::_tao_any_destructor (void *_tao_void_pointer)
{
ExceptionHolder *_tao_tmp_pointer =
@@ -100,57 +106,49 @@ Messaging::ExceptionHolder::_tao_any_destructor (void *_tao_void_pointer)
Messaging::ExceptionHolder::~ExceptionHolder (void)
{}
-::CORBA::Boolean Messaging::ExceptionHolder::_tao_marshal_v (TAO_OutputCDR & strm) const
+::CORBA::Boolean
+Messaging::ExceptionHolder::_tao_marshal_v (TAO_OutputCDR & strm) const
{
return this->_tao_marshal__Messaging_ExceptionHolder (strm);
}
-::CORBA::Boolean Messaging::ExceptionHolder::_tao_unmarshal_v (TAO_InputCDR & strm)
+::CORBA::Boolean
+Messaging::ExceptionHolder::_tao_unmarshal_v (TAO_InputCDR & strm)
{
return this->_tao_unmarshal__Messaging_ExceptionHolder (strm);
}
-::CORBA::Boolean Messaging::ExceptionHolder::_tao_unmarshal (
+::CORBA::Boolean
+Messaging::ExceptionHolder::_tao_match_formal_type (ptrdiff_t formal_type_id) const
+{
+ return formal_type_id ==
+ reinterpret_cast<ptrdiff_t>(&Messaging::ExceptionHolder::_downcast);
+}
+
+::CORBA::Boolean
+Messaging::ExceptionHolder::_tao_unmarshal (
TAO_InputCDR &strm,
ExceptionHolder *&new_object
)
{
::CORBA::ValueBase *base = 0;
- ::CORBA::ValueFactory_var factory;
::CORBA::Boolean retval =
::CORBA::ValueBase::_tao_unmarshal_pre (
strm,
- factory.out (),
base,
ExceptionHolder::_tao_obv_static_repository_id ()
);
if (retval == 0)
- {
return 0;
- }
- if (factory.in () != 0)
- {
- base = factory->create_for_unmarshal ();
-
- if (base == 0)
- {
- return 0; // %! except.?
- }
-
- retval = base->_tao_unmarshal_v (strm);
-
- if (retval == 0)
- {
+ if (base != 0 && !base->_tao_unmarshal_v (strm))
return 0;
- }
- }
// Now base must be null or point to the unmarshaled object.
// Align the pointer to the right subobject.
new_object = ExceptionHolder::_downcast (base);
- return retval;
+ return 1;
}
// TAO_IDL - Generated from
diff --git a/TAO/tao/Messaging/ExceptionHolderC.h b/TAO/tao/Messaging/ExceptionHolderC.h
index 841d6712b25..edbcde265bd 100644
--- a/TAO/tao/Messaging/ExceptionHolderC.h
+++ b/TAO/tao/Messaging/ExceptionHolderC.h
@@ -42,7 +42,7 @@
#include "tao/Messaging/messaging_export.h"
#include "tao/Valuetype/ValueBase.h"
-#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
+#include "tao/Valuetype/Valuetype_Adapter_Factory_Impl.h"
#include "tao/ORB.h"
#include "tao/SystemException.h"
#include "tao/Environment.h"
@@ -109,6 +109,8 @@ namespace Messaging
virtual const char* _tao_obv_repository_id (void) const;
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const;
+
static const char* _tao_obv_static_repository_id (void);
static void _tao_any_destructor (void *);
@@ -160,6 +162,7 @@ namespace Messaging
virtual ::CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &) const;
virtual ::CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &);
+ virtual ::CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const;
private:
ExceptionHolder (const ExceptionHolder &);
@@ -295,5 +298,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
#endif /* ifndef */
-
-
diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp
index 3bcc3e37d36..98bb700a342 100644
--- a/TAO/tao/ORB.cpp
+++ b/TAO/tao/ORB.cpp
@@ -36,6 +36,7 @@ ACE_RCSID (tao,
#endif /* ! __ACE_INLINE__ */
#include "ace/Dynamic_Service.h"
+#include "ace/Service_Config.h"
#include "ace/Arg_Shifter.h"
#include "ace/Reactor.h"
#include "ace/Argv_Type_Converter.h"
@@ -188,7 +189,7 @@ CORBA::ORB::destroy (ACE_ENV_SINGLE_ARG_DECL)
if (TAO_debug_level > 2)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("CORBA::ORB::destroy() has been called on ORB <%s>.\n"),
+ ACE_TEXT ("CORBA::ORB::destroy() called on ORB <%s>.\n"),
ACE_TEXT_TO_TCHAR_IN (this->orb_core ()->orbid ())));
}
@@ -1074,7 +1075,8 @@ CORBA::ORB::resolve_initial_references (const char *name,
}
else if (ACE_OS::strcmp (name, TAO_OBJID_POACURRENT) == 0)
{
- result = this->orb_core ()->resolve_poa_current (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_poa_current
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
else if (ACE_OS::strcmp (name, TAO_OBJID_POLICYMANAGER) == 0)
@@ -1087,33 +1089,39 @@ CORBA::ORB::resolve_initial_references (const char *name,
}
else if (ACE_OS::strcmp (name, TAO_OBJID_IORMANIPULATION) == 0)
{
- result = this->orb_core ()->resolve_ior_manipulation (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_ior_manipulation
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
else if (ACE_OS::strcmp (name, TAO_OBJID_IORTABLE) == 0)
{
- result = this->orb_core ()->resolve_ior_table (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_ior_table
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
else if (ACE_OS::strcmp (name, TAO_OBJID_DYNANYFACTORY) == 0)
{
- result = this->orb_core ()->resolve_dynanyfactory (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_dynanyfactory
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
else if (ACE_OS::strcmp (name, TAO_OBJID_TYPECODEFACTORY) == 0)
{
- result = this->orb_core ()->resolve_typecodefactory (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_typecodefactory
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
else if (ACE_OS::strcmp (name, TAO_OBJID_CODECFACTORY) == 0)
{
- result = this->orb_core ()->resolve_codecfactory (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_codecfactory
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
#if TAO_HAS_INTERCEPTORS == 1
else if (ACE_OS::strcmp (name, TAO_OBJID_PICurrent) == 0)
{
- result = this->orb_core ()->resolve_picurrent (ACE_ENV_SINGLE_ARG_PARAMETER);
+ result = this->orb_core ()->resolve_picurrent
+ (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
}
#endif
@@ -1151,7 +1159,7 @@ CORBA::ORB::resolve_initial_references (const char *name,
// Look for an environment variable called "<name>IOR".
//
CORBA::String_var ior_env_var_name =
- CORBA::string_alloc (static_cast <CORBA::ULong> (ACE_OS::strlen (name) + 3));
+ CORBA::string_alloc (static_cast<CORBA::ULong> (ACE_OS::strlen (name) + 3));
ACE_OS::strcpy (ior_env_var_name.inout (),
name);
@@ -1279,7 +1287,6 @@ TAO::ORB::init_orb_globals (ACE_ENV_SINGLE_ARG_DECL)
++orb_init_count;
}
-#if defined (ACE_HAS_EXCEPTIONS)
// This must be done after the system TypeCodes and Exceptions have
// been initialized. An unexpected exception will cause TAO's
// unexpected exception handler to be called. That handler
@@ -1293,39 +1300,6 @@ TAO::ORB::init_orb_globals (ACE_ENV_SINGLE_ARG_DECL)
*/
TAO_Singleton_Manager::instance ()->_set_unexpected (
::TAO_unexpected_exception_handler);
-#endif /* ACE_HAS_EXCEPTIONS */
-
- // Verify some of the basic implementation requirements. This test
- // gets optimized away by a decent compiler (or else the rest of the
- // routine does).
- //
- // NOTE: we still "just" assume that native floating point is IEEE.
- if ( sizeof (CORBA::Boolean) != 1
- || sizeof (CORBA::Short) != 2
- || sizeof (CORBA::Long) != 4
- || sizeof (CORBA::LongLong) != 8
- || sizeof (CORBA::Float) != 4
- || sizeof (CORBA::Double) != 8
- || sizeof (CORBA::LongDouble) != 16
- || sizeof (CORBA::WChar) < 2
- || sizeof (void *) != ACE_SIZEOF_VOID_P)
- {
- ACE_ERROR ((LM_ERROR,
- "%N; ERROR: unexpected basic type size; "
- "b:%d s:%d l:%d ll:%d f:%d d:%d ld:%d wc:%d v:%d\n"
- "please reconfigure TAO\n",
- sizeof (CORBA::Boolean),
- sizeof (CORBA::Short),
- sizeof (CORBA::Long),
- sizeof (CORBA::LongLong),
- sizeof (CORBA::Float),
- sizeof (CORBA::Double),
- sizeof (CORBA::LongDouble),
- sizeof (CORBA::WChar),
- sizeof (void *)));
-
- ACE_THROW (CORBA::INITIALIZE ());
- }
}
const ACE_CString &
@@ -1361,15 +1335,6 @@ CORBA::ORB_init (int &argc,
char *argv[],
const char *orb_name)
{
- // Make sure TAO's singleton manager is initialized.
- //
- // We need to initialize before TAO_default_environment() is called
- // since that call instantiates a TAO_TSS_Singleton.
- if (TAO_Singleton_Manager::instance ()->init () == -1)
- {
- return CORBA::ORB::_nil ();
- }
-
return CORBA::ORB_init (argc,
argv,
orb_name,
@@ -1400,6 +1365,8 @@ CORBA::ORB_init (int &argc,
CORBA::ORB::_nil ()));
// Make sure TAO's singleton manager is initialized.
+ // We need to initialize before TAO_default_environment() is called
+ // since that call instantiates a TAO_TSS_Singleton.
if (TAO_Singleton_Manager::instance ()->init () == -1)
{
return CORBA::ORB::_nil ();
@@ -1435,6 +1402,8 @@ CORBA::ORB_init (int &argc,
CORBA::ORB::_nil ());
}
+
+
if (orbid_string.length () == 0)
{
ACE_Arg_Shifter arg_shifter (command_line.get_argc (),
@@ -1503,10 +1472,33 @@ CORBA::ORB_init (int &argc,
oc.reset (tmp);
}
+
+ // Having the ORB's default static services be shared among all ORBs
+ // is tempting from the point of view of reducing the dynamic
+ // footprint. However, if the ORB in a DLL and the rest of that
+ // application most likely neither cares, nor wishes to know about
+ // them. Furthermore, if the ORB DLL gets unloaded, the static
+ // services it had registered globaly will no longer be accesible,
+ // which will have disastrous consequences at the process
+ // shutdown. Hence, the ACE_Service_Config_Guard ensures that for
+ // the current thread, any references to the global
+ // ACE_Service_Config will be forwarded to the ORB's.
+
+ // Making sure the initialization process in the current thread uses
+ // the correct service repository (ours), instead of the global one.
+ ACE_Service_Config_Guard scg (oc->configuration ());
+
+ /*
+ * Currently I choose to make the ORB an owner of its configuration,
+ * which in general is not quite correct because it is very common ORBs to
+ * need to share the same configuration.
+ */
+
// Initialize the Service Configurator. This must occur before the
// ORBInitializer::pre_init() method is invoked on each registered
// ORB initializer.
- int result = TAO::ORB::open_services (command_line.get_argc (),
+ int result = TAO::ORB::open_services (oc->configuration (),
+ command_line.get_argc (),
command_line.get_TCHAR_argv ());
// Check for errors returned from <TAO_Internal::open_services>.
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp
index 3487f46ca0a..99877176ed8 100644
--- a/TAO/tao/ORB_Core.cpp
+++ b/TAO/tao/ORB_Core.cpp
@@ -99,7 +99,8 @@ TAO_ORB_Core_Static_Resources* TAO_ORB_Core_Static_Resources::instance_ = 0;
// Force an instance to be created at module initialization time,
// since we do not want to worry about double checked locking and
// the race condition to initialize the lock.
-TAO_ORB_Core_Static_Resources* TAO_ORB_Core_Static_Resources::initialization_reference_ =
+TAO_ORB_Core_Static_Resources*
+TAO_ORB_Core_Static_Resources::initialization_reference_ =
TAO_ORB_Core_Static_Resources::instance ();
TAO_ORB_Core_Static_Resources*
@@ -126,7 +127,9 @@ TAO_ORB_Core_Static_Resources::TAO_ORB_Core_Static_Resources (void)
timeout_hook_ (0),
connection_timeout_hook_ (0),
endpoint_selector_factory_name_ ("Default_Endpoint_Selector_Factory"),
- thread_lane_resources_manager_factory_name_ ("Default_Thread_Lane_Resources_Manager_Factory"),
+ thread_lane_resources_manager_factory_name_
+ ("Default_Thread_Lane_Resources_Manager_Factory"),
+
collocation_resolver_name_ ("Default_Collocation_Resolver"),
stub_factory_name_ ("Default_Stub_Factory"),
resource_factory_name_ ("Resource_Factory"),
@@ -136,7 +139,13 @@ TAO_ORB_Core_Static_Resources::TAO_ORB_Core_Static_Resources (void)
iorinterceptor_adapter_factory_name_ ("IORInterceptor_Adapter_Factory"),
valuetype_adapter_factory_name_ ("valuetype_Adapter_Factory"),
poa_factory_name_ ("TAO_Object_Adapter_Factory"),
- poa_factory_directive_ (ACE_TEXT_TO_CHAR_IN (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_Object_Adapter_Factory", "TAO_PortableServer", "_make_TAO_Object_Adapter_Factory", "")))
+ poa_factory_directive_
+ (ACE_TEXT_TO_CHAR_IN
+ (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_Object_Adapter_Factory",
+ "TAO_PortableServer",
+ "_make_TAO_Object_Adapter_Factory",
+ ""))),
+ alt_connection_timeout_hook_ (0)
{
}
@@ -252,6 +261,17 @@ TAO_ORB_Core::TAO_ORB_Core (const char *orbid)
// Initialize the default request dispatcher.
ACE_NEW (this->request_dispatcher_,
TAO_Request_Dispatcher);
+
+ /*
+ * @TODO: Get rid of the "magic number" for the Service repository size.
+ * Can this be dynamic container instead?
+ */
+ if (ACE_OS::strnlen (this->orbid_, 1) == 0)
+ // (re)use the default/global getsalt
+ ACE_NEW (this->config_, ACE_Service_Gestalt);
+ else
+ ACE_NEW (this->config_,
+ ACE_Service_Gestalt (ACE_Service_Gestalt::MAX_SERVICES / 4));
}
TAO_ORB_Core::~TAO_ORB_Core (void)
@@ -288,6 +308,9 @@ TAO_ORB_Core::~TAO_ORB_Core (void)
orbinitializer_registry_ = 0;
::CORBA::release (this->orb_);
+
+ delete this->config_;
+ this->config_ = 0;
}
int
@@ -338,6 +361,9 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
// Use SO_KEEPALIVE (default 0).
int so_keepalive = 0;
+ // Use SO_DONTROUTE (default 0)
+ int so_dontroute = 0;
+
// Use dotted decimal addresses
// @@ This option will be treated as a suggestion to each loaded
// protocol to use a character representation for the numeric
@@ -359,6 +385,8 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
int linger = -1;
+ int use_parallel_connects = 0;
+
// Copy command line parameter not to use original.
ACE_Argv_Type_Converter command_line (argc, argv);
@@ -455,6 +483,15 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
arg_shifter.consume_arg ();
}
else if (0 != (current_arg = arg_shifter.get_the_parameter
+ (ACE_LIB_TEXT("-ORBDontRoute"))))
+ {
+ // Use SO_DONTROUTE or not.
+ so_dontroute =
+ ACE_OS::atoi (current_arg);
+
+ arg_shifter.consume_arg ();
+ }
+ else if (0 != (current_arg = arg_shifter.get_the_parameter
(ACE_TEXT("-ORBTradingServicePort"))))
{
// Specify the port number for the TradingService.
@@ -878,7 +915,7 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
ACE_CString lane (ACE_TEXT_TO_CHAR_IN (current_arg));
arg_shifter.consume_arg ();
- if(arg_shifter.is_option_next ())
+ if (arg_shifter.is_option_next ())
return -1;
ACE_CString endpoints (ACE_TEXT_TO_CHAR_IN (arg_shifter.get_current ()));
@@ -915,6 +952,20 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
{
negotiate_codesets =
(ACE_OS::atoi (current_arg));
+
+ arg_shifter.consume_arg ();
+ }
+ else if ((current_arg = arg_shifter.get_the_parameter
+ (ACE_LIB_TEXT("-ORBUseParallelConnects"))))
+ {
+ use_parallel_connects = ACE_OS::atoi (current_arg);
+ arg_shifter.consume_arg ();
+ }
+ else if ((current_arg = arg_shifter.get_the_parameter
+ (ACE_LIB_TEXT("-ORBParallelConnectDelay"))))
+ {
+ this->orb_params ()->parallel_connect_delay
+ (ACE_OS::atoi (current_arg));
arg_shifter.consume_arg ();
}
else if (0 != (current_arg = arg_shifter.get_the_parameter
@@ -962,7 +1013,8 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
ACE_DEBUG ((LM_ERROR,
ACE_TEXT ("ERROR: Unknown \"-ORB\" option ")
ACE_TEXT ("<%s>.\n"),
- ((current_arg == 0) ? ACE_TEXT("<NULL>") : current_arg)));
+ ((current_arg == 0) ? ACE_TEXT("<NULL>")
+ : current_arg)));
}
ACE_THROW_RETURN (CORBA::BAD_PARAM (
@@ -996,7 +1048,8 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
if (TAO_debug_level > 0)
{
ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("ERROR: Environment variable TAO_ORBENDPOINT set to invalid value ")
+ ACE_TEXT ("ERROR: Environment variable ")
+ ACE_TEXT ("TAO_ORBENDPOINT set to invalid value ")
ACE_TEXT ("<%s>.\n"),
env_endpoint));
}
@@ -1022,6 +1075,7 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
(void) ACE_OS::signal (SIGPIPE, (ACE_SignalHandler) SIG_IGN);
#endif /* SIGPIPE */
+
// Calling the open method here so that the svc.conf file is
// opened and TAO_default_resource_factory::init () is called by the
// time this method is called.
@@ -1155,9 +1209,14 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
this->orb_params ()->cache_incoming_by_dotted_decimal_address
(no_server_side_name_lookups
|| dotted_decimal_addresses);
+
+ this->orb_params ()->use_parallel_connects
+ (use_parallel_connects != 0);
+
this->orb_params ()->linger (linger);
this->orb_params ()->nodelay (nodelay);
this->orb_params ()->sock_keepalive (so_keepalive);
+ this->orb_params ()->sock_dontroute (so_dontroute);
if (rcv_sock_size >= 0)
this->orb_params ()->sock_rcvbuf_size (rcv_sock_size);
if (snd_sock_size >= 0)
@@ -1196,9 +1255,13 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
this->flushing_strategy_ = trf->create_flushing_strategy ();
// Look in the service repository for an instance of the Protocol Hooks.
+ const ACE_CString &protocols_hooks_name =
+ TAO_ORB_Core_Static_Resources::instance ()->protocols_hooks_name_;
+
this->protocols_hooks_ =
ACE_Dynamic_Service<TAO_Protocols_Hooks>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->protocols_hooks_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (protocols_hooks_name.c_str()));
// Must have valid protocol hooks.
if (this->protocols_hooks_ == 0)
@@ -1283,7 +1346,7 @@ TAO_ORB_Core::fini (void)
if (this->thread_lane_resources_manager_ != 0)
this->thread_lane_resources_manager_->finalize ();
- (void) TAO::ORB::close_services ();
+ (void) TAO::ORB::close_services (this->configuration ());
// Destroy the object_key table
this->object_key_table_.destroy ();
@@ -1405,9 +1468,13 @@ TAO_ORB_Core::resource_factory (void)
}
// Look in the service repository for an instance.
+ ACE_CString &resource_factory_name =
+ TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_;
+
this->resource_factory_ =
ACE_Dynamic_Service<TAO_Resource_Factory>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (resource_factory_name.c_str()));
return this->resource_factory_;
}
@@ -1427,9 +1494,13 @@ TAO_ORB_Core::thread_lane_resources_manager (void)
return *this->thread_lane_resources_manager_;
// If not, lookup the corresponding factory and ask it to make one.
+ const ACE_CString &thread_lane_resources_manager_factory_name =
+ TAO_ORB_Core_Static_Resources::instance ()->thread_lane_resources_manager_factory_name_;
+
TAO_Thread_Lane_Resources_Manager_Factory *factory =
ACE_Dynamic_Service<TAO_Thread_Lane_Resources_Manager_Factory>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->thread_lane_resources_manager_factory_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (thread_lane_resources_manager_factory_name.c_str()));
this->thread_lane_resources_manager_ =
factory->create_thread_lane_resources_manager (*this);
@@ -1445,9 +1516,13 @@ TAO_ORB_Core::collocation_resolver (void)
return *this->collocation_resolver_;
// If not, lookup it up.
+ const ACE_CString &collocation_resolver_name =
+ TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_;
+
this->collocation_resolver_ =
ACE_Dynamic_Service<TAO_Collocation_Resolver>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (collocation_resolver_name.c_str()));
return *this->collocation_resolver_;
}
@@ -1457,18 +1532,21 @@ TAO_ORB_Core::policy_factory_registry_i (void)
{
TAO_PolicyFactory_Registry_Factory *loader =
- ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance (
- "PolicyFactory_Loader");
+ ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("PolicyFactory_Loader"));
+
if (loader == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration ()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("PolicyFactory_Loader",
"TAO_PI",
- "_make_PolicyFactory_Loader",
+ "_make_TAO_PolicyFactory_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance (
- "PolicyFactory_Loader");
+ ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("PolicyFactory_Loader"));
}
if (loader != 0)
@@ -1486,7 +1564,8 @@ TAO_ORB_Core::orbinitializer_registry_i (void)
// If not, lookup it up.
this->orbinitializer_registry_ =
ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
- ("ORBInitializer_Registry");
+ (this->configuration (),
+ ACE_TEXT ("ORBInitializer_Registry"));
#if !defined (TAO_AS_STATIC_LIBS)
// In case we build shared, try to load the PI Client library, in a
@@ -1494,14 +1573,15 @@ TAO_ORB_Core::orbinitializer_registry_i (void)
// output an error then.
if (orbinitializer_registry_ == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration ()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("ORBInitializer_Registry",
"TAO_PI",
"_make_ORBInitializer_Registry",
""));
orbinitializer_registry_ =
ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
- ("ORBInitializer_Registry");
+ (this->configuration (),
+ ACE_TEXT ("ORBInitializer_Registry"));
}
#endif /* !TAO_AS_STATIC_LIBS */
@@ -1516,9 +1596,13 @@ TAO_ORB_Core::stub_factory (void)
return this->stub_factory_;
// If not, look in the service repository for an instance.
+ const ACE_CString &stub_factory_name =
+ TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_;
+
this->stub_factory_ =
ACE_Dynamic_Service<TAO_Stub_Factory>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (stub_factory_name.c_str()));
return this->stub_factory_;
}
@@ -1554,9 +1638,13 @@ TAO_ORB_Core::endpoint_selector_factory (void)
return this->endpoint_selector_factory_;
// If not, look in the service repository for an instance.
+ const ACE_CString &endpoint_selector_factory_name =
+ TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_;
+
this->endpoint_selector_factory_ =
ACE_Dynamic_Service<TAO_Endpoint_Selector_Factory>::instance
- (TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_.c_str());
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (endpoint_selector_factory_name.c_str()));
return this->endpoint_selector_factory_;
}
@@ -1642,7 +1730,9 @@ TAO_ORB_Core::client_factory (void)
{
// Look in the service repository for an instance.
this->client_factory_ =
- ACE_Dynamic_Service<TAO_Client_Strategy_Factory>::instance ("Client_Strategy_Factory");
+ ACE_Dynamic_Service<TAO_Client_Strategy_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("Client_Strategy_Factory"));
}
return this->client_factory_;
@@ -1655,7 +1745,9 @@ TAO_ORB_Core::server_factory (void)
{
// Look in the service repository for an instance.
this->server_factory_ =
- ACE_Dynamic_Service<TAO_Server_Strategy_Factory>::instance ("Server_Strategy_Factory");
+ ACE_Dynamic_Service<TAO_Server_Strategy_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("Server_Strategy_Factory"));
}
return this->server_factory_;
@@ -1667,20 +1759,28 @@ TAO_ORB_Core::root_poa (ACE_ENV_SINGLE_ARG_DECL)
// DCL ..
if (CORBA::is_nil (this->root_poa_.in ()))
{
+
+ // Making sure the initialization process in the current thread uses
+ // the correct service repository (ours), instead of the global one.
+ ACE_Service_Config_Guard scg (this->configuration ());
+
+
TAO_ORB_Core_Static_Resources* static_resources =
TAO_ORB_Core_Static_Resources::instance ();
TAO_Adapter_Factory *factory =
- ACE_Dynamic_Service<TAO_Adapter_Factory>::instance (
+ ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
+ (this->configuration (),
static_resources->poa_factory_name_.c_str());
if (factory == 0)
{
- ACE_Service_Config::process_directive (
- ACE_TEXT_TO_TCHAR_IN (
+ this->configuration()->process_directive (ACE_TEXT_TO_TCHAR_IN (
static_resources->poa_factory_directive_.c_str()));
+
factory =
- ACE_Dynamic_Service<TAO_Adapter_Factory>::instance (
+ ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
+ (this->configuration (),
static_resources->poa_factory_name_.c_str());
}
@@ -1799,7 +1899,8 @@ TAO_ORB_Core::load_policy_validators (TAO_Policy_Validator &validator
if (this->bidir_adapter_ == 0)
{
this->bidir_adapter_ =
- ACE_Dynamic_Service<TAO_BiDir_Adapter>::instance ("BiDirGIOP_Loader");
+ ACE_Dynamic_Service<TAO_BiDir_Adapter>::instance
+ (this->configuration (), ACE_TEXT ("BiDirGIOP_Loader"));
}
// Call the BiDir library if it has been loaded
@@ -1983,6 +2084,8 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
int perform_work
ACE_ENV_ARG_DECL_NOT_USED)
{
+ ACE_Service_Config_Guard guard (this->configuration());
+
if (TAO_debug_level > 2)
{
ACE_DEBUG ((LM_DEBUG,
@@ -2067,6 +2170,7 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
// A timeout, terminate the loop...
break;
}
+
if (perform_work)
{
// This is running on behalf of a perform_work() call,
@@ -2171,8 +2275,7 @@ TAO_ORB_Core::destroy (ACE_ENV_SINGLE_ARG_DECL)
//
// Shutdown the ORB and block until the shutdown is complete.
- this->shutdown (1
- ACE_ENV_ARG_PARAMETER);
+ this->shutdown (1 ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
// Invoke Interceptor::destroy() on all registered interceptors.
@@ -2201,7 +2304,6 @@ TAO_ORB_Core::check_shutdown (ACE_ENV_SINGLE_ARG_DECL)
void
TAO_ORB_Core::destroy_interceptors (ACE_ENV_SINGLE_ARG_DECL)
{
-
ACE_TRY
{
ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
@@ -2264,19 +2366,28 @@ void
TAO_ORB_Core::resolve_typecodefactory_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("TypeCodeFactory_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("TypeCodeFactory_Loader"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
- ACE_DYNAMIC_SERVICE_DIRECTIVE("TypeCodeFactory_Loader",
+ this->configuration ()->process_directive (
+ ACE_DYNAMIC_SERVICE_DIRECTIVE("TypeCodeFactory",
"TAO_TypeCodeFactory",
"_make_TAO_TypeCodeFactory_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("TypeCodeFactory_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("TypeCodeFactory_Loader"));
+
if (loader == 0)
ACE_THROW (CORBA::ORB::InvalidName ());
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
+
this->typecode_factory_ =
loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
}
@@ -2285,17 +2396,26 @@ void
TAO_ORB_Core::resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("CodecFactory_Loader"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
- ACE_DYNAMIC_SERVICE_DIRECTIVE("CodecFactory_Loader",
+ this->configuration()->process_directive (
+ ACE_DYNAMIC_SERVICE_DIRECTIVE("CodecFactory",
"TAO_CodecFactory",
"_make_TAO_CodecFactory_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("CodecFactory_Loader"));
+
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
+
if (loader != 0)
{
this->codec_factory_ =
@@ -2308,17 +2428,29 @@ void
TAO_ORB_Core::resolve_poa_current_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("TAO_POA_Current_Factory");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration(),
+ ACE_TEXT ("TAO_POA_Current_Factory"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_POA_Current_Factory",
"TAO_PortableServer",
"_make_TAO_POA_Current_Factory",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("TAO_POA_Current_Factory");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration(),
+ ACE_TEXT ("TAO_POA_Current_Factory"));
}
+
+ if (loader == 0)
+ ACE_THROW (CORBA::ORB::InvalidName ());
+
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
+
if (loader != 0)
{
this->poa_current_ =
@@ -2333,17 +2465,24 @@ void
TAO_ORB_Core::resolve_picurrent_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("PICurrent_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("PICurrent_Loader"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration ()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("PICurrent_Loader",
"TAO_PI",
"_make_TAO_PICurrent_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("PICurrent_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("PICurrent_Loader"));
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
if (loader != 0)
{
@@ -2362,17 +2501,24 @@ void
TAO_ORB_Core::resolve_dynanyfactory_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("DynamicAny_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("DynamicAny_Loader"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration ()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("DynamicAny_Loader",
"TAO_DynamicAny",
"_make_TAO_DynamicAny_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("DynamicAny_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("DynamicAny_Loader"));
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
if (loader != 0)
{
@@ -2386,18 +2532,25 @@ void
TAO_ORB_Core::resolve_iormanipulation_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Object_Loader *loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("IORManip_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("IORManip_Loader"));
+#if !defined(TAO_AS_STATIC_LIBS)
if (loader == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("IORManip_Loader",
"TAO_IORManip",
"_make_TAO_IORManip_Loader",
""));
loader =
- ACE_Dynamic_Service<TAO_Object_Loader>::instance ("IORManip_Loader");
+ ACE_Dynamic_Service<TAO_Object_Loader>::instance
+ (this->configuration (),
+ ACE_TEXT ("IORManip_Loader"));
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
+
if (loader != 0)
{
this->ior_manip_factory_ =
@@ -2410,29 +2563,39 @@ void
TAO_ORB_Core::resolve_ior_table_i (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Adapter_Factory *factory =
- ACE_Dynamic_Service<TAO_Adapter_Factory>::instance ("TAO_IORTable");
+ ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("TAO_IORTable"));
+
+#if !defined(TAO_AS_STATIC_LIBS)
if (factory == 0)
{
- ACE_Service_Config::process_directive (
+ this->configuration ()->process_directive (
ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_IORTable",
"TAO_IORTable",
"_make_TAO_Table_Adapter_Factory",
""));
factory =
- ACE_Dynamic_Service<TAO_Adapter_Factory>::instance ("TAO_IORTable");
+ ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("TAO_IORTable"));
}
+#endif /* !defined (TAO_AS_STATIC_LIBS) */
if (factory != 0)
{
- // @@ Not exception safe
- TAO_Adapter *iortable_adapter = factory->create (this);
- this->adapter_registry_.insert (iortable_adapter ACE_ENV_ARG_PARAMETER);
+ ACE_Auto_Ptr <TAO_Adapter> iortable_adapter (factory->create (this));
+ iortable_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
- iortable_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
+ CORBA::Object_var tmp_root = iortable_adapter->root ();
+
+ this->adapter_registry_.insert (iortable_adapter.get () ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
- this->ior_table_ = iortable_adapter->root ();
+ // It is now (exception) safe to release ownership from the auto pointers
+ this->ior_table_= tmp_root._retn ();
+ iortable_adapter.release ();
}
}
@@ -2709,7 +2872,8 @@ TAO_ORB_Core::implrepo_service (void)
ACE_TRY_NEW_ENV
{
- CORBA::Object_var temp = this->orb_->resolve_initial_references ("ImplRepoService" ACE_ENV_ARG_PARAMETER);
+ CORBA::Object_var temp =
+ this->orb_->resolve_initial_references ("ImplRepoService" ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::Object::_nil ());
@@ -2719,7 +2883,8 @@ TAO_ORB_Core::implrepo_service (void)
}
ACE_CATCHANY
{
- // Just make sure that we have a null pointer. Ignore the exception anyway.
+ // Just make sure that we have a null pointer. Ignore the exception
+ // anyway.
this->implrepo_service_ = CORBA::Object::_nil ();
}
ACE_ENDTRY;
@@ -2803,15 +2968,77 @@ TAO_ORB_Core::call_timeout_hook (TAO_Stub *stub,
return;
}
(*timeout_hook) (this, stub, has_timeout, time_value);
+
+ Timeout_Hook alt_connection_timeout_hook =
+ TAO_ORB_Core_Static_Resources::instance ()->alt_connection_timeout_hook_;
+
+ if (alt_connection_timeout_hook == 0)
+ return;
+
+ if (!has_timeout || time_value == ACE_Time_Value::zero )
+ {
+ (*alt_connection_timeout_hook) (this, stub, has_timeout,time_value);
+ return;
+ }
+
+ // At this point, both the primary and alternate hooks are defined, and
+ // the primary did indeed set a value
+ ACE_Time_Value tv1;
+ bool ht1;
+ (*alt_connection_timeout_hook) (this, stub, ht1,tv1);
+ if (ht1 && tv1 > ACE_Time_Value::zero && tv1 < time_value)
+ time_value = tv1;
}
void
TAO_ORB_Core::set_timeout_hook (Timeout_Hook hook)
{
// Saving the hook pointer so that we can use it later when needed.
- TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_ = hook;
+ // For now there are only two entry points that may supply a connection
+ // timeout hook. But there might be future entry points, so this should
+ // probably be addressed by a more sophisticated mechanism.
+
+#define TOCSRi TAO_ORB_Core_Static_Resources::instance ()
+
+ // A consern was raised that since this function is called by two
+ // different initializers there may be a race condition that might
+ // require a lock. We are not using a lock at this time because of
+ // two callers, one happens only during service directive processing
+ // and the other only during ORB Initialization time. The former
+ // happens when the OC_Endpoint_Selector_Factory is loaded, the
+ // latter is part of the messaging library. The messaging library
+ // calls this function as part of pre_init processing, and this call
+ // happes for every ORB instance. This was the case before these The
+ // latter call occurs when the messaging library is loaded. The
+ // redundant calls occured then as well. Second, it isn't clear how
+ // a lock in this static method would react in the face of windows
+ // dlls, shared memory segments, etc. Therefore we are continuing to
+ // keep this code lockless as it always was, assuming no
+ // simultanious overwrite will occur.
+
+ if (TOCSRi->connection_timeout_hook_ == 0)
+ {
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT("TAO (%P|%t) setting primary hook\n")));
+ TOCSRi->connection_timeout_hook_ = hook;
+ }
+ else if (TOCSRi->connection_timeout_hook_ != hook &&
+ TOCSRi->alt_connection_timeout_hook_ == 0)
+ {
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT("TAO (%P|%t) setting alternate hook\n")));
+ TOCSRi->alt_connection_timeout_hook_ = hook;
+ }
+ else
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) not overwriting alternate hook.")
+ ACE_TEXT (" Is it still null? %d\n"),
+ TOCSRi->alt_connection_timeout_hook_ == 0));
- return;
+#undef TOCSRi
}
void
@@ -2991,16 +3218,38 @@ TAO_ORB_Core::ior_interceptor_adapter (void)
ACE_TRY
{
TAO_IORInterceptor_Adapter_Factory * ior_ap_factory =
- ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance (
- TAO_ORB_Core::iorinterceptor_adapter_factory_name ()
- );
+ ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT_CHAR_TO_TCHAR (TAO_ORB_Core::iorinterceptor_adapter_factory_name ()));
- if (ior_ap_factory)
+#if !defined (TAO_AS_STATIC_LIBS)
+ // In case we build shared, try to load the IOR_Interceptor factory. In a
+ // static build we just can't do this, so don't try it
+ if (ior_ap_factory == 0)
+ {
+ this->configuration()->process_directive
+ (ACE_DYNAMIC_SERVICE_DIRECTIVE("Concrete_IORInterceptor_Adapter_Factory",
+ "TAO_IORInterceptor",
+ "_make_TAO_IORInterceptor_Adapter_Factory_Impl",
+ ""));
+ ior_ap_factory =
+ ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance
+ (this->configuration (), ACE_TEXT("Concrete_IORInterceptor_Adapter_Factory"));
+ }
+#endif /* !TAO_AS_STATIC_LIBS */
+
+ if (ior_ap_factory == 0)
{
- this->ior_interceptor_adapter_ =
- ior_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) Unable to get a IORInterceptor factory\n")),
+ 0);
+ ACE_THROW (CORBA::INTERNAL ());
}
+
+ this->ior_interceptor_adapter_ =
+ ior_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
}
ACE_CATCHANY
{
@@ -3034,7 +3283,8 @@ TAO_ORB_Core::add_interceptor (
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) %p\n"),
ACE_TEXT ("ERROR: ORB Core unable to find the ")
- ACE_TEXT ("Client Request Interceptor Adapter Factory instance")));
+ ACE_TEXT ("Client Request Interceptor Adapter Factory ")
+ ACE_TEXT ("instance")));
ACE_THROW (CORBA::INTERNAL ());
}
@@ -3053,9 +3303,9 @@ TAO_ORB_Core::clientrequestinterceptor_adapter_i (void)
if (this->client_request_interceptor_adapter_ == 0)
{
TAO_ClientRequestInterceptor_Adapter_Factory *factory =
- ACE_Dynamic_Service<TAO_ClientRequestInterceptor_Adapter_Factory>::instance (
- "ClientRequestInterceptor_Adapter_Factory"
- );
+ ACE_Dynamic_Service<TAO_ClientRequestInterceptor_Adapter_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("ClientRequestInterceptor_Adapter_Factory"));
if (factory)
{
@@ -3084,7 +3334,8 @@ TAO_ORB_Core::add_interceptor (
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) %p\n"),
ACE_TEXT ("ERROR: ORB Core unable to find the ")
- ACE_TEXT ("Server Request Interceptor Adapter Factory instance")));
+ ACE_TEXT ("Server Request Interceptor Adapter Factory ")
+ ACE_TEXT ("instance")));
ACE_THROW (CORBA::INTERNAL ());
}
@@ -3110,7 +3361,8 @@ TAO_ORB_Core::add_interceptor (
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) %p\n"),
ACE_TEXT ("ERROR: ORB Core unable to find the ")
- ACE_TEXT ("Client Request Interceptor Adapter Factory instance")));
+ ACE_TEXT ("Client Request Interceptor Adapter Factory ")
+ ACE_TEXT ("instance")));
ACE_THROW (CORBA::INTERNAL ());
}
@@ -3136,7 +3388,8 @@ TAO_ORB_Core::add_interceptor (
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) %p\n"),
ACE_TEXT ("ERROR: ORB Core unable to find the ")
- ACE_TEXT ("Server Request Interceptor Adapter Factory instance")));
+ ACE_TEXT ("Server Request Interceptor Adapter Factory ")
+ ACE_TEXT ("instance")));
ACE_THROW (CORBA::INTERNAL ());
}
@@ -3155,9 +3408,9 @@ TAO_ORB_Core::serverrequestinterceptor_adapter_i (void)
if (this->server_request_interceptor_adapter_ == 0)
{
TAO_ServerRequestInterceptor_Adapter_Factory *factory =
- ACE_Dynamic_Service<TAO_ServerRequestInterceptor_Adapter_Factory>::instance (
- "ServerRequestInterceptor_Adapter_Factory"
- );
+ ACE_Dynamic_Service<TAO_ServerRequestInterceptor_Adapter_Factory>::instance
+ (this->configuration (),
+ ACE_TEXT ("ServerRequestInterceptor_Adapter_Factory"));
if (factory)
{
@@ -3167,6 +3420,11 @@ TAO_ORB_Core::serverrequestinterceptor_adapter_i (void)
}
}
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) Server request interceptor adapter list at %@\n"),
+ this->server_request_interceptor_adapter_));
+
return this->server_request_interceptor_adapter_;
}
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index d0144373b4b..b9a0581bf39 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -316,7 +316,7 @@ public:
* Sets the value of gui_resource_factory in TSS. ORB_Core is responsible
* for releasing this factory if needed.
*/
- static void set_gui_resource_factory (TAO::GUIResource_Factory *gui_resource_factory);
+ static void set_gui_resource_factory (TAO::GUIResource_Factory *gui_factory);
/// Sets the value of TAO_ORB_Core::protocols_hooks_
static void set_protocols_hooks (const char *protocols_hooks_name);
@@ -508,6 +508,30 @@ public:
ACE_Time_Value &time_value);
/// Define the Timeout_Hook signature
+ /**
+ * The connection timeout hook was originally defined to allow the
+ * TAO Messaging code to be factored out of the core TAO library and
+ * placed in to an optional library. Since then, a new invocation
+ * endpoint selector, the optimised connection endpoint selector
+ * (see Strategies/OC_Endpoint_Selector.h) reused this connection
+ * timeout hook. However, this set up a problem when both the
+ * Messaging library and OCES are being used in the same
+ * application.
+ *
+ * The solution was to add a new connection timeout hook attribute
+ * (see alt_connection_timeout_hook_ below). This method now checks
+ * to see if the connection timeout hook is already set, and if so
+ * assigns the supplied hook value to the alternate connection
+ * timeout hook. This functionality has a side-effect of assuming
+ * that hooks are NEVER unloaded or actively replaced. IOW, no one
+ * will call this method with a 0 or some other pointer value to
+ * replace an existing hook.
+ *
+ * If such functionality as unloading a hook pointer is required,
+ * then this method must be extended to give some kind of identity
+ * for the hook. Additional changes to the definition of the hook
+ * will also be necessary to support such identity and manipulation.
+ */
static void connection_timeout_hook (Timeout_Hook hook);
void call_sync_scope_hook (TAO_Stub *stub,
@@ -893,6 +917,9 @@ public:
(const CORBA::Object_ptr obj,
const TAO_Service_Context &service_context);
+ /// Configuration accessor method
+ ACE_Service_Gestalt* configuration () const;
+
/// Get outgoing fragmentation strategy.
auto_ptr<TAO_GIOP_Fragmentation_Strategy>
fragmentation_strategy (TAO_Transport * transport);
@@ -1235,6 +1262,8 @@ protected:
/// Code Set Manager - points to service object in the service repo
TAO_Codeset_Manager *codeset_manager_;
+ /// ORB's service configuration
+ ACE_Service_Gestalt *config_;
};
// ****************************************************************
@@ -1379,6 +1408,9 @@ public:
*/
ACE_CString poa_factory_directive_;
+ /// An alternative hook to be set for the ConnectionTimeoutPolicy
+ TAO_ORB_Core::Timeout_Hook alt_connection_timeout_hook_;
+
private:
/// Constructor.
diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i
index b78066a39eb..3f5f53cd423 100644
--- a/TAO/tao/ORB_Core.i
+++ b/TAO/tao/ORB_Core.i
@@ -7,6 +7,12 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+ACE_INLINE ACE_Service_Gestalt*
+TAO_ORB_Core::configuration (void) const
+{
+ return this->config_;
+}
+
ACE_INLINE CORBA::ULong
TAO_ORB_Core::_incr_refcnt (void)
{
@@ -250,23 +256,6 @@ TAO_ORB_Core::orb_params(void)
return &(this->orb_params_);
}
-ACE_INLINE TAO_Codeset_Manager *
-TAO_ORB_Core::codeset_manager()
-{
- if (this->orb_params()->negotiate_codesets() == 0)
- return 0;
- if (this->codeset_manager_ == 0)
- {
- // This causes a factory to be loaded which will call
- // the codeset_manager setter in this thread.
- this->codeset_manager_ =
- this->resource_factory()->codeset_manager();
- if (this->codeset_manager_ == 0)
- this->orb_params()->negotiate_codesets(false);
- }
- return this->codeset_manager_;
-}
-
#define TAO_OC_RETRIEVE(member) \
((this->member##_ == 0) \
? (this->member##_ = this->resource_factory ()->get_##member ()) \
@@ -447,6 +436,23 @@ TAO_ORB_Core::server_id (void) const
return this->server_id_.c_str();
}
+ACE_INLINE TAO_Codeset_Manager *
+TAO_ORB_Core::codeset_manager()
+{
+ if (this->orb_params()->negotiate_codesets() == 0)
+ return 0;
+ if (this->codeset_manager_ == 0)
+ {
+ // This causes a factory to be loaded which will call
+ // the codeset_manager setter in this thread.
+ this->codeset_manager_ =
+ this->resource_factory()->codeset_manager();
+ if (this->codeset_manager_ == 0)
+ this->orb_params()->negotiate_codesets(false);
+ }
+ return this->codeset_manager_;
+}
+
ACE_INLINE TAO::ORBInitializer_Registry_Adapter *
TAO_ORB_Core::orbinitializer_registry ()
{
diff --git a/TAO/tao/ObjRefTemplate/Default_ORTC.cpp b/TAO/tao/ObjRefTemplate/Default_ORTC.cpp
index b3a94f7c90a..ef7dde2671c 100644
--- a/TAO/tao/ObjRefTemplate/Default_ORTC.cpp
+++ b/TAO/tao/ObjRefTemplate/Default_ORTC.cpp
@@ -92,6 +92,12 @@ TAO_Default_ORT::ObjectReferenceTemplate::_tao_obv_repository_id (void) const
}
void
+TAO_Default_ORT::ObjectReferenceTemplate::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
+void
TAO_Default_ORT::ObjectReferenceTemplate::_tao_any_destructor (void *_tao_void_pointer)
{
ObjectReferenceTemplate *_tao_tmp_pointer =
@@ -112,53 +118,42 @@ CORBA::Boolean TAO_Default_ORT::ObjectReferenceTemplate::_tao_unmarshal_v (TAO_I
return this->_tao_unmarshal__TAO_Default_ORT_ObjectReferenceTemplate (strm);
}
+CORBA::Boolean TAO_Default_ORT::ObjectReferenceTemplate::_tao_match_formal_type (ptrdiff_t formal_type_id) const
+{
+ return formal_type_id ==
+ reinterpret_cast<ptrdiff_t>(&TAO_Default_ORT::ObjectReferenceTemplate::_downcast);
+}
+
CORBA::Boolean TAO_Default_ORT::ObjectReferenceTemplate::_tao_unmarshal (
TAO_InputCDR &strm,
ObjectReferenceTemplate *&new_object
)
{
CORBA::ValueBase *base = 0;
- CORBA::ValueFactory_var factory;
CORBA::Boolean retval =
CORBA::ValueBase::_tao_unmarshal_pre (
strm,
- factory.out (),
base,
ObjectReferenceTemplate::_tao_obv_static_repository_id ()
);
-
+
if (retval == 0)
- {
return 0;
- }
-
- if (factory.in () != 0)
- {
- base = factory->create_for_unmarshal ();
-
- if (base == 0)
- {
- return 0; // %! except.?
- }
-
- retval = base->_tao_unmarshal_v (strm);
-
- if (retval == 0)
- {
+
+ if (base != 0 && ! base->_tao_unmarshal_v (strm))
return 0;
- }
- }
-
+
// Now base must be null or point to the unmarshaled object.
// Align the pointer to the right subobject.
new_object = ObjectReferenceTemplate::_downcast (base);
- return retval;
+ return 1;
}
// TAO_IDL - Generated from
// be\be_visitor_valuetype/valuetype_obv_cs.cpp:58
OBV_TAO_Default_ORT::ObjectReferenceTemplate::ObjectReferenceTemplate (void)
+: require_truncation_ (false)
{}
OBV_TAO_Default_ORT::ObjectReferenceTemplate::~ObjectReferenceTemplate (void)
@@ -242,4 +237,10 @@ OBV_TAO_Default_ORT::ObjectReferenceTemplate::_tao_unmarshal_state (TAO_InputCDR
);
}
+void
+OBV_TAO_Default_ORT::ObjectReferenceTemplate::truncation_hook (void)
+{
+ this->require_truncation_ = true;
+}
+
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/ObjRefTemplate/Default_ORTC.h b/TAO/tao/ObjRefTemplate/Default_ORTC.h
index bf461b7efcd..cce4f9d2850 100644
--- a/TAO/tao/ObjRefTemplate/Default_ORTC.h
+++ b/TAO/tao/ObjRefTemplate/Default_ORTC.h
@@ -42,7 +42,7 @@
#include "tao/ObjRefTemplate/ort_export.h"
#include "tao/Valuetype/ValueBase.h"
-#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
+#include "tao/Valuetype/Valuetype_Adapter_Factory_Impl.h"
#include "tao/ORB.h"
#include "tao/SystemException.h"
#include "tao/Environment.h"
@@ -71,22 +71,22 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
namespace TAO_Default_ORT
{
-
+
// TAO_IDL - Generated from
// be\be_valuetype.cpp:524
-
-
+
+
#if !defined (_TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE__VAR_OUT_CH_)
#define _TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE__VAR_OUT_CH_
-
+
class ObjectReferenceTemplate;
typedef
TAO_Value_Var_T<
ObjectReferenceTemplate
>
ObjectReferenceTemplate_var;
-
+
typedef
TAO_Value_Out_T<
ObjectReferenceTemplate
@@ -94,61 +94,64 @@ namespace TAO_Default_ORT
ObjectReferenceTemplate_out;
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be\be_visitor_valuetype/valuetype_ch.cpp:56
#if !defined (_TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE_CH_)
#define _TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE_CH_
-
+
class TAO_ORT_Export ObjectReferenceTemplate
: public virtual PortableInterceptor::ObjectReferenceTemplate
{
public:
typedef ObjectReferenceTemplate_var _var_type;
-
+
static ObjectReferenceTemplate* _downcast (CORBA::ValueBase *);
-
+
// (TAO extensions or internals)
static CORBA::Boolean _tao_unmarshal (
TAO_InputCDR &,
ObjectReferenceTemplate *&
);
-
+
virtual const char* _tao_obv_repository_id (void) const;
-
+
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const;
+
static const char* _tao_obv_static_repository_id (void);
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be\be_visitor_valuetype/valuetype_ch.cpp:246
-
+
protected:
ObjectReferenceTemplate (void);
-
+
virtual ~ObjectReferenceTemplate (void);
-
+
virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &) const;
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &);
-
+ virtual CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const;
+
private:
ObjectReferenceTemplate (const ObjectReferenceTemplate &);
void operator= (const ObjectReferenceTemplate &);
-
+
protected:
virtual CORBA::Boolean
_tao_marshal__TAO_Default_ORT_ObjectReferenceTemplate (TAO_OutputCDR &) const = 0;
-
+
virtual CORBA::Boolean
_tao_unmarshal__TAO_Default_ORT_ObjectReferenceTemplate (TAO_InputCDR &) = 0;
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be\be_visitor_typecode/typecode_decl.cpp:44
-
+
extern TAO_ORT_Export ::CORBA::TypeCode_ptr const _tc_ObjectReferenceTemplate;
// TAO_IDL - Generated from
@@ -161,35 +164,37 @@ namespace TAO_Default_ORT
namespace OBV_TAO_Default_ORT
{
-
+
// TAO_IDL - Generated from
// be\be_visitor_valuetype/valuetype_obv_ch.cpp:58
#if !defined (_TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE___OBV_CH_)
#define _TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE___OBV_CH_
-
+
// OBV_ class
class TAO_ORT_Export ObjectReferenceTemplate
: public virtual TAO_Default_ORT::ObjectReferenceTemplate
{
public:
-
+
protected:
ObjectReferenceTemplate (void);
virtual ~ObjectReferenceTemplate (void);
-
+
protected:
virtual CORBA::Boolean
_tao_marshal__TAO_Default_ORT_ObjectReferenceTemplate (TAO_OutputCDR &) const;
-
+
virtual CORBA::Boolean
_tao_unmarshal__TAO_Default_ORT_ObjectReferenceTemplate (TAO_InputCDR &);
-
+
CORBA::Boolean _tao_marshal_state (TAO_OutputCDR &) const;
CORBA::Boolean _tao_unmarshal_state (TAO_InputCDR &);
-
+ virtual void truncation_hook (void);
+
private:
- };
+ CORBA::Boolean require_truncation_;
+};
#endif /* end #if !defined */
}
@@ -203,7 +208,7 @@ namespace TAO
#if !defined (_TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE__TRAITS_CH_)
#define _TAO_DEFAULT_ORT_OBJECTREFERENCETEMPLATE__TRAITS_CH_
-
+
template<>
struct TAO_ORT_Export Value_Traits<TAO_Default_ORT::ObjectReferenceTemplate>
{
@@ -257,5 +262,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
#endif /* ifndef */
-
-
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp
index 1a419ab1be5..8672196c8f2 100644
--- a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.cpp
@@ -118,6 +118,12 @@ PortableInterceptor::ObjectReferenceFactory::_tao_obv_repository_id (void) const
}
void
+PortableInterceptor::ObjectReferenceFactory::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
+void
PortableInterceptor::ObjectReferenceFactory::_tao_any_destructor (void *_tao_void_pointer)
{
ObjectReferenceFactory *_tao_tmp_pointer =
@@ -128,47 +134,30 @@ PortableInterceptor::ObjectReferenceFactory::_tao_any_destructor (void *_tao_voi
PortableInterceptor::ObjectReferenceFactory::~ObjectReferenceFactory (void)
{}
-CORBA::Boolean PortableInterceptor::ObjectReferenceFactory::_tao_unmarshal (
+CORBA::Boolean
+PortableInterceptor::ObjectReferenceFactory::_tao_unmarshal (
TAO_InputCDR &strm,
ObjectReferenceFactory *&new_object
)
{
CORBA::ValueBase *base = 0;
- CORBA::ValueFactory_var factory;
CORBA::Boolean retval =
CORBA::ValueBase::_tao_unmarshal_pre (
strm,
- factory.out (),
base,
ObjectReferenceFactory::_tao_obv_static_repository_id ()
);
if (retval == 0)
- {
return 0;
- }
- if (factory.in () != 0)
- {
- base = factory->create_for_unmarshal ();
-
- if (base == 0)
- {
- return 0; // %! except.?
- }
-
- retval = base->_tao_unmarshal_v (strm);
-
- if (retval == 0)
- {
+ if (base != 0 && ! base->_tao_unmarshal_v (strm))
return 0;
- }
- }
// Now base must be null or point to the unmarshaled object.
// Align the pointer to the right subobject.
new_object = ObjectReferenceFactory::_downcast (base);
- return retval;
+ return 1;
}
// TAO_IDL - Generated from
@@ -211,6 +200,12 @@ PortableInterceptor::ObjectReferenceTemplate::_tao_obv_repository_id (void) cons
}
void
+PortableInterceptor::ObjectReferenceTemplate::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
+void
PortableInterceptor::ObjectReferenceTemplate::_tao_any_destructor (void *_tao_void_pointer)
{
ObjectReferenceTemplate *_tao_tmp_pointer =
@@ -227,41 +222,30 @@ CORBA::Boolean PortableInterceptor::ObjectReferenceTemplate::_tao_unmarshal (
)
{
CORBA::ValueBase *base = 0;
- CORBA::ValueFactory_var factory;
CORBA::Boolean retval =
CORBA::ValueBase::_tao_unmarshal_pre (
strm,
- factory.out (),
base,
ObjectReferenceTemplate::_tao_obv_static_repository_id ()
);
if (retval == 0)
- {
- return 0;
- }
-
- if (factory.in () != 0)
- {
- base = factory->create_for_unmarshal ();
-
- if (base == 0)
- {
- return 0; // %! except.?
- }
+ return 0;
- retval = base->_tao_unmarshal_v (strm);
-
- if (retval == 0)
- {
- return 0;
- }
- }
+ if (base != 0 && ! base->_tao_unmarshal_v (strm))
+ return 0;
// Now base must be null or point to the unmarshaled object.
// Align the pointer to the right subobject.
new_object = ObjectReferenceTemplate::_downcast (base);
- return retval;
+ return 1;
+}
+
+CORBA::Boolean
+PortableInterceptor::ObjectReferenceFactory::_tao_match_formal_type (ptrdiff_t formal_type_id) const
+{
+ return formal_type_id ==
+ reinterpret_cast<ptrdiff_t>(&PortableInterceptor::ObjectReferenceFactory::_downcast);
}
// TAO_IDL - Generated from
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.h b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.h
index eab7a48e6b6..6997ded8853 100644
--- a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.h
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplateC.h
@@ -45,7 +45,7 @@
#include "tao/ObjRefTemplate/ort_export.h"
#include "tao/Valuetype/ValueBase.h"
-#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
+#include "tao/Valuetype/Valuetype_Adapter_Factory_Impl.h"
#include "tao/ORB.h"
#include "tao/SystemException.h"
#include "tao/Environment.h"
@@ -127,6 +127,8 @@ namespace PortableInterceptor
static const char* _tao_obv_static_repository_id (void);
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const;
+
static void _tao_any_destructor (void *);
// TAO_IDL - Generated from
@@ -145,6 +147,7 @@ namespace PortableInterceptor
virtual ~ObjectReferenceFactory (void);
+ virtual CORBA::Boolean _tao_match_formal_type(ptrdiff_t ) const;
private:
ObjectReferenceFactory (const ObjectReferenceFactory &);
@@ -204,6 +207,8 @@ namespace PortableInterceptor
virtual const char* _tao_obv_repository_id (void) const;
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const;
+
static const char* _tao_obv_static_repository_id (void);
static void _tao_any_destructor (void *);
@@ -440,5 +445,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
#endif /* ifndef */
-
-
diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp
index 0df3b311b58..e39e2e473a3 100644
--- a/TAO/tao/Object.cpp
+++ b/TAO/tao/Object.cpp
@@ -158,7 +158,7 @@ CORBA::Object::marshal (TAO_OutputCDR &cdr)
}
/*static*/ CORBA::Boolean
-CORBA::Object::marshal (CORBA::Object_ptr x,
+CORBA::Object::marshal (const CORBA::Object_ptr x,
TAO_OutputCDR &cdr)
{
if (x == 0)
diff --git a/TAO/tao/Object.h b/TAO/tao/Object.h
index c6bd922d66a..7c806d0a58b 100644
--- a/TAO/tao/Object.h
+++ b/TAO/tao/Object.h
@@ -276,8 +276,8 @@ namespace CORBA
/// Marshalling operator used by the stub code. A long story why
/// the stub code uses this, let us keep it short here.
- static CORBA::Boolean marshal (const Object_ptr obj,
- TAO_OutputCDR &strm);
+ static CORBA::Boolean marshal (const Object_ptr x,
+ TAO_OutputCDR &cdr);
/// Accessor for the cached servant reference held on the stub
/// if this object is collocated
diff --git a/TAO/tao/PI/ORBInitializer_Registry_Impl.cpp b/TAO/tao/PI/ORBInitializer_Registry_Impl.cpp
index 919abb2706e..57834a96e38 100644
--- a/TAO/tao/PI/ORBInitializer_Registry_Impl.cpp
+++ b/TAO/tao/PI/ORBInitializer_Registry_Impl.cpp
@@ -1,6 +1,7 @@
#include "tao/PI/ORBInitializer_Registry_Impl.h"
#include "tao/PI/ORBInitInfo.h"
#include "tao/PI/PICurrent.h"
+#include "tao/PI/PI_ORBInitializer.h"
#include "tao/ORB_Core.h"
#include "tao/ORB_Constants.h"
@@ -10,6 +11,10 @@
#include "ace/Recursive_Thread_Mutex.h"
#include "ace/Log_Msg.h"
+#include "tao/PI/ClientRequestInterceptor_Factory_Impl.h"
+#include "tao/PI/PICurrent_Loader.h"
+#include "tao/PI/PolicyFactory_Loader.h"
+
ACE_RCSID (PI,
ORBInitializer_Registry,
"$Id$")
@@ -24,6 +29,66 @@ TAO::ORBInitializer_Registry::ORBInitializer_Registry (void)
}
int
+TAO::ORBInitializer_Registry::init (int, ACE_TCHAR *[])
+{
+ ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX,
+ guard,
+ this->lock_,
+ -1);
+
+#if TAO_HAS_INTERCEPTORS == 1
+
+ ACE_Service_Config::process_directive
+ (ace_svc_desc_TAO_PolicyFactory_Loader);
+
+ ACE_Service_Config::process_directive
+ (ace_svc_desc_TAO_ClientRequestInterceptor_Adapter_Factory_Impl);
+
+ ACE_Service_Config::process_directive
+ (ace_svc_desc_TAO_PICurrent_Loader);
+
+ PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
+ PortableInterceptor::ORBInitializer::_nil ();
+
+ PortableInterceptor::ORBInitializer_var orb_initializer;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ /// Register the PI ORBInitializer.
+
+ ACE_NEW_THROW_EX (temp_orb_initializer,
+ TAO_PI_ORBInitializer,
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO::VMCID,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_TRY_CHECK;
+
+ orb_initializer = temp_orb_initializer;
+
+ this->register_orb_initializer (orb_initializer.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level > 0)
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "(%P | %t) Caught exception:");
+ }
+ return -1;
+ }
+ ACE_ENDTRY;
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
+
+ return 0;
+}
+
+
+int
TAO::ORBInitializer_Registry::fini (void)
{
ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX,
diff --git a/TAO/tao/PI/ORBInitializer_Registry_Impl.h b/TAO/tao/PI/ORBInitializer_Registry_Impl.h
index edb5a2bfc26..1e4788a2602 100644
--- a/TAO/tao/PI/ORBInitializer_Registry_Impl.h
+++ b/TAO/tao/PI/ORBInitializer_Registry_Impl.h
@@ -76,6 +76,17 @@ namespace TAO
PortableInterceptor::SlotId slotid
ACE_ENV_ARG_DECL);
+ protected:
+
+ // Added to provide registration for the several static service objects,
+ // brought in with this ORBInitializer_Registry implementation. Note that
+ // this is more reliable than using static initializers, since multiple
+ // copies of the dynamic service object will require their own (multiple)
+ // copies of the dependent static service objects. That is just impossible
+ // without registering those static services in the same repo, the dynamic
+ // SO is registered with.
+ virtual int init (int, ACE_TCHAR *[]);
+
private:
// Prevent copying
ORBInitializer_Registry (const ORBInitializer_Registry &);
diff --git a/TAO/tao/PI/PI.cpp b/TAO/tao/PI/PI.cpp
index 3e18928cf8c..ebec2effb3f 100644
--- a/TAO/tao/PI/PI.cpp
+++ b/TAO/tao/PI/PI.cpp
@@ -1,11 +1,4 @@
#include "tao/PI/PI.h"
-#include "tao/PI/ORBInitializer_Registry_Impl.h"
-#include "tao/PI/PolicyFactory_Loader.h"
-#include "tao/PI/ClientRequestInterceptor_Factory_Impl.h"
-#include "tao/PI/PICurrent_Loader.h"
-#include "tao/PI/PI_ORBInitializer.h"
-#include "tao/ORBInitializer_Registry.h"
-#include "tao/ORB_Constants.h"
ACE_RCSID (PI,
PI,
@@ -13,55 +6,4 @@ ACE_RCSID (PI,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-int
-TAO_PI_Init::Initializer (void)
-{
-#if TAO_HAS_INTERCEPTORS == 1
- ACE_Service_Config::process_directive (ace_svc_desc_TAO_ClientRequestInterceptor_Adapter_Factory_Impl);
-
- ACE_Service_Config::process_directive (ace_svc_desc_TAO_PICurrent_Loader);
-#endif /* TAO_HAS_INTERCEPTORS == 1 */
-
- int status = ACE_Service_Config::process_directive (
- ace_svc_desc_ORBInitializer_Registry);
-#if TAO_HAS_INTERCEPTORS == 1
- PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
- PortableInterceptor::ORBInitializer::_nil ();
-
- PortableInterceptor::ORBInitializer_var orb_initializer;
-
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- /// Register the PI ORBInitializer.
-
- ACE_NEW_THROW_EX (temp_orb_initializer,
- TAO_PI_ORBInitializer,
- CORBA::NO_MEMORY (
- CORBA::SystemException::_tao_minor_code (
- TAO::VMCID,
- ENOMEM),
- CORBA::COMPLETED_NO));
- ACE_TRY_CHECK;
-
- orb_initializer = temp_orb_initializer;
-
- PortableInterceptor::register_orb_initializer (orb_initializer.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- if (TAO_debug_level > 0)
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "(%P | %t) Caught exception:");
- }
- return -1;
- }
- ACE_ENDTRY;
-#endif /* TAO_HAS_INTERCEPTORS == 1 */
- return status;
-}
-
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/PI/PI.h b/TAO/tao/PI/PI.h
index da45315f182..6facdc7fc2d 100644
--- a/TAO/tao/PI/PI.h
+++ b/TAO/tao/PI/PI.h
@@ -25,22 +25,6 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-/**
- * @class TAO_PI_Init
- *
- */
-class TAO_PI_Export TAO_PI_Init
-{
-public:
-
- /// Used to force the initialization of the ORB code.
- static int Initializer (void);
-};
-
-static int
-TAO_Requires_PI_Initializer =
- TAO_PI_Init::Initializer ();
-
TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
diff --git a/TAO/tao/PI/PolicyFactory_Loader.cpp b/TAO/tao/PI/PolicyFactory_Loader.cpp
index 3b8e49f062c..1e4f6e44d5a 100644
--- a/TAO/tao/PI/PolicyFactory_Loader.cpp
+++ b/TAO/tao/PI/PolicyFactory_Loader.cpp
@@ -14,9 +14,6 @@
#include "tao/PI/PolicyFactory_Loader.h"
#include "tao/PI/PolicyFactory_Registry.h"
-#include "tao/ORB.h"
-#include "tao/debug.h"
-
ACE_RCSID (PI,
PolicyFactory_Loader,
"$Id$")
@@ -33,12 +30,6 @@ TAO_PolicyFactory_Loader::create (void)
return obj;
}
-int
-TAO_PolicyFactory_Loader::Initializer (void)
-{
- return ACE_Service_Config::process_directive (ace_svc_desc_TAO_PolicyFactory_Loader);
-}
-
TAO_END_VERSIONED_NAMESPACE_DECL
ACE_STATIC_SVC_DEFINE (TAO_PolicyFactory_Loader,
diff --git a/TAO/tao/PI/PolicyFactory_Loader.h b/TAO/tao/PI/PolicyFactory_Loader.h
index a25c378676e..4ee3c5a2c56 100644
--- a/TAO/tao/PI/PolicyFactory_Loader.h
+++ b/TAO/tao/PI/PolicyFactory_Loader.h
@@ -34,14 +34,8 @@ class TAO_PI_Export TAO_PolicyFactory_Loader
public:
/// Creates a Codec factory and returns it.
virtual TAO::PolicyFactory_Registry_Adapter* create (void);
-
- /// Used to force the initialization of the ORB code.
- static int Initializer (void);
};
-static int
-TAO_Requires_PolicyFactory_Initializer = TAO_PolicyFactory_Loader::Initializer ();
-
TAO_END_VERSIONED_NAMESPACE_DECL
ACE_STATIC_SVC_DECLARE (TAO_PolicyFactory_Loader)
diff --git a/TAO/tao/PI_Forward.pidl b/TAO/tao/PI_Forward.pidl
index f704658e38c..4ace2af6e7b 100644
--- a/TAO/tao/PI_Forward.pidl
+++ b/TAO/tao/PI_Forward.pidl
@@ -43,7 +43,7 @@ module PortableInterceptor
typedef string ORBId;
typedef CORBA::StringSeq AdapterName;
typedef CORBA::OctetSeq ObjectId;
- typedef long AdapterManagerId;
+ typedef string AdapterManagerId;
typedef short AdapterState;
typedef unsigned long SlotId;
typedef short ReplyStatus;
diff --git a/TAO/tao/PI_ForwardC.h b/TAO/tao/PI_ForwardC.h
index d8672822375..898705618bc 100644
--- a/TAO/tao/PI_ForwardC.h
+++ b/TAO/tao/PI_ForwardC.h
@@ -100,8 +100,9 @@ namespace PortableInterceptor
// TAO_IDL - Generated from
// be\be_visitor_typedef/typedef_ch.cpp:379
- typedef CORBA::Long AdapterManagerId;
- typedef CORBA::Long_out AdapterManagerId_out;
+ typedef char * AdapterManagerId;
+ typedef CORBA::String_var AdapterManagerId_var;
+ typedef CORBA::String_out AdapterManagerId_out;
// TAO_IDL - Generated from
// be\be_visitor_typedef/typedef_ch.cpp:379
diff --git a/TAO/tao/Parser_Registry.cpp b/TAO/tao/Parser_Registry.cpp
index 1d873b9ae12..7b21273679e 100644
--- a/TAO/tao/Parser_Registry.cpp
+++ b/TAO/tao/Parser_Registry.cpp
@@ -49,7 +49,8 @@ TAO_Parser_Registry::open (TAO_ORB_Core *orb_core)
for (size_t i = 0; i != this->size_; ++i)
{
this->parsers_[i] =
- ACE_Dynamic_Service<TAO_IOR_Parser>::instance (names [i]);
+ ACE_Dynamic_Service<TAO_IOR_Parser>::instance (orb_core->configuration (),
+ names [i]);
if (this->parsers_[i] == 0)
{
diff --git a/TAO/tao/PortableServer/Default_Acceptor_Filter.h b/TAO/tao/PortableServer/Default_Acceptor_Filter.h
index b9288216837..3b1bca11b17 100644
--- a/TAO/tao/PortableServer/Default_Acceptor_Filter.h
+++ b/TAO/tao/PortableServer/Default_Acceptor_Filter.h
@@ -46,7 +46,7 @@ public:
TAO_Default_Acceptor_Filter (void);
/// Populate @a mprofile with all available endpoints.
- int fill_profile (const TAO::ObjectKey &object_key,
+ virtual int fill_profile (const TAO::ObjectKey &object_key,
TAO_MProfile &mprofile,
TAO_Acceptor **acceptors_begin,
TAO_Acceptor **acceptors_end,
diff --git a/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp b/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp
index ae93dee3d61..44d6a2356dd 100644
--- a/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp
+++ b/TAO/tao/PortableServer/Default_Servant_Dispatcher.cpp
@@ -15,7 +15,7 @@ TAO_Default_Servant_Dispatcher::~TAO_Default_Servant_Dispatcher (void)
TAO_Root_POA *
TAO_Default_Servant_Dispatcher::create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/PortableServer/Default_Servant_Dispatcher.h b/TAO/tao/PortableServer/Default_Servant_Dispatcher.h
index 412e8eea9c6..e5f5f2b71db 100644
--- a/TAO/tao/PortableServer/Default_Servant_Dispatcher.h
+++ b/TAO/tao/PortableServer/Default_Servant_Dispatcher.h
@@ -62,7 +62,7 @@ public:
/// Factory method for creating new POA's.
TAO_Root_POA *create_Root_POA (
const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/PortableServer/Object_Adapter.cpp b/TAO/tao/PortableServer/Object_Adapter.cpp
index 224b531864f..45519170d6e 100644
--- a/TAO/tao/PortableServer/Object_Adapter.cpp
+++ b/TAO/tao/PortableServer/Object_Adapter.cpp
@@ -11,6 +11,7 @@
#include "tao/PortableServer/Default_Servant_Dispatcher.h"
#include "tao/PortableServer/Collocated_Object_Proxy_Broker.h"
#include "tao/PortableServer/POAManager.h"
+#include "tao/PortableServer/POAManagerFactory.h"
#include "tao/PortableServer/Servant_Base.h"
// -- ACE Include --
@@ -591,13 +592,16 @@ TAO_Object_Adapter::open (ACE_ENV_SINGLE_ARG_DECL)
TAO_Default_Servant_Dispatcher);
}
- TAO_POA_Manager *poa_manager;
- ACE_NEW_THROW_EX (poa_manager,
- TAO_POA_Manager (*this),
+ ACE_NEW_THROW_EX (this->poa_manager_factory_,
+ TAO_POAManager_Factory (*this),
CORBA::NO_MEMORY ());
- ACE_CHECK;
- PortableServer::POAManager_var safe_poa_manager = poa_manager;
+ ::CORBA::PolicyList policy;
+ PortableServer::POAManager_var poa_manager
+ = poa_manager_factory_->create_POAManager (TAO_DEFAULT_ROOTPOAMANAGER_NAME,
+ policy
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
// This makes sure that the default resources are open when the Root
// POA is created.
@@ -639,7 +643,7 @@ TAO_Object_Adapter::open (ACE_ENV_SINGLE_ARG_DECL)
TAO_Root_POA::String root_poa_name (TAO_DEFAULT_ROOTPOA_NAME);
this->root_ =
this->servant_dispatcher_->create_Root_POA (root_poa_name,
- *poa_manager,
+ poa_manager.in (),
policies,
this->lock (),
this->thread_lock (),
@@ -662,11 +666,6 @@ TAO_Object_Adapter::open (ACE_ENV_SINGLE_ARG_DECL)
// for this servant.
this->root_->establish_components (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
-
- // Release the POA_Manager_var since we got here without error. The
- // TAO_POA object takes ownership of the POA_Manager object
- // (actually it shares the ownership with its peers).
- (void) safe_poa_manager._retn ();
}
void
@@ -684,14 +683,18 @@ TAO_Object_Adapter::close (int wait_for_completion
// destroyed. In the case of the POA, this means that all object
// etherealizations have finished and root POA has been destroyed
// (implying that all descendent POAs have also been destroyed).
-
TAO_Root_POA *root = 0;
+ TAO_POAManager_Factory* factory = 0;
{
ACE_GUARD (ACE_Lock, ace_mon, this->lock ());
if (this->root_ == 0)
return;
root = this->root_;
this->root_ = 0;
+ if (this->poa_manager_factory_ == 0)
+ return;
+ factory = this->poa_manager_factory_;
+ this->poa_manager_factory_ = 0;
}
CORBA::Boolean etherealize_objects = 1;
root->destroy (etherealize_objects,
@@ -699,6 +702,7 @@ TAO_Object_Adapter::close (int wait_for_completion
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
::CORBA::release (root);
+ ::CORBA::release (factory);
}
void
diff --git a/TAO/tao/PortableServer/Object_Adapter.h b/TAO/tao/PortableServer/Object_Adapter.h
index edcdda83bc7..6d36e4631a4 100644
--- a/TAO/tao/PortableServer/Object_Adapter.h
+++ b/TAO/tao/PortableServer/Object_Adapter.h
@@ -50,6 +50,7 @@ class TAO_POA_Manager;
class TAO_TSS_Resources;
class TAO_Transport;
class TAO_Servant_Dispatcher;
+class TAO_POAManager_Factory;
namespace TAO
{
@@ -493,6 +494,9 @@ private:
/// The Root POA
TAO_Root_POA *root_;
+ /// The POAManager factory.
+ TAO_POAManager_Factory *poa_manager_factory_;
+
/// The default validator and the beginning of the chain of
/// policy validators.
TAO_POA_Default_Policy_Validator default_validator_;
diff --git a/TAO/tao/PortableServer/POAManager.cpp b/TAO/tao/PortableServer/POAManager.cpp
index 8a8055d8c23..1c92bb471e0 100644
--- a/TAO/tao/PortableServer/POAManager.cpp
+++ b/TAO/tao/PortableServer/POAManager.cpp
@@ -1,6 +1,7 @@
// $Id$
#include "tao/PortableServer/POAManager.h"
+#include "tao/PortableServer/POAManagerFactory.h"
#include "tao/PortableServer/Root_POA.h"
#include "tao/PortableServer/poa_macros.h"
#include "tao/Server_Strategy_Factory.h"
@@ -17,23 +18,36 @@ ACE_RCSID (PortableServer,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-TAO_POA_Manager::TAO_POA_Manager (TAO_Object_Adapter &object_adapter)
+TAO_POA_Manager::TAO_POA_Manager (
+ TAO_Object_Adapter &object_adapter,
+ const char * id,
+ const ::CORBA::PolicyList &policies,
+ PortableServer::POAManagerFactory_ptr poa_manager_factory)
: state_ (PortableServer::POAManager::HOLDING),
lock_ (object_adapter.lock ()),
poa_collection_ (),
object_adapter_ (object_adapter),
- poa_manager_id_ (this->generate_manager_id ())
+ id_ (id == 0 ? this->generate_manager_id () : CORBA::string_dup (id)),
+ poa_manager_factory_ (* (dynamic_cast <TAO_POAManager_Factory*> (poa_manager_factory))),
+ policies_ (policies)
{
+ poa_manager_factory->_add_ref ();
}
TAO_POA_Manager::~TAO_POA_Manager (void)
{
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t)~TAO_POA_Manager : %s\n", this->id_.in ()));
+ }
+ poa_manager_factory_._remove_ref ();
}
-PortableInterceptor::AdapterManagerId
-TAO_POA_Manager::get_manager_id (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+char *
+TAO_POA_Manager::get_id (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
- return this->poa_manager_id_;
+ return CORBA::string_dup (this->id_.in ());
}
void
@@ -162,7 +176,7 @@ TAO_POA_Manager::adapter_manager_state_changed (PortableServer::POAManager::Stat
if (ior_adapter)
{
- ior_adapter->adapter_manager_state_changed (TAO_POA_Manager::poa_manager_id_,
+ ior_adapter->adapter_manager_state_changed (this->id_.in (),
adapter_state
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
@@ -303,7 +317,7 @@ TAO_POA_Manager::remove_poa (TAO_Root_POA *poa)
{
if (this->poa_collection_.is_empty ())
{
- ::CORBA::release (this);
+ this->poa_manager_factory_.remove_poamanager (this);
}
}
diff --git a/TAO/tao/PortableServer/POAManager.h b/TAO/tao/PortableServer/POAManager.h
index 056efb7578c..5e90d177cc2 100644
--- a/TAO/tao/PortableServer/POAManager.h
+++ b/TAO/tao/PortableServer/POAManager.h
@@ -42,7 +42,13 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
// Forward decl.
class TAO_Root_POA;
class TAO_Object_Adapter;
+class TAO_POAManager_Factory;
+namespace PortableServer
+{
+ class POAManagerFactory;
+ typedef POAManagerFactory *POAManagerFactory_ptr;
+}
class TAO_PortableServer_Export TAO_POA_Manager :
public PortableServer::POAManager,
@@ -80,11 +86,15 @@ public:
PortableServer::POAManager::State get_state (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
- TAO_POA_Manager (TAO_Object_Adapter &object_adapter);
+ char *get_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
- ~TAO_POA_Manager (void);
+ TAO_POA_Manager (TAO_Object_Adapter &object_adapter,
+ const char * id,
+ const ::CORBA::PolicyList & policies,
+ PortableServer::POAManagerFactory_ptr poa_manager_factory);
- PortableInterceptor::AdapterManagerId get_manager_id (ACE_ENV_SINGLE_ARG_DECL);
+ ~TAO_POA_Manager (void);
/// Check the state of this POA manager
void check_state (ACE_ENV_SINGLE_ARG_DECL);
@@ -96,6 +106,8 @@ public:
ACE_ENV_SINGLE_ARG_DECL
);
+ CORBA::PolicyList& get_policies ();
+
protected:
void activate_i (ACE_ENV_SINGLE_ARG_DECL)
@@ -134,13 +146,6 @@ protected:
int register_poa (TAO_Root_POA *poa);
- /**
- * Generate an AdapterManagerId for this POAManager.
- * @return A value that uniquely identifies the POAManager within a
- * given process.
- */
- PortableInterceptor::AdapterManagerId generate_manager_id (void) const;
-
protected:
PortableServer::POAManager::State state_;
@@ -153,8 +158,21 @@ protected:
TAO_Object_Adapter &object_adapter_;
- PortableInterceptor::AdapterManagerId poa_manager_id_;
+ CORBA::String_var id_;
+
+ TAO_POAManager_Factory& poa_manager_factory_;
+
+ CORBA::PolicyList policies_;
+
+private :
+ /**
+ * Generate an id for this POAManager.
+ * @return A value that uniquely identifies the POAManager within a
+ * given process.
+ * @note: The id_ has the ownership of the memory allocated in this method.
+ */
+ char* generate_manager_id (void) const;
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/PortableServer/POAManager.i b/TAO/tao/PortableServer/POAManager.i
index 19adb23dd8f..5dad4c14de5 100644
--- a/TAO/tao/PortableServer/POAManager.i
+++ b/TAO/tao/PortableServer/POAManager.i
@@ -84,7 +84,7 @@ TAO_POA_Manager::get_state (ACE_ENV_SINGLE_ARG_DECL)
return this->get_state_i ();
}
-ACE_INLINE PortableInterceptor::AdapterManagerId
+ACE_INLINE char*
TAO_POA_Manager::generate_manager_id (void) const
{
// The AdapterManagerId must be unique across all Adapter Managers
@@ -101,7 +101,7 @@ TAO_POA_Manager::generate_manager_id (void) const
// shifting of 64 bit addresses is performed since the
// TAO_POA_Manager object is not large enough to allow that trick.
- PortableInterceptor::AdapterManagerId id = 0;
+ CORBA::Long id = 0;
// Note that we reinterpret_cast to an "unsigned long" instead of
// CORBA::ULong since we need to first cast to an integer large
@@ -109,14 +109,10 @@ TAO_POA_Manager::generate_manager_id (void) const
// 64-bit platforms.
if (sizeof (this) == 4) // 32 bit address
- id =
- static_cast <PortableInterceptor::AdapterManagerId>
- (reinterpret_cast <ptrdiff_t> (this));
+ id = reinterpret_cast <ptrdiff_t> (this);
else if (sizeof (this) == 8) // 64 bit address -- use lower 32 bits
- id =
- static_cast <PortableInterceptor::AdapterManagerId>
- (reinterpret_cast <ptrdiff_t> (this) & 0xFFFFFFFFu);
+ id = reinterpret_cast <ptrdiff_t> (this) & 0xFFFFFFFFu;
// @@ If we ever hit a platform where neither of the above cases are
// satisfied, we're up the creek!
@@ -126,7 +122,16 @@ TAO_POA_Manager::generate_manager_id (void) const
// // ORB, or perhaps specific to the process.
// id = ...GENERATE_ID_ATOMICALLY...; // Fallback
- return id;
+ char* buf = new char [25];
+ ACE_OS::sprintf (buf, "POAManager%d", id);
+ return buf;
}
+ACE_INLINE
+CORBA::PolicyList& TAO_POA_Manager::get_policies ()
+{
+ return this->policies_;
+}
+
+
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/PortableServer/POAManager.pidl b/TAO/tao/PortableServer/POAManager.pidl
index 6c9f72580be..c678575ac30 100644
--- a/TAO/tao/PortableServer/POAManager.pidl
+++ b/TAO/tao/PortableServer/POAManager.pidl
@@ -50,6 +50,8 @@ module PortableServer
raises(AdapterInactive);
State get_state ();
+
+ string get_id();
};
};
diff --git a/TAO/tao/PortableServer/POAManagerC.h b/TAO/tao/PortableServer/POAManagerC.h
index 9d767071182..7de37664de8 100644
--- a/TAO/tao/PortableServer/POAManagerC.h
+++ b/TAO/tao/PortableServer/POAManagerC.h
@@ -248,6 +248,13 @@ namespace PortableServer
CORBA::SystemException
)) = 0;
+ virtual char * get_id (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ )) = 0;
+
// TAO_IDL - Generated from
// be\be_visitor_interface/interface_ch.cpp:210
diff --git a/TAO/tao/PortableServer/POAManagerFactory.cpp b/TAO/tao/PortableServer/POAManagerFactory.cpp
index 25d6b0bdc28..2b86ca3a829 100644
--- a/TAO/tao/PortableServer/POAManagerFactory.cpp
+++ b/TAO/tao/PortableServer/POAManagerFactory.cpp
@@ -128,7 +128,7 @@ TAO_POAManager_Factory::find (
(*iterator)->get_id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (::PortableServer::POAManager::_nil());
- if (ACE_OS::strcmp (id, poamanagerid) == 0)
+ if (ACE_OS::strcmp (id, poamanagerid.in()) == 0)
{
poamanager = PortableServer::POAManager::_duplicate (*iterator);
break;
diff --git a/TAO/tao/PortableServer/PortableServer.h b/TAO/tao/PortableServer/PortableServer.h
index 4c27f187332..256499a7456 100644
--- a/TAO/tao/PortableServer/PortableServer.h
+++ b/TAO/tao/PortableServer/PortableServer.h
@@ -41,6 +41,7 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include "tao/PortableServer/PortableServerC.h"
#undef TAO_PORTABLESERVER_SAFE_INCLUDE
#include "tao/PortableServer/POAManagerC.h"
+#include "tao/PortableServer/POAManagerFactoryC.h"
#include "tao/PortableServer/PS_CurrentC.h"
#include "tao/PortableServer/PortableServer_Functions.h"
#include "tao/PortableServer/PortableServer_WFunctions.h"
diff --git a/TAO/tao/PortableServer/PortableServer.pidl b/TAO/tao/PortableServer/PortableServer.pidl
index 938c7edeaec..50000e9bcb8 100644
--- a/TAO/tao/PortableServer/PortableServer.pidl
+++ b/TAO/tao/PortableServer/PortableServer.pidl
@@ -74,9 +74,12 @@ module PortableServer
const CORBA::PolicyType SERVANT_RETENTION_POLICY_ID = 21;
const CORBA::PolicyType REQUEST_PROCESSING_POLICY_ID = 22;
- // Forward declaration
+ // Forward declaration POAManager interface.
local interface POAManager;
+ // Forward declaration POAManagerFactory interface.
+ local interface POAManagerFactory;
+
// Forward declaration AdapterActivator interface.
local interface AdapterActivator;
@@ -146,6 +149,7 @@ module PortableServer
readonly attribute POA the_parent;
readonly attribute POAList the_children;
readonly attribute POAManager the_POAManager;
+ readonly attribute POAManagerFactory the_POAManagerFactory;
attribute AdapterActivator the_activator;
// Servant Manager registration:
diff --git a/TAO/tao/PortableServer/PortableServerC.h b/TAO/tao/PortableServer/PortableServerC.h
index f84d9eeaa47..80c5bdc4fcc 100644
--- a/TAO/tao/PortableServer/PortableServerC.h
+++ b/TAO/tao/PortableServer/PortableServerC.h
@@ -197,6 +197,25 @@ namespace PortableServer
#endif /* end #if !defined */
+#if !defined (_PORTABLESERVER_POAMANAGERFACTORY__VAR_OUT_CH_)
+#define _PORTABLESERVER_POAMANAGERFACTORY__VAR_OUT_CH_
+
+ class POAManagerFactory;
+ typedef POAManagerFactory *POAManagerFactory_ptr;
+
+ typedef
+ TAO_Objref_Var_T<
+ POAManagerFactory
+ >
+ POAManagerFactory_var;
+
+ typedef
+ TAO_Objref_Out_T<
+ POAManagerFactory
+ >
+ POAManagerFactory_out;
+
+#endif /* end #if !defined */
// TAO_IDL - Generated from
// be\be_interface.cpp:598
@@ -978,6 +997,13 @@ namespace PortableServer
CORBA::SystemException
)) = 0;
+ virtual ::PortableServer::POAManagerFactory_ptr the_POAManagerFactory (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ )) = 0;
+
// TAO_IDL - Generated from
// be\be_visitor_operation/operation_ch.cpp:46
diff --git a/TAO/tao/PortableServer/Regular_POA.cpp b/TAO/tao/PortableServer/Regular_POA.cpp
index 7383d7bd9cf..08f4965c8e7 100644
--- a/TAO/tao/PortableServer/Regular_POA.cpp
+++ b/TAO/tao/PortableServer/Regular_POA.cpp
@@ -12,7 +12,7 @@ ACE_RCSID (PortableServer,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_Regular_POA::TAO_Regular_POA (const TAO_Root_POA::String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/PortableServer/Regular_POA.h b/TAO/tao/PortableServer/Regular_POA.h
index 7a6d3c2289c..eddd7bf3205 100644
--- a/TAO/tao/PortableServer/Regular_POA.h
+++ b/TAO/tao/PortableServer/Regular_POA.h
@@ -39,7 +39,7 @@ class TAO_PortableServer_Export TAO_Regular_POA
{
public:
TAO_Regular_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/PortableServer/Root_POA.cpp b/TAO/tao/PortableServer/Root_POA.cpp
index 2ec60bb2e41..1ec42159b3c 100644
--- a/TAO/tao/PortableServer/Root_POA.cpp
+++ b/TAO/tao/PortableServer/Root_POA.cpp
@@ -19,6 +19,7 @@
#include "tao/PortableServer/AdapterActivatorC.h"
#include "tao/PortableServer/Non_Servant_Upcall.h"
#include "tao/PortableServer/POAManager.h"
+#include "tao/PortableServer/POAManagerFactory.h"
#include "tao/PortableServer/ServantManagerC.h"
#include "tao/PortableServer/poa_macros.h"
#include "tao/PortableServer/POA_Guard.h"
@@ -30,6 +31,7 @@
#include "tao/PortableServer/ServantRetentionStrategy.h"
#include "tao/PortableServer/ImplicitActivationStrategy.h"
#include "tao/PortableServer/ThreadStrategy.h"
+#include "tao/PortableServer/Acceptor_Filter_Factory.h"
#include "tao/StringSeqC.h"
#include "tao/PortableInterceptorC.h"
@@ -199,7 +201,7 @@ TAO_Root_POA::set_obj_ref_factory (
}
TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -208,7 +210,8 @@ TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name,
TAO_Object_Adapter *object_adapter
ACE_ENV_ARG_DECL)
: name_ (name),
- poa_manager_ (poa_manager),
+ poa_manager_ (* (dynamic_cast <TAO_POA_Manager*> (poa_manager))),
+ poa_manager_factory_ (* (object_adapter->poa_manager_factory_)),
tagged_component_ (),
tagged_component_id_ (),
profile_id_array_ (0),
@@ -232,6 +235,7 @@ TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name,
wait_for_completion_pending_ (0),
waiting_destruction_ (0),
servant_deactivation_condition_ (thread_lock),
+ filter_factory_ (0),
caller_key_to_object_ (0),
servant_for_key_to_object_ (0)
{
@@ -311,6 +315,10 @@ TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name,
TAO_Root_POA::~TAO_Root_POA (void)
{
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t)~TAO_Root_POA : %s\n", this->the_name ()));
+ }
}
void
@@ -399,41 +407,53 @@ TAO_Root_POA::create_POA_i (const char *adapter_name,
// created and associated with the new POA. Otherwise, the specified
// POAManager object is associated with the new POA. The POAManager
// object can be obtained using the attribute name the_POAManager.
- TAO_POA_Manager* tao_poa_manager = 0;
- PortableServer::POAManager_var safe_poa_manager;
+
+ PortableServer::POAManager_var the_poa_manager;
+
if (CORBA::is_nil (poa_manager))
{
- ACE_NEW_THROW_EX (tao_poa_manager,
- TAO_POA_Manager (this->object_adapter ()),
- CORBA::NO_MEMORY ());
+ PortableServer::POA_var poa = PortableServer::POA::_duplicate (this);
+ PortableServer::POA_var root_poa;
+
+ // Find the RootPOA by traversing the POA hierarchy until the
+ // RootPOA is reached. The RootPOA has no parent.
+ while (!CORBA::is_nil (poa.in ()))
+ {
+ root_poa = poa;
+ poa = poa->the_parent (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (PortableServer::POA::_nil ());
+ }
+
+ // Get the POAManagerFactory instance owned by RootPOA.
+ PortableServer::POAManagerFactory_var tao_poa_manager_factory
+ = root_poa->the_POAManagerFactory ();
+
+ CORBA::PolicyList empty_policies;
+ // The POAManager name will be generated when the POAManager instance
+ // is created.
+ the_poa_manager
+ = tao_poa_manager_factory->create_POAManager (0,
+ empty_policies
+ ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (PortableServer::POA::_nil ());
- safe_poa_manager = tao_poa_manager;
}
else
{
- // This is the POAManager that was passed in. Do not put it in the
- // safe_poa_manager as we do not want it to be destroyed in case
- // an exception is thrown during the create_POA_i() method.
- tao_poa_manager = dynamic_cast<TAO_POA_Manager *> (poa_manager);
+ the_poa_manager = PortableServer::POAManager::_duplicate (poa_manager);
}
PortableServer::POA_var poa = this->create_POA_i (adapter_name,
- *tao_poa_manager,
+ the_poa_manager.in (),
tao_policies
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (PortableServer::POA::_nil ());
- // Release the POA_Manager_var since we got here without error. The
- // TAO_Regular_POA object takes ownership of the POA_Manager object
- // (actually it shares the ownership with its peers).
- (void) safe_poa_manager._retn ();
-
return poa._retn ();
}
TAO_Root_POA *
TAO_Root_POA::new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -462,7 +482,7 @@ TAO_Root_POA::new_POA (const String &name,
PortableServer::POA_ptr
TAO_Root_POA::create_POA_i (const TAO_Root_POA::String &adapter_name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
@@ -2252,13 +2272,22 @@ TAO_Root_POA::key_to_stub_i (const TAO::ObjectKey &key,
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
- TAO_Default_Acceptor_Filter filter;
+ if (this->filter_factory_ == 0)
+ this->filter_factory_
+ = ACE_Dynamic_Service<TAO_Acceptor_Filter_Factory>::instance ("TAO_Acceptor_Filter_Factory");
+
+ TAO_Acceptor_Filter* filter =
+ this->filter_factory_->create_object (this->poa_manager_);
+
+ // Give ownership to the auto pointer.
+ auto_ptr<TAO_Acceptor_Filter> new_filter (filter);
+
TAO_Stub *data =
this->create_stub_object (
key,
type_id,
client_exposed_policies._retn (),
- &filter,
+ filter,
this->orb_core_.lane_resources ().acceptor_registry ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
@@ -2486,7 +2515,8 @@ TAO_Root_POA::find_servant_priority (
TAO::ORT_Adapter_Factory *
TAO_Root_POA::ORT_adapter_factory (void)
{
- return ACE_Dynamic_Service<TAO::ORT_Adapter_Factory>::instance (
+ return ACE_Dynamic_Service<TAO::ORT_Adapter_Factory>::instance
+ (orb_core_.configuration (),
TAO_Root_POA::ort_adapter_factory_name ());
}
@@ -2532,8 +2562,8 @@ TAO_Root_POA::ORT_adapter_i (void)
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Cannot initialize the "
- "object_reference_template_adapter");
+ "(%P|%t) Cannot initialize the "
+ "object_reference_template_adapter\n");
}
ACE_ENDTRY;
ACE_CHECK_RETURN (0);
@@ -2862,13 +2892,14 @@ TAO_Root_POA::the_POAManager (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
return PortableServer::POAManager::_duplicate (&this->poa_manager_);
}
-PortableInterceptor::AdapterManagerId
-TAO_Root_POA::get_manager_id (ACE_ENV_SINGLE_ARG_DECL)
+PortableServer::POAManagerFactory_ptr
+TAO_Root_POA::the_POAManagerFactory (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- return this->poa_manager_.get_manager_id (ACE_ENV_SINGLE_ARG_PARAMETER);
+ return PortableServer::POAManagerFactory::_duplicate (&this->poa_manager_factory_);
}
+
CORBA::ORB_ptr
TAO_Root_POA::_get_orb (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
{
diff --git a/TAO/tao/PortableServer/Root_POA.h b/TAO/tao/PortableServer/Root_POA.h
index 59d8e490c0c..eb6502c9ad1 100644
--- a/TAO/tao/PortableServer/Root_POA.h
+++ b/TAO/tao/PortableServer/Root_POA.h
@@ -68,9 +68,11 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
// Forward Declaration
class TAO_Acceptor_Filter;
+class TAO_Acceptor_Filter_Factory;
class TAO_Acceptor_Registry;
class TAO_IORInfo;
class TAO_Regular_POA;
+class TAO_POAManager_Factory;
namespace PortableInterceptor
{
@@ -208,11 +210,8 @@ public:
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
- /// @todo At the moment to POAManagerFactory is implemented and the
- /// POAManager has the get_id method this can be zapped, IORInfo can
- /// then just call get_id
- PortableInterceptor::AdapterManagerId get_manager_id (
- ACE_ENV_SINGLE_ARG_DECL)
+ PortableServer::POAManagerFactory_ptr the_POAManagerFactory (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
/// This method returns the adapter_name as a sequence of strings of
@@ -359,7 +358,7 @@ public:
);
TAO_Root_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -605,7 +604,7 @@ protected:
/// Template method for creating new POA's of this type.
virtual TAO_Root_POA *new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -625,7 +624,7 @@ protected:
PortableServer::POA::InvalidPolicy));
PortableServer::POA_ptr create_POA_i (const String &adapter_name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
@@ -879,8 +878,10 @@ protected:
String name_;
- /// The POA Manager belonging to this POA
+ /// Reference to the POAManager that this poa assicuates with.
TAO_POA_Manager &poa_manager_;
+ /// Reference to the POAManagerFactory that generate the POAManager.
+ TAO_POAManager_Factory& poa_manager_factory_;
IOP::TaggedComponentList tagged_component_;
@@ -942,6 +943,8 @@ protected:
TAO_SYNCH_CONDITION servant_deactivation_condition_;
+ TAO_Acceptor_Filter_Factory * filter_factory_;
+
public:
// @todo Temporarily for servant retention
CORBA::ULong caller_key_to_object_;
diff --git a/TAO/tao/PortableServer/Servant_Dispatcher.h b/TAO/tao/PortableServer/Servant_Dispatcher.h
index d2741f46546..10c062e52d1 100644
--- a/TAO/tao/PortableServer/Servant_Dispatcher.h
+++ b/TAO/tao/PortableServer/Servant_Dispatcher.h
@@ -36,6 +36,12 @@ class TAO_Root_POA;
class TAO_ORB_Core;
class TAO_ServerRequest;
+namespace PortableServer
+{
+ class POAManager;
+ typedef POAManager *POAManager_ptr;
+}
+
/**
* @class TAO_Servant_Dispatcher
*
@@ -70,7 +76,7 @@ public:
/// Factory method for creating new POA's.
virtual TAO_Root_POA *create_Root_POA (
const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/Profile.cpp b/TAO/tao/Profile.cpp
index 9879ff26ef4..6807655a876 100644
--- a/TAO/tao/Profile.cpp
+++ b/TAO/tao/Profile.cpp
@@ -10,6 +10,7 @@
#include "tao/CDR.h"
#include "tao/SystemException.h"
#include "tao/PolicyC.h"
+#include "tao/Endpoint.h"
#include "ace/ACE.h"
#include "ace/OS_NS_string.h"
@@ -254,8 +255,8 @@ TAO_Profile::decode (TAO_InputCDR& cdr)
encap_len));
}
- // Decode any additional endpoints per profile. (At the present,
- // only RTCORBA takes advantage of this feature.)
+ // Decode any additional endpoints per profile. This is used by RTCORBA
+ // and by IIOP when TAG_ALTERNATE_IIOP_ADDRESS components are present.
if (this->decode_endpoints () == -1)
{
return -1;
@@ -728,6 +729,36 @@ TAO_Profile::is_equivalent (const TAO_Profile *other)
return result;
}
+CORBA::Boolean
+TAO_Profile::compare_key (const TAO_Profile *other) const
+{
+ return (this->ref_object_key_ == other->ref_object_key_) ||
+ ((this->ref_object_key_ != 0 &&
+ other->ref_object_key_ != 0 &&
+ this->ref_object_key_->object_key() ==
+ other->ref_object_key_->object_key()));
+}
+
+TAO_Endpoint *
+TAO_Profile::first_filtered_endpoint (void)
+{
+ return this->endpoint()->next_filtered(this->orb_core_,0);
+}
+
+TAO_Endpoint *
+TAO_Profile::next_filtered_endpoint (TAO_Endpoint *source)
+{
+ if (source == 0)
+ return this->first_filtered_endpoint();
+ return this->endpoint()->next_filtered(this->orb_core_,this->endpoint());
+}
+
+void
+TAO_Profile::add_generic_endpoint (TAO_Endpoint *)
+{
+ // noop for the base type
+}
+
TAO_Service_Callbacks::Profile_Equivalence
TAO_Profile::is_equivalent_hook (const TAO_Profile *other)
{
@@ -760,6 +791,12 @@ TAO_Profile::encode_alternate_endpoints(void)
return 0;
}
+void
+TAO_Profile::remove_generic_endpoint (TAO_Endpoint *)
+{
+ // default for virtual methods, thus a no-op
+}
+
//@@ TAO_PROFILE_SPL_COMMENT_HOOK_END
//@@ TAO_PROFILE_SPL_METHODS_ADD_HOOK
@@ -898,6 +935,8 @@ TAO_Unknown_Profile::create_profile_body (TAO_OutputCDR &) const
return;
}
+
+
// *************************************************************
// Operators for TAO_opaque encoding and decoding
// *************************************************************
diff --git a/TAO/tao/Profile.h b/TAO/tao/Profile.h
index d31e55b6257..700b257c6ec 100644
--- a/TAO/tao/Profile.h
+++ b/TAO/tao/Profile.h
@@ -206,7 +206,7 @@ public:
virtual int encode_alternate_endpoints (void);
/**
- * Return pointer to this profile's endpoint. If the profile
+ * Return a pointer to this profile's endpoint. If the profile
* contains more than one endpoint, i.e., a list, the method returns
* the head of the list.
*/
@@ -215,6 +215,33 @@ public:
/// Return how many endpoints this profile contains.
virtual CORBA::ULong endpoint_count (void) const = 0;
+ /**
+ * Return the first endpoint in the list that matches some filtering
+ * constraint, such as IPv6 compatibility for IIOP endpoints. This
+ * method is implemented in terms of TAO_Endpoint;:next_filtered().
+ */
+ TAO_Endpoint *first_filtered_endpoint (void);
+
+ /// Return the next filtered endpoint in the list after the one
+ /// passed in. This method is implemented in terms of
+ /// TAO_Endpoint;:next_filtered(). If the supplied source endpoint
+ /// is null, this returns the first filtered endpoint.
+ TAO_Endpoint *next_filtered_endpoint (TAO_Endpoint *source);
+
+ /**
+ * Remove the provided endpoint from the profile. Some
+ * subclasses of TAO_Profile already have a protocol-specific
+ * version of remove_endpoint, but this generic interface is
+ * required. The default implementation is a no-op. Protocol
+ * maintainers wishing to add support for the EndpointPolicy must
+ * implement remove_generic_endpoint to call their protocol-specific
+ * version of remove_endpoint
+ */
+ virtual void remove_generic_endpoint (TAO_Endpoint *ep);
+
+ /// Add a protocol-agnostic endpoint
+ virtual void add_generic_endpoint (TAO_Endpoint *ep);
+
/// Verify profile equivalance.
/**
* Two profiles are equivalent if their tag, object_key, version
@@ -227,6 +254,12 @@ public:
*/
CORBA::Boolean is_equivalent (const TAO_Profile* other_profile);
+ /**
+ * Compare the object key for this profile with that of
+ * another. This is weaker than is_equivalent
+ */
+ CORBA::Boolean compare_key (const TAO_Profile *other) const;
+
/// Return a hash value for this object.
virtual CORBA::ULong hash (CORBA::ULong max
ACE_ENV_ARG_DECL) = 0;
diff --git a/TAO/tao/Profile_Transport_Resolver.cpp b/TAO/tao/Profile_Transport_Resolver.cpp
index 123dc6c1425..8f87bb6f619 100644
--- a/TAO/tao/Profile_Transport_Resolver.cpp
+++ b/TAO/tao/Profile_Transport_Resolver.cpp
@@ -14,6 +14,7 @@
#include "tao/Transport_Connector.h"
#include "tao/Endpoint.h"
#include "tao/SystemException.h"
+#include "tao/Client_Strategy_Factory.h"
#include "ace/Countdown_Time.h"
@@ -119,7 +120,6 @@ namespace TAO
}
}
-
bool
Profile_Transport_Resolver::try_connect (
TAO_Transport_Descriptor_Interface *desc,
@@ -127,6 +127,28 @@ namespace TAO
ACE_ENV_ARG_DECL
)
{
+ return this->try_connect_i (desc,max_time_value,0 ACE_ENV_ARG_PARAMETER);
+ };
+
+ bool
+ Profile_Transport_Resolver::try_parallel_connect (
+ TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *max_time_value
+ ACE_ENV_ARG_DECL
+ )
+ {
+ return this->try_connect_i (desc,max_time_value,1 ACE_ENV_ARG_PARAMETER);
+ };
+
+
+ bool
+ Profile_Transport_Resolver::try_connect_i (
+ TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *max_time_value,
+ bool parallel
+ ACE_ENV_ARG_DECL
+ )
+ {
TAO_Connector_Registry *conn_reg =
this->stub_->orb_core ()->connector_registry (
ACE_ENV_SINGLE_ARG_PARAMETER);
@@ -147,28 +169,30 @@ namespace TAO
bool const is_conn_timeout =
this->get_connection_timeout (connection_timeout);
+ ACE_Time_Value *max_wait_time =
+ is_conn_timeout ? &connection_timeout : max_time_value;
- ACE_Time_Value *max_wait_time = 0;
-
- if (is_conn_timeout == true)
+ if (parallel)
{
- max_wait_time = &connection_timeout;
+ this->transport_ =
+ conn_reg->get_connector (desc->endpoint ()->tag ())->
+ parallel_connect (this,
+ desc,
+ max_wait_time
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (false);
}
else
{
- max_wait_time = max_time_value;
- }
-
-
// Obtain a connection.
this->transport_ =
- conn_reg->get_connector (desc->endpoint ()->tag ())->connect (
- this,
+ conn_reg->get_connector (desc->endpoint ()->tag ())->
+ connect (this,
desc,
max_wait_time
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (false);
-
+ }
// A timeout error occurred.
// If the user has set a roundtrip timeout policy, throw a timeout
// exception. Otherwise, just fall through and return false to
@@ -193,6 +217,20 @@ namespace TAO
}
bool
+ Profile_Transport_Resolver::use_parallel_connect (void) const
+ {
+ TAO_ORB_Core *oc = this->stub_->orb_core();
+ return (oc->orb_params()->use_parallel_connects()
+#if 0 // it was decided that even with blocked connects
+ // parallel connects could be useful, at least for cache
+ // processing.
+ oc->client_factory()->connect_strategy() !=
+ TAO_Client_Strategy_Factory::TAO_BLOCKED_CONNECT
+#endif /* 0 */
+ );
+ }
+
+ bool
Profile_Transport_Resolver::get_connection_timeout (
ACE_Time_Value &max_wait_time)
{
diff --git a/TAO/tao/Profile_Transport_Resolver.h b/TAO/tao/Profile_Transport_Resolver.h
index 5ec4889a76b..34cef016395 100644
--- a/TAO/tao/Profile_Transport_Resolver.h
+++ b/TAO/tao/Profile_Transport_Resolver.h
@@ -130,13 +130,27 @@ namespace TAO
/// released back to the cache.
void transport_released (void) const;
- /// This is a callback method used by the endpoint selectors, to
+ /// This is a callback method used by the endpoint selectors to
/// delegate the responsibility of reserving a transport from the
- /// connection cache for this invocation.
+ /// connection cache for this invocation. When the descriptor
+ /// contains more than one endpoint (as part of a linked list) and
+ /// the parallel flag is true then the connector will look for a
+ /// connection on any of the endpoints if it supports that
+ /// behavior, otherwise an ENOTSUP errno will be set and the
+ /// method will return false.
bool try_connect (TAO_Transport_Descriptor_Interface *desc,
ACE_Time_Value *val
ACE_ENV_ARG_DECL);
+ bool try_parallel_connect (TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *val
+ ACE_ENV_ARG_DECL);
+
+ /// This method wraps a call to the orb core to see if parallel
+ /// connection attempts are even desired. This is controlled by
+ /// the -ORBUseParallelConnects 1|0 commandline option.
+ bool use_parallel_connect (void) const;
+
/// Initialize the inconsistent policy list that this object has
/// cached.
void init_inconsistent_policies (ACE_ENV_SINGLE_ARG_DECL)
@@ -152,6 +166,10 @@ namespace TAO
bool get_connection_timeout (ACE_Time_Value &max_wait_time);
private:
+ bool try_connect_i (TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *val,
+ bool parallel
+ ACE_ENV_ARG_DECL);
/// Target object
mutable CORBA::Object *obj_;
diff --git a/TAO/tao/RTPortableServer/RT_POA.cpp b/TAO/tao/RTPortableServer/RT_POA.cpp
index 6d4baacc932..7cfc74d470f 100644
--- a/TAO/tao/RTPortableServer/RT_POA.cpp
+++ b/TAO/tao/RTPortableServer/RT_POA.cpp
@@ -38,7 +38,7 @@ ACE_RCSID (RTPortableServer,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_RT_POA::TAO_RT_POA (const TAO_Root_POA::String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -71,7 +71,7 @@ TAO_RT_POA::~TAO_RT_POA (void)
TAO_Root_POA *
TAO_RT_POA::new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/RTPortableServer/RT_POA.h b/TAO/tao/RTPortableServer/RT_POA.h
index 5ae1c845166..2e255935f4b 100644
--- a/TAO/tao/RTPortableServer/RT_POA.h
+++ b/TAO/tao/RTPortableServer/RT_POA.h
@@ -256,7 +256,7 @@ public:
ACE_ENV_ARG_DECL);
TAO_RT_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
@@ -273,7 +273,7 @@ protected:
/// Template method for creating new POA's of this type.
virtual TAO_Root_POA *new_POA (const String &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
TAO_Root_POA *parent,
ACE_Lock &lock,
diff --git a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp
index 9273b3d716c..fc64eb1e52c 100644
--- a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp
+++ b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.cpp
@@ -372,7 +372,7 @@ TAO_RT_Servant_Dispatcher::post_invoke (TAO_Root_POA &poa,
TAO_Root_POA *
TAO_RT_Servant_Dispatcher::create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h
index 138523ff62a..2e3af3ce333 100644
--- a/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h
+++ b/TAO/tao/RTPortableServer/RT_Servant_Dispatcher.h
@@ -63,7 +63,7 @@ public:
/// Factory method for creating new POA's.
TAO_Root_POA *create_Root_POA (const ACE_CString &name,
- TAO_POA_Manager &poa_manager,
+ PortableServer::POAManager_ptr poa_manager,
const TAO_POA_Policy_Set &policies,
ACE_Lock &lock,
TAO_SYNCH_MUTEX &thread_lock,
diff --git a/TAO/tao/Reactive_Connect_Strategy.cpp b/TAO/tao/Reactive_Connect_Strategy.cpp
index 0883b3ee91c..17a9d2d642a 100644
--- a/TAO/tao/Reactive_Connect_Strategy.cpp
+++ b/TAO/tao/Reactive_Connect_Strategy.cpp
@@ -3,6 +3,7 @@
#include "tao/ORB_Core.h"
#include "tao/debug.h"
#include "tao/Transport.h"
+#include "tao/LF_Multi_Event.h"
#include "ace/Synch_Options.h"
@@ -41,9 +42,14 @@ TAO_Reactive_Connect_Strategy::synch_options (ACE_Time_Value *timeout,
}
int
-TAO_Reactive_Connect_Strategy::wait (TAO_Connection_Handler *ch,
- ACE_Time_Value *max_wait_time)
+TAO_Reactive_Connect_Strategy::wait_i (TAO_LF_Event *ev,
+ TAO_Transport *,
+ ACE_Time_Value * max_wait_time)
{
+ int result = 0;
+ if (ev == 0)
+ return -1;
+
if (TAO_debug_level > 2)
{
ACE_DEBUG ((LM_DEBUG,
@@ -51,12 +57,10 @@ TAO_Reactive_Connect_Strategy::wait (TAO_Connection_Handler *ch,
ACE_TEXT ("connection completion - wait ()\n")));
}
- int result = 0;
-
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
- while (ch->keep_waiting ())
+ while (ev->keep_waiting ())
{
result =
this->orb_core_->run (max_wait_time, 1 ACE_ENV_ARG_PARAMETER);
@@ -84,7 +88,7 @@ TAO_Reactive_Connect_Strategy::wait (TAO_Connection_Handler *ch,
ACE_ENDTRY;
// Set the result.
- if (ch->error_detected () && result != -1)
+ if (result != -1 && ev->error_detected ())
{
result = -1;
}
@@ -92,15 +96,4 @@ TAO_Reactive_Connect_Strategy::wait (TAO_Connection_Handler *ch,
return result;
}
-int
-TAO_Reactive_Connect_Strategy::wait (TAO_Transport *t,
- ACE_Time_Value *val)
-{
- if (t == 0)
- return -1;
-
- return this->wait (t->connection_handler (),
- val);
-}
-
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Reactive_Connect_Strategy.h b/TAO/tao/Reactive_Connect_Strategy.h
index 305b5e9576e..694bbb49560 100644
--- a/TAO/tao/Reactive_Connect_Strategy.h
+++ b/TAO/tao/Reactive_Connect_Strategy.h
@@ -28,8 +28,6 @@ ACE_END_VERSIONED_NAMESPACE_DECL
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-class TAO_Connector;
-
/**
* @class TAO_Reactive_Connect_Strategy
*
@@ -53,12 +51,8 @@ public:
virtual void synch_options (ACE_Time_Value *val,
ACE_Synch_Options &opt);
- virtual int wait (TAO_Connection_Handler *ch,
- ACE_Time_Value *val);
-
-
- virtual int wait (TAO_Transport *t,
- ACE_Time_Value *val);
+protected:
+ virtual int wait_i (TAO_LF_Event *ch, TAO_Transport *, ACE_Time_Value *val);
};
diff --git a/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.cpp b/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.cpp
index c250cd76240..314ec97354b 100644
--- a/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.cpp
+++ b/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.cpp
@@ -1,3 +1,13 @@
+// =================================================================
+/**
+ * @file OC_Endpoint_Selector_Loader.cpp
+ *
+ * $Id$
+ *
+ * @author Phil Mesnier <mesnier_p@ociweb.com>
+ *
+ */
+// =================================================================
// $Id$
#include "tao/Strategies/OC_Endpoint_Selector_Loader.h"
@@ -9,11 +19,10 @@ ACE_RCSID (tao,
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-TAO_OC_Endpoint_Selector_Loader::TAO_OC_Endpoint_Selector_Loader (void)
+int
+TAO_OC_Endpoint_Selector_Loader::init (void)
{
-#if defined (TAO_AS_STATIC_LIBS)
- ACE_Service_Config::process_directive (ace_svc_desc_TAO_OC_Endpoint_Selector_Factory);
-#endif /* TAO_AS_STATIC_LIBS */
+ return ACE_Service_Config::process_directive (ace_svc_desc_TAO_OC_Endpoint_Selector_Factory);
}
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.h b/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.h
index 5edc517027d..a19f9cf5b1e 100644
--- a/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.h
+++ b/TAO/tao/Strategies/OC_Endpoint_Selector_Loader.h
@@ -49,11 +49,12 @@ class TAO_Optimized_Connection_Endpoint_Selector;
class TAO_Strategies_Export TAO_OC_Endpoint_Selector_Loader
{
public:
- TAO_OC_Endpoint_Selector_Loader (void);
+ static int init(void);
};
-
-static TAO_OC_Endpoint_Selector_Loader _TAO_oc_endpoint_selector_loader;
+static int
+TAO_Requires_OC_Endpoint_Selector_Loader =
+ TAO_OC_Endpoint_Selector_Loader::init ();
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp b/TAO/tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp
index dae584e8152..ad864ad1b9f 100644
--- a/TAO/tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp
+++ b/TAO/tao/Strategies/Optimized_Connection_Endpoint_Selector.cpp
@@ -27,7 +27,7 @@ TAO_Optimized_Connection_Endpoint_Selector::TAO_Optimized_Connection_Endpoint_Se
if (TAO_debug_level)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO(%P|%t) Optimized Connection Enpoint Selector:")
+ ACE_TEXT ("TAO(%P|%t) Optimized Connection Enpoint Selector: ")
ACE_TEXT ("Initializing timeout hook tv = %d sec, %d usec\n"),
tv.sec(), tv.usec()));
}
diff --git a/TAO/tao/TAO_Internal.cpp b/TAO/tao/TAO_Internal.cpp
index d288fbf7e6c..297fa56eaa3 100644
--- a/TAO/tao/TAO_Internal.cpp
+++ b/TAO/tao/TAO_Internal.cpp
@@ -48,33 +48,71 @@ ACE_RCSID (tao,
namespace
{
+
+ /**
+ * Parses the supplied command-line arguments to extract any that
+ * apply to the process (globally)
+ *
+ * @brief Modifies the argc to reflect any arguments it has
+ * "consumed"
+ */
+ int
+ parse_global_args_i (int &argc,
+ char **argv,
+ CORBA::StringSeq &svc_config_argv);
+
/**
- * Initialize the ACE Service Configurator. This is a one-shot
- * method, i.e., it can be called multiple times but it will only do
- * its work once. It does, however, track the number of times it's
- * called (see @c open_services()). It is fully thread-safe.
+ * Initialize the ACE Service Configurator with the process-global
+ * services (available to any ORB).
*
* @return @c 0 if successful, @c -1 with @c errno set if failure.
*
* @note You can provide your program a set of default `svc.conf'
* entries by setting @a ignore_default_svc_conf_file to
* non-zero and use @c default_svc_conf_entries() before
- * calling @c open_services(). In addition, you can @a
+ * calling @c open_global_services(). In addition, you can @a
* skip_service_config_open altogether, which used to be
* important when the ORB is linked in via the
- * ACE_Service_Configurator, since the
- * ACE_Service_Configurator was non-reentrant. However, the
- * ACE_Service_Configurator is now reentrant meaning that it
- * is really no longer necessary to do so.
+ * ACE_Service_Config, since the ACE_Service_Config was
+ * non-reentrant. However, the ACE_Service_Config is now
+ * reentrant meaning that it is really no longer necessary to
+ * do so.
+ */
+ void register_global_services_i (ACE_Service_Gestalt * pcfg);
+ int open_global_services_i (ACE_Service_Gestalt* theone,
+ int & argc,
+ char ** argv,
+ bool skip_service_config_open);
+
+ /**
+ * Parses the supplied command-line arguments to extract any
+ * instance-specific ones.
+ *
+ * @brief Modifies the argc to reflect any arguments it has
+ * "consumed"
+ */
+ int
+ parse_private_args_i (int &argc,
+ char **argv,
+ CORBA::StringSeq & svc_config_argv,
+ bool & skip_service_config_open);
+
+ /**
+ * Initialize ORB-local (private) ACE Service Configurator
+ * repository.
+ *
+ * @return @c 0 if successful, @c -1 with @c errno set if failure.
+ *
*/
- int open_services_i (int & argc,
- char ** argv,
- bool ignore_default_svc_conf_file = false,
- bool skip_service_config_open = false);
+ int open_private_services_i (ACE_Service_Gestalt* pcfg,
+ int & argc,
+ char ** argv,
+ bool skip_service_config_open = false);
- /// Number of times open_services() has been called. Incremented by
- /// open_services(), and decremented by close_services().
/**
+ * Number of times open_services() has been called. Incremented by
+ * open_global_services_i(), and decremented by close_services().
+ *
* @note In/decrement operations are atomic.
*/
long service_open_count = 0;
@@ -90,7 +128,9 @@ namespace
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
int
-TAO::ORB::open_services (int &argc, ACE_TCHAR **argv)
+TAO::ORB::open_services (ACE_Service_Gestalt* pcfg,
+ int &argc,
+ ACE_TCHAR **argv)
{
// Construct an argument vector specific to the Service
// Configurator.
@@ -105,7 +145,6 @@ TAO::ORB::open_services (int &argc, ACE_TCHAR **argv)
argv0 = ACE_TEXT_TO_CHAR_OUT (argv[0]);
}
- CORBA::ULong len = 0;
svc_config_argv.length (1);
svc_config_argv[0] = argv0.c_str ();
@@ -117,157 +156,66 @@ TAO::ORB::open_services (int &argc, ACE_TCHAR **argv)
// -Ossama
bool skip_service_config_open = false;
-#if defined (TAO_DEBUG) && !defined (ACE_HAS_WINCE)
- // Make it a little easier to debug programs using this code.
+ // Extract any ORB options from the argument vector.
+ if (parse_private_args_i (argc,
+ argv,
+ svc_config_argv,
+ skip_service_config_open) == -1)
+ return -1;
+ else
{
- TAO_debug_level = ACE_Env_Value<u_int> ("TAO_ORB_DEBUG", 0);
+ ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX,
+ guard,
+ *ACE_Static_Object_Lock::instance (),
+ -1));
- char * const value = ACE_OS::getenv ("TAO_ORB_DEBUG");
+ service_open_count++;
- if (value != 0)
+ ACE_Service_Gestalt * theone = ACE_Service_Config::global ();
+ if (pcfg != theone)
+ {
+ int status = open_global_services_i (theone, argc, argv, skip_service_config_open);
+ if (status == -1)
{
- TAO_debug_level = ACE_OS::atoi (value);
-
- if (TAO_debug_level <= 0)
- {
- TAO_debug_level = 1;
- }
-
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO_debug_level == %d\n"),
- TAO_debug_level));
+ if (TAO_debug_level > 0)
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ ACE_LIB_TEXT ("TAO (%P|%t) Failed to ")
+ ACE_LIB_TEXT("open process-wide service configuration\n")),
+ -1);
+ return -1;
}
- }
-#endif /* TAO_DEBUG && !ACE_HAS_WINCE */
-
- // Extract the Service Configurator ORB options from the argument
- // vector.
- ACE_Arg_Shifter arg_shifter (argc, argv);
+ }
- while (arg_shifter.is_anything_left ())
+ int svc_config_argc = svc_config_argv.length ();
+ int status =
+ open_private_services_i (pcfg,
+ svc_config_argc,
+ svc_config_argv.get_buffer (),
+ skip_service_config_open);
+ if (status == -1)
{
- const ACE_TCHAR *current_arg = 0;
-
- // Start with the parameterless flags.
- if (arg_shifter.cur_arg_strncasecmp
- (ACE_TEXT ("-ORBSkipServiceConfigOpen")) == 0)
- {
- skip_service_config_open = true;
-
- arg_shifter.consume_arg ();
- }
- else if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBDebug")) == 0)
- {
- // later, replace all of these
- // warning this turns on a daemon
- ACE::debug (1);
- arg_shifter.consume_arg ();
- }
- else if (0 != (current_arg = arg_shifter.get_the_parameter
- (ACE_TEXT ("-ORBDebugLevel"))))
- {
- TAO_debug_level =
- ACE_OS::atoi (current_arg);
-
- arg_shifter.consume_arg ();
- }
- else if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBDaemon")) == 0)
- {
- // Be a daemon
-
- len = svc_config_argv.length ();
- svc_config_argv.length (len + 1);
-
- svc_config_argv[len] = CORBA::string_dup ("-b");
-
- arg_shifter.consume_arg ();
- }
- // Continue with flags that accept parameters.
- else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBSvcConfDirective"))))
- {
- len = svc_config_argv.length ();
- svc_config_argv.length (len + 2); // 2 arguments to add
-
- // This is used to pass arguments to the Service
- // Configurator using the "command line" to provide
- // configuration information rather than using a svc.conf
- // file. Pass the "-S" to the service configurator.
- svc_config_argv[len] = CORBA::string_dup ("-S");
- svc_config_argv[len + 1] = CORBA::string_dup (current_arg);
-
- arg_shifter.consume_arg ();
- }
- else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBSvcConf"))))
- {
- // Specify the name of the svc.conf file to be used.
-
- // Proceeds only if the configuration file exists.
- FILE * const conf_file = ACE_OS::fopen (current_arg, ACE_TEXT ("r"));
-
- if (conf_file == 0)
- {
- // Assigning EINVAL to errno to make an exception
- // thrown. calling code does not throw an exception if
- // the errno is set to ENOENT for some reason.
- errno = EINVAL;
-
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t) Service Configurator ")
- ACE_TEXT ("unable to open file %s\n"),
- current_arg),
- -1);
-
- }
- else
- {
- ACE_OS::fclose (conf_file);
- }
-
- len = svc_config_argv.length ();
- svc_config_argv.length (len + 2); // 2 arguments to add
-
- svc_config_argv[len] = CORBA::string_dup ("-f");
- svc_config_argv[len + 1] = CORBA::string_dup (current_arg);
-
- arg_shifter.consume_arg();
- }
- else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBServiceConfigLoggerKey"))))
- {
- len = svc_config_argv.length ();
- svc_config_argv.length (len + 2); // 2 arguments to add
-
- svc_config_argv[len] = CORBA::string_dup ("-k");
- svc_config_argv[len + 1] = CORBA::string_dup (current_arg);
-
- arg_shifter.consume_arg ();
- }
- // Can't interpret this argument. Move on to the next argument.
- else
- {
- // Any arguments that don't match are ignored so that the
- // caller can still use them.
- arg_shifter.ignore_arg ();
- }
+ if (TAO_debug_level > 0)
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) Failed to ")
+ ACE_TEXT("open orb service configuration\n")),
+ -1);
+ return -1;
}
- int svc_config_argc = svc_config_argv.length ();
- return open_services_i (svc_config_argc,
- svc_config_argv.get_buffer (),
- 0, // @@ What about this argument?
- skip_service_config_open);
+ return 0;
+ }
}
int
-TAO::ORB::close_services (void)
+TAO::ORB::close_services (ACE_Service_Gestalt* pcfg)
{
ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX,
guard,
*ACE_Static_Object_Lock::instance (),
-1));
+ service_open_count--;
- --service_open_count;
-
- return 0;
+ return pcfg->close ();
}
void
@@ -285,32 +233,78 @@ TAO_END_VERSIONED_NAMESPACE_DECL
// -----------------------------------------------------
namespace
{
+
+ ///
+
int
- open_services_i (int & argc,
- char ** argv,
- bool ignore_default_svc_conf_file,
- bool skip_service_config_open)
+ open_global_services_i (ACE_Service_Gestalt * theone,
+ int & argc,
+ ACE_TCHAR ** argv,
+ bool skip_service_config_open)
+ {
+ // Construct an argument vector specific to the process-wide
+ // (global) Service Configurator instance.
+ CORBA::StringSeq global_svc_config_argv;
+
+ // Be certain to copy the program name so that service configurator
+ // has something to skip!
+ ACE_CString argv0 ("");
+
+ if (argc > 0 && argv != 0)
+ {
+ argv0 = ACE_TEXT_ALWAYS_CHAR (argv[0]);
+ }
+
+ global_svc_config_argv.length (1);
+ global_svc_config_argv[0] = argv0.c_str ();
+
+ if (parse_global_args_i (argc, argv, global_svc_config_argv) == -1)
+ return -1;
+
+ ACE_Service_Config_Guard guard (theone);
+ register_global_services_i (theone);
+
+ int global_svc_config_argc = global_svc_config_argv.length ();
+ if (!skip_service_config_open)
+ {
+ return theone->open (global_svc_config_argc,
+ global_svc_config_argv.get_buffer ());
+ }
+ return 0;
+ }
+
+
+ ///
+
+ int
+ open_private_services_i (ACE_Service_Gestalt * pcfg,
+ int & argc,
+ ACE_TCHAR ** argv,
+ bool skip_service_config_open)
{
#if defined (TAO_PLATFORM_SVC_CONF_FILE_NOTSUP)
- ignore_default_svc_conf_file = true;
+ bool ignore_default_svc_conf_file = true;
+#else
+ bool ignore_default_svc_conf_file = false;
#endif /* TAO_PLATFORM_SVC_CONF_FILE_NOTSUP */
- {
- ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX,
- guard,
- *ACE_Static_Object_Lock::instance (),
- -1));
+ if (skip_service_config_open)
+ return 0;
- if (service_open_count++ != 0) // Atomic increment
- return 0;
- }
+ return pcfg->open (argc,
+ argv,
+ ACE_DEFAULT_LOGGER_KEY,
+ 0, // Don't ignore static services.
+ ignore_default_svc_conf_file);
+ }
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Resource_Factory);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Client_Strategy_Factory);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Server_Strategy_Factory);
+ /// @brief registers all process-wide (global) services, available to all ORBs
+ void
+ register_global_services_i (ACE_Service_Gestalt * pcfg)
+ {
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Resource_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Client_Strategy_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Server_Strategy_Factory);
// Configure the IIOP factory. You do *NOT* need modify this
// code to add your own protocol, instead simply add the
@@ -321,125 +315,273 @@ namespace
//
// where PN is the name of your protocol and LIB is the base
// name of the shared library that implements the protocol.
+
#if defined (TAO_HAS_IIOP) && (TAO_HAS_IIOP != 0)
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_IIOP_Protocol_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_IIOP_Protocol_Factory);
#endif /* TAO_HAS_IIOP && TAO_HAS_IIOP != 0 */
// add descriptor to list of static objects.
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_MCAST_Parser);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_CORBANAME_Parser);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_CORBALOC_Parser);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_FILE_Parser);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_DLL_Parser);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Stub_Factory);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Endpoint_Selector_Factory);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Protocols_Hooks);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Thread_Lane_Resources_Manager_Factory);
- ACE_Service_Config::process_directive (
- ace_svc_desc_TAO_Default_Collocation_Resolver);
-
- int result = 0;
-
- if (!skip_service_config_open)
- {
- // Copy command line parameter not to use original.
- ACE_Argv_Type_Converter command_line (argc, argv);
-
- result =
- ACE_Service_Config::open (command_line.get_argc(),
- command_line.get_TCHAR_argv(),
- ACE_DEFAULT_LOGGER_KEY,
- 0, // Don't ignore static services.
- ignore_default_svc_conf_file);
- }
+ pcfg->process_directive (ace_svc_desc_TAO_MCAST_Parser);
+ pcfg->process_directive (ace_svc_desc_TAO_CORBANAME_Parser);
+ pcfg->process_directive (ace_svc_desc_TAO_CORBALOC_Parser);
+ pcfg->process_directive (ace_svc_desc_TAO_FILE_Parser);
+ pcfg->process_directive (ace_svc_desc_TAO_DLL_Parser);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Stub_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Endpoint_Selector_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Protocols_Hooks);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Thread_Lane_Resources_Manager_Factory);
+ pcfg->process_directive (ace_svc_desc_TAO_Default_Collocation_Resolver);
+
+ // @@ What the heck do these things do and do we need to avoid
+ // calling them if we're not invoking the svc.conf file?
+ // @@ They are needed for platforms that have no file system,
+ // like VxWorks.
+ if (resource_factory_args != 0)
+ {
+ pcfg->process_directive
+ (ACE_TEXT_CHAR_TO_TCHAR (resource_factory_args));
+ }
+
+ if (client_strategy_factory_args != 0)
+ {
+ pcfg->process_directive
+ (ACE_TEXT_CHAR_TO_TCHAR (client_strategy_factory_args));
+ }
+
+ if (server_strategy_factory_args != 0)
+ {
+ pcfg->process_directive
+ (ACE_TEXT_CHAR_TO_TCHAR (server_strategy_factory_args));
+ }
// If available, allow the Adapter Factory to setup.
ACE_Service_Object *adapter_factory =
- ACE_Dynamic_Service<TAO_Adapter_Factory>::instance (
- TAO_ORB_Core::poa_factory_name ().c_str());
+ ACE_Dynamic_Service<ACE_Service_Object>::instance
+ (pcfg, TAO_ORB_Core::poa_factory_name ().c_str());
if (adapter_factory != 0)
- {
- adapter_factory->init (0, 0);
- }
+ {
+ adapter_factory->init (0, 0);
+ }
ACE_Service_Object * const pi_server_loader =
- ACE_Dynamic_Service<ACE_Service_Object>::instance ("PI_Server_Loader");
+ ACE_Dynamic_Service<ACE_Service_Object>::instance (pcfg, "PI_Server_Loader");
if (pi_server_loader != 0)
- {
- pi_server_loader->init (0, 0);
- }
+ {
+ pi_server_loader->init (0, 0);
+ }
ACE_Service_Object * const bidir_loader =
- ACE_Dynamic_Service<ACE_Service_Object>::instance ("BiDirGIOP_Loader");
+ ACE_Dynamic_Service<ACE_Service_Object>::instance (pcfg, "BiDirGIOP_Loader");
if (bidir_loader != 0)
- {
- bidir_loader->init (0, 0);
- }
+ {
+ bidir_loader->init (0, 0);
+ }
ACE_Service_Object * const messaging_loader =
- ACE_Dynamic_Service<ACE_Service_Object>::instance ("Messaging_Loader");
+ ACE_Dynamic_Service<ACE_Service_Object>::instance (pcfg, "Messaging_Loader");
if (messaging_loader != 0)
- {
- messaging_loader->init (0, 0);
- }
+ {
+ messaging_loader->init (0, 0);
+ }
// Handle RTCORBA library special case. Since RTCORBA needs
// its init method call to register several hooks, call it
// here if it hasn't already been called.
ACE_Service_Object * const rt_loader =
- ACE_Dynamic_Service<ACE_Service_Object>::instance ("RT_ORB_Loader");
+ ACE_Dynamic_Service<ACE_Service_Object>::instance (pcfg, "RT_ORB_Loader");
if (rt_loader != 0)
- {
- rt_loader->init (0, 0);
- }
+ {
+ rt_loader->init (0, 0);
+ }
ACE_Service_Object * const rtscheduler_loader =
- ACE_Dynamic_Service<ACE_Service_Object>::instance ("RTScheduler_Loader");
+ ACE_Dynamic_Service<ACE_Service_Object>::instance (pcfg, "RTScheduler_Loader");
if (rtscheduler_loader != 0)
+ {
+ rtscheduler_loader->init (0, 0);
+ }
+
+ } /* register_additional_services_i */
+
+
+ int
+ parse_private_args_i (int &argc,
+ char **argv,
+ CORBA::StringSeq &svc_config_argv,
+ bool & skip_service_config_open)
+ {
+ // Extract the Service Configurator ORB options from the argument
+ // vector.
+ ACE_Arg_Shifter arg_shifter (argc, argv);
+
+ CORBA::ULong len = 0;
+ while (arg_shifter.is_anything_left ())
+ {
+ const ACE_TCHAR *current_arg = 0;
+
+ // Start with the parameterless flags.
+ if (arg_shifter.cur_arg_strncasecmp
+ (ACE_TEXT ("-ORBSkipServiceConfigOpen")) == 0)
{
- rtscheduler_loader->init (0, 0);
+ skip_service_config_open = true;
+
+ arg_shifter.consume_arg ();
}
+ // Continue with flags that accept parameters.
+ else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBSvcConfDirective"))))
+ {
+ len = svc_config_argv.length ();
+ svc_config_argv.length (len + 2); // 2 arguments to add
- // @@ What the heck do these things do and do we need to avoid
- // calling them if we're not invoking the svc.conf file?
- // @@ They are needed for platforms that have no file system,
- // like VxWorks.
- if (resource_factory_args != 0)
+ // This is used to pass arguments to the Service
+ // Configurator using the "command line" to provide
+ // configuration information rather than using a svc.conf
+ // file. Pass the "-S" to the service configurator.
+ svc_config_argv[len] = CORBA::string_dup ("-S");
+ svc_config_argv[len + 1] = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR(current_arg));
+
+ arg_shifter.consume_arg ();
+ }
+ else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBSvcConf"))))
+ {
+ // Specify the name of the svc.conf file to be used.
+
+ // Proceeds only if the configuration file exists.
+ FILE * const conf_file = ACE_OS::fopen (current_arg, ACE_TEXT ("r"));
+
+ if (conf_file == 0)
+ {
+ // Assigning EINVAL to errno to make an exception
+ // thrown. calling code does not throw an exception if
+ // the errno is set to ENOENT for some reason.
+ errno = EINVAL;
+
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) Service Configurator ")
+ ACE_TEXT ("unable to open file %s\n"),
+ current_arg),
+ -1);
+
+ }
+ else
+ {
+ ACE_OS::fclose (conf_file);
+ }
+
+ len = svc_config_argv.length ();
+ svc_config_argv.length (len + 2); // 2 arguments to add
+
+ svc_config_argv[len] = CORBA::string_dup ("-f");
+ svc_config_argv[len + 1] = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR(current_arg));
+
+ arg_shifter.consume_arg();
+ }
+ else if (0 != (current_arg = arg_shifter.get_the_parameter (ACE_TEXT ("-ORBServiceConfigLoggerKey"))))
+ {
+ len = svc_config_argv.length ();
+ svc_config_argv.length (len + 2); // 2 arguments to add
+
+ svc_config_argv[len] = CORBA::string_dup ("-k");
+ svc_config_argv[len + 1] = CORBA::string_dup (ACE_TEXT_ALWAYS_CHAR(current_arg));
+
+ arg_shifter.consume_arg ();
+ }
+ // Can't interpret this argument. Move on to the next argument.
+ else
{
- ACE_Service_Config::process_directive (
- ACE_TEXT_TO_TCHAR_IN (resource_factory_args));
+ // Any arguments that don't match are ignored so that the
+ // caller can still use them.
+ arg_shifter.ignore_arg ();
}
+ }
- if (client_strategy_factory_args != 0)
+ return 0;
+
+ } /* parse_private_args_i */
+
+ int
+ parse_global_args_i (int &argc,
+ char **argv,
+ CORBA::StringSeq &svc_config_argv)
+ {
+
+#if defined (TAO_DEBUG) && !defined (ACE_HAS_WINCE)
+ // Make it a little easier to debug programs using this code.
+ {
+ TAO_debug_level = ACE_Env_Value<u_int> ("TAO_ORB_DEBUG", 0);
+
+ char * const value = ACE_OS::getenv ("TAO_ORB_DEBUG");
+
+ if (value != 0)
{
- ACE_Service_Config::process_directive (
- ACE_TEXT_TO_TCHAR_IN (client_strategy_factory_args));
+ TAO_debug_level = ACE_OS::atoi (value);
+
+ if (TAO_debug_level <= 0)
+ {
+ TAO_debug_level = 1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO_debug_level == %d\n"),
+ TAO_debug_level));
}
+ }
+#endif /* TAO_DEBUG && !ACE_HAS_WINCE */
- if (server_strategy_factory_args != 0)
+
+ // Extract the Service Configurator ORB options from the argument
+ // vector.
+ ACE_Arg_Shifter arg_shifter (argc, argv);
+ CORBA::ULong len = 0;
+
+ while (arg_shifter.is_anything_left ())
+ {
+ const ACE_TCHAR *current_arg = 0;
+ if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBDebug")) == 0)
{
- ACE_Service_Config::process_directive (
- ACE_TEXT_TO_TCHAR_IN (server_strategy_factory_args));
+ // later, replace all of these
+ // warning this turns on a daemon
+ ACE::debug (1);
+ arg_shifter.consume_arg ();
}
+ else if (0 != (current_arg = arg_shifter.get_the_parameter
+ (ACE_TEXT ("-ORBDebugLevel"))))
+ {
+ TAO_debug_level =
+ ACE_OS::atoi (current_arg);
- return result;
- }
-}
+ arg_shifter.consume_arg ();
+ }
+ else if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-ORBDaemon")) == 0)
+ {
+ // Be a daemon
+
+ len = svc_config_argv.length ();
+ svc_config_argv.length (len + 1);
+
+ svc_config_argv[len] = CORBA::string_dup ("-b");
+ arg_shifter.consume_arg ();
+ }
+ // Can't interpret this argument. Move on to the next argument.
+ else
+ {
+ // Any arguments that don't match are ignored so that the
+ // caller can still use them.
+ arg_shifter.ignore_arg ();
+ }
+ }
+
+ return 0;
+
+ } /* parse_global_args_i */
+
+
+}
// TAO_BEGIN_VERSIONED_NAMESPACE_DECL -- ended prior to anonymous namespace.
diff --git a/TAO/tao/TAO_Internal.h b/TAO/tao/TAO_Internal.h
index e528980821c..3a40ef07bd6 100644
--- a/TAO/tao/TAO_Internal.h
+++ b/TAO/tao/TAO_Internal.h
@@ -24,6 +24,11 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+/// Forward declaration
+class ACE_Service_Gestalt;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
namespace TAO
@@ -38,13 +43,14 @@ namespace TAO
*/
namespace ORB
{
- /// Extract ACE Service Configurator arguments from the given
- /// argument vector, and initialize the ACE Service Configurator.
/**
+ * Extract ACE Service Configurator arguments from the given
+ * argument vector, and initialize the ACE Service Configurator.
+ *
* @note This method should be called before the ORB Core is
* initialized, and before any ORBInitializers are invoked.
*/
- int open_services (int& argc, ACE_TCHAR** argv);
+ int open_services (ACE_Service_Gestalt* cfg, int& argc, ACE_TCHAR** argv);
/**
* The complement to @c open_services(), this will perform
@@ -52,13 +58,16 @@ namespace TAO
* should be called as many times as @c open_services(), and will
* only actually close things down on the last call. It is fully
* thread-safe.
+ *
* @return @c 0 if successful, @c -1 with @c errno set if
* failure.
*/
- int close_services (void);
+ int close_services (ACE_Service_Gestalt* pcfg);
- /// Set default @c `svc.conf' content. This call has no effect if
- /// This function must be called before first ORB initialization.
+ /**
+ * Set default @c `svc.conf' content.
+ * This function must be called before first ORB initialization.
+ */
void default_svc_conf_entries (char const * rf_args,
char const * ssf_args,
char const * csf_args);
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index 1d067684b6c..3c130b10691 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -1224,6 +1224,7 @@ TAO_Transport::send_asynchronous_message_i (TAO_Stub *stub,
if (this->queue_message_i(message_block) == -1)
{
+ if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - Transport[%d]::send_asynchronous_message_i, ")
ACE_TEXT ("cannot queue message for ")
@@ -2335,7 +2336,6 @@ TAO_Transport::post_open (size_t id)
ace_mon,
*this->handler_lock_,
false);
-
this->is_connected_ = true;
}
diff --git a/TAO/tao/Transport_Connector.cpp b/TAO/tao/Transport_Connector.cpp
index 0d6c1ee6692..0b2b433813d 100644
--- a/TAO/tao/Transport_Connector.cpp
+++ b/TAO/tao/Transport_Connector.cpp
@@ -7,11 +7,14 @@
#include "tao/Thread_Lane_Resources.h"
#include "tao/debug.h"
#include "tao/Connect_Strategy.h"
+#include "tao/LF_Multi_Event.h"
#include "tao/Client_Strategy_Factory.h"
#include "tao/Connection_Handler.h"
#include "tao/Profile_Transport_Resolver.h"
#include "tao/Wait_Strategy.h"
#include "tao/SystemException.h"
+#include "tao/Endpoint.h"
+#include "tao/Base_Transport_Property.h"
#include "ace/OS_NS_string.h"
@@ -242,6 +245,81 @@ TAO_Connector::make_mprofile (const char *string,
return 0; // Success
}
+int
+TAO_Connector::supports_parallel_connects(void) const
+{
+ return 0; // by default, we don't support parallel connection attempts;
+}
+
+TAO_Transport*
+TAO_Connector::make_parallel_connection (TAO::Profile_Transport_Resolver *,
+ TAO_Transport_Descriptor_Interface &,
+ ACE_Time_Value *)
+{
+ return 0;
+}
+
+
+TAO_Transport*
+TAO_Connector::parallel_connect (TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *timeout
+ ACE_ENV_ARG_DECL_NOT_USED)
+{
+ if (this->supports_parallel_connects() == 0)
+ {
+ errno = ENOTSUP;
+ return 0;
+ }
+
+ errno = 0; // need to clear errno to ensure a stale enotsup is not set
+ if (desc == 0)
+ return 0;
+ unsigned int endpoint_count = 0;
+ TAO_Endpoint *root_ep = desc->endpoint();
+ for (TAO_Endpoint *ep = root_ep->next_filtered (this->orb_core(),0);
+ ep != 0;
+ ep = ep->next_filtered(this->orb_core(),root_ep))
+ if (this->set_validate_endpoint (ep) == 0)
+ ++endpoint_count;
+ if (endpoint_count == 0)
+ return 0;
+
+ TAO_Transport *base_transport = 0;
+
+ TAO::Transport_Cache_Manager &tcm =
+ this->orb_core ()->lane_resources ().transport_cache ();
+
+ // Iterate through the endpoints. Since find_transport takes a
+ // Transport Descriptor rather than an endpoint, we must create a
+ // local TDI for each endpoint. The first one found will be used.
+ for (TAO_Endpoint *ep = root_ep->next_filtered (this->orb_core(),0);
+ ep != 0;
+ ep = ep->next_filtered(this->orb_core(),root_ep))
+ {
+ TAO_Base_Transport_Property desc2(ep,0);
+ if (tcm.find_transport (&desc2,
+ base_transport) == 0)
+ {
+ if (TAO_debug_level)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) TAO_Connector::parallel_connect: ")
+ ACE_TEXT ("found a transport [%d]\n"),
+ base_transport->id()));
+ return base_transport;
+ }
+ }
+
+ // Now we have searched the cache on all endpoints and come up
+ // empty. We need to initiate connections on each of the
+ // endpoints. Presumably only one will have a route and will succeed,
+ // and the rest will fail. This requires the use of asynch
+ // connection establishment. Maybe a custom wait strategy is needed
+ // at this point to register several potential transports so that
+ // when one succeeds the rest are cancelled or closed.
+
+ return this->make_parallel_connection (r,*desc,timeout);
+}
TAO_Transport*
TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
@@ -280,8 +358,8 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
if (TAO_debug_level > 4)
ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t) - Transport_Connector::connect, "
- "opening Transport[%d] in TAO_CLIENT_ROLE\n",
+ ACE_TEXT("(%P|%t) Transport_Connector::connect, ")
+ ACE_TEXT("opening Transport[%d] in TAO_CLIENT_ROLE\n"),
t->id ()));
// Call post connect hook. If the post_connect_hook () returns
@@ -315,10 +393,13 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
"TAO_UNSPECIFIED_ROLE" ));
}
- // If connected return..
+ // If connected return.
if (base_transport->is_connected ())
return base_transport;
+ // It it possible to get a transport from the cache that is not
+ // connected? If not, then the following code is bogus. We cannot
+ // wait for a connection to complete on a transport in the cache.
if (!this->wait_for_connection_completion (r,
base_transport,
timeout))
@@ -432,10 +513,100 @@ TAO_Connector::wait_for_connection_completion (
}
}
+ // Connection not ready yet but we can use this transport, if
+ // we need a connected one we will block later to make sure
+ // it is connected
+ return true;
+}
+
+bool
+TAO_Connector::wait_for_connection_completion (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport *&the_winner,
+ TAO_Transport **transport,
+ unsigned int count,
+ TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *timeout)
+{
+ if (TAO_debug_level > 2)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT("(%P|%t) Transport_Connector::")
+ ACE_TEXT("wait_for_connection_completion, ")
+ ACE_TEXT("waiting for connection completion on ")
+ ACE_TEXT("%d transports, ["),
+ count));
+ for (unsigned int i = 0; i < count; i++)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT("%d%s"),transport[i]->id(),
+ (i < (count -1) ? ", " : "]\n")));
+ }
+
+ // If we don't need to block for a transport just set the timeout to
+ // be zero.
+ ACE_Time_Value tmp_zero (ACE_Time_Value::zero);
+ if (!r->blocked_connect ())
+ {
+ timeout = &tmp_zero;
+ }
+
+ int result = this->active_connect_strategy_->wait (mev,timeout);
+ the_winner = 0;
+
+ if (result != -1)
+ {
+ the_winner = mev->winner()->transport();
+ if (TAO_debug_level > 2)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT("(%P|%t) Transport_Connector::")
+ ACE_TEXT("wait_for_connection_completion, ")
+ ACE_TEXT("transport [%d]\n"),
+ the_winner->id ()));
+ }
+ else if (errno == ETIME)
+ {
+ // this is the most difficult case. In this situation, there is no
+ // nominated by the Multi_Event. The best we can do is pick one of
+ // the pending connections.
+ // Of course, this shouldn't happen in any case, since the wait
+ // strategy is called with a timeout value of 0.
+ for (unsigned int i = 0; i < count; i++)
+ if (!transport[i]->connection_handler()->is_closed())
+ {
+ the_winner = transport[i];
+ break;
+ }
+ }
+
+ // It is possible that we have more than one connection that happened
+ // to complete, or that none completed. Therefore we need to traverse
+ // the list and ensure that all of the losers are closed.
+ for (unsigned int i = 0; i < count; i++)
+ {
+ if (transport[i] != the_winner)
+ this->check_connection_closure (transport[i]->connection_handler());
+ // since we are doing this on may connections, the result isn't
+ // particularly important.
+ }
+
+ // In case of errors.
+ if (the_winner == 0)
+ {
+ // Report that making the connection failed, don't print errno
+ // because we touched the reactor and errno could be changed
+ if (TAO_debug_level > 2)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) Transport_Connector::")
+ ACE_TEXT ("wait_for_connection_completion, failed\n")
+ ));
+
+ return false;
+ }
+
// Fix for a subtle problem. What happens if we are supposed to do
// blocked connect but the transport is NOT connected? Force close
// the connections
- if (r->blocked_connect () && !transport->is_connected ())
+ if (r->blocked_connect () && !the_winner->is_connected ())
{
if (TAO_debug_level > 2)
ACE_DEBUG ((LM_DEBUG,
@@ -446,8 +617,8 @@ TAO_Connector::wait_for_connection_completion (
// Forget the return value. We are busted anyway. Try our best
// here.
- (void) this->cancel_svc_handler (transport->connection_handler ());
- transport = 0;
+ (void) this->cancel_svc_handler (the_winner->connection_handler ());
+ the_winner = 0;
return false;
}
diff --git a/TAO/tao/Transport_Connector.h b/TAO/tao/Transport_Connector.h
index e29d0b251b3..f457ee5ec9a 100644
--- a/TAO/tao/Transport_Connector.h
+++ b/TAO/tao/Transport_Connector.h
@@ -41,6 +41,7 @@ class TAO_ORB_Core;
class TAO_Connect_Strategy;
class TAO_Transport;
class TAO_Connection_Handler;
+class TAO_LF_Multi_Event;
namespace TAO
{
@@ -121,6 +122,14 @@ public:
ACE_Time_Value *timeout
ACE_ENV_ARG_DECL);
+ /// A variation on connect that will try simultanious connections
+ /// on all endpoints listed in the desc.
+ virtual TAO_Transport* parallel_connect (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *timeout
+ ACE_ENV_ARG_DECL);
+
/// Create a profile for this protocol and initialize it based on the
/// encapsulation in @a cdr
virtual TAO_Profile *create_profile (
@@ -137,6 +146,10 @@ public:
//@@ TAO_CONNECTOR_SPL_PUBLIC_METHODS_ADD_HOOK
protected:
+ /// A flag indicating the actual connector supports parallel connection
+ /// attempts. The base implementation alwayse returns 0. Override to return
+ /// non-zero if parallel connection attempts may be tried.
+ virtual int supports_parallel_connects (void) const;
/// Create a profile with a given endpoint.
virtual TAO_Profile *make_profile (ACE_ENV_SINGLE_ARG_DECL) = 0;
@@ -151,6 +164,13 @@ protected:
TAO_Transport_Descriptor_Interface &desc,
ACE_Time_Value *timeout) = 0;
+ /// Make a connection using - not a pure virtual since not all
+ /// protocols support this.
+ virtual TAO_Transport* make_parallel_connection (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface &desc,
+ ACE_Time_Value *timeout);
+
/// Cancel the passed cvs handler from the connector
virtual int cancel_svc_handler (
TAO_Connection_Handler *svc_handler) = 0;
@@ -175,6 +195,17 @@ protected:
TAO_Transport *&transport,
ACE_Time_Value *timeout);
+ /// In the case of a parallel connection attempt, we take an array of
+ /// transports, and wait on any of them. When the first one completes,
+ /// the rest are closed.
+ virtual bool wait_for_connection_completion(
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport *&the_winner,
+ TAO_Transport **transport,
+ unsigned int count,
+ TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *timeout);
+
/// Set the ORB Core pointer
void orb_core (TAO_ORB_Core *orb_core);
diff --git a/TAO/tao/Transport_Descriptor_Interface.cpp b/TAO/tao/Transport_Descriptor_Interface.cpp
index a58af5ac064..9db80555cf8 100644
--- a/TAO/tao/Transport_Descriptor_Interface.cpp
+++ b/TAO/tao/Transport_Descriptor_Interface.cpp
@@ -15,7 +15,7 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_Transport_Descriptor_Interface::~TAO_Transport_Descriptor_Interface (void)
{
- if (this->endpoint_from_heap_)
+ if (this->release_)
{
delete this->endpoint_;
}
diff --git a/TAO/tao/Transport_Descriptor_Interface.h b/TAO/tao/Transport_Descriptor_Interface.h
index 0934238d072..7cc891fecff 100644
--- a/TAO/tao/Transport_Descriptor_Interface.h
+++ b/TAO/tao/Transport_Descriptor_Interface.h
@@ -73,7 +73,7 @@ protected:
/// Constructor
TAO_Transport_Descriptor_Interface (TAO_Endpoint *endpoint,
- CORBA::Boolean flag = 0);
+ CORBA::Boolean take_ownership = 0);
/// The base property of the connection ie. the peer's endpoint
TAO_Endpoint *endpoint_;
@@ -83,7 +83,7 @@ protected:
/// Is the endpoint allocated on the heap? If so, we will have to
/// delete it when we destruct ourselves.
- CORBA::Boolean endpoint_from_heap_;
+ CORBA::Boolean release_;
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Transport_Descriptor_Interface.inl b/TAO/tao/Transport_Descriptor_Interface.inl
index 6d1bbcb6d56..4e667f946a9 100644
--- a/TAO/tao/Transport_Descriptor_Interface.inl
+++ b/TAO/tao/Transport_Descriptor_Interface.inl
@@ -7,10 +7,10 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
ACE_INLINE
TAO_Transport_Descriptor_Interface::TAO_Transport_Descriptor_Interface (
TAO_Endpoint *endpoint,
- CORBA::Boolean flag)
+ CORBA::Boolean take_ownership)
: endpoint_ (endpoint),
bidir_flag_ (false),
- endpoint_from_heap_ (flag)
+ release_ (take_ownership)
{
}
@@ -18,7 +18,7 @@ ACE_INLINE
TAO_Transport_Descriptor_Interface::TAO_Transport_Descriptor_Interface (void)
: endpoint_ (0),
bidir_flag_ (false),
- endpoint_from_heap_ (false)
+ release_ (false)
{
}
diff --git a/TAO/tao/Unbounded_Sequence_CDR_T.h b/TAO/tao/Unbounded_Sequence_CDR_T.h
index 5c5d2cc982e..d942e07e9f3 100644
--- a/TAO/tao/Unbounded_Sequence_CDR_T.h
+++ b/TAO/tao/Unbounded_Sequence_CDR_T.h
@@ -12,6 +12,7 @@
*/
#include "tao/orbconf.h"
+#include "tao/SystemException.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -363,6 +364,8 @@ namespace TAO {
namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Short> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -372,6 +375,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Long> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -381,6 +386,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::ULong> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -390,6 +397,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::UShort> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -400,6 +409,8 @@ namespace TAO {
#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Octet> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -412,6 +423,8 @@ namespace TAO {
#else
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Octet> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -422,6 +435,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Char> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -432,6 +447,8 @@ namespace TAO {
# if defined (ACE_HAS_WCHAR) || defined (ACE_HAS_XPG4_MULTIBYTE_CHAR)
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::WChar> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -442,6 +459,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Float> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -451,6 +470,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Double> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -460,6 +481,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::ULongLong> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -469,6 +492,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::LongDouble> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -478,6 +503,8 @@ namespace TAO {
template <typename stream>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <CORBA::Boolean> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -487,6 +514,8 @@ namespace TAO {
template <typename stream, typename value_t>
bool marshal_sequence(stream & strm, const TAO::unbounded_value_sequence <value_t> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -501,6 +530,8 @@ namespace TAO {
template <typename stream, typename charT>
bool marshal_sequence(stream & strm, const TAO::details::unbounded_basic_string_sequence <charT> & source) {
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
@@ -516,6 +547,8 @@ namespace TAO {
template <typename stream, typename object_t, typename object_t_var>
bool marshal_sequence(stream & strm, const TAO::unbounded_object_reference_sequence<object_t, object_t_var> & source) {
typedef typename TAO::unbounded_object_reference_sequence<object_t, object_t_var>::object_type objec_t;
+ if (0 == &source)
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM(0, CORBA::COMPLETED_MAYBE), false);
::CORBA::ULong const length = source.length ();
if (!(strm << length)) {
return false;
diff --git a/TAO/tao/Valuetype/AbstractBase.cpp b/TAO/tao/Valuetype/AbstractBase.cpp
index a28c7ae4ef7..8fdaae3432a 100644
--- a/TAO/tao/Valuetype/AbstractBase.cpp
+++ b/TAO/tao/Valuetype/AbstractBase.cpp
@@ -400,6 +400,12 @@ CORBA::AbstractBase::_tao_unmarshal_v (TAO_InputCDR &)
return false;
}
+CORBA::Boolean
+CORBA::AbstractBase::_tao_match_formal_type (ptrdiff_t ) const
+{
+ return 0;
+}
+
CORBA::ValueBase *
CORBA::AbstractBase::_tao_to_value (void)
{
diff --git a/TAO/tao/Valuetype/AbstractBase.h b/TAO/tao/Valuetype/AbstractBase.h
index cc00f37a969..339d2918d8f 100644
--- a/TAO/tao/Valuetype/AbstractBase.h
+++ b/TAO/tao/Valuetype/AbstractBase.h
@@ -91,6 +91,7 @@ namespace CORBA
virtual const char* _tao_obv_repository_id (void) const;
virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &strm) const;
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &strm);
+ virtual CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const;
/// Memmory management operations
virtual void _add_ref (void);
diff --git a/TAO/tao/Valuetype/StringValueC.cpp b/TAO/tao/Valuetype/StringValueC.cpp
index 836192bc71a..848cf644b2e 100644
--- a/TAO/tao/Valuetype/StringValueC.cpp
+++ b/TAO/tao/Valuetype/StringValueC.cpp
@@ -112,6 +112,12 @@ CORBA::StringValue::_tao_obv_repository_id (void) const
return this->_tao_obv_static_repository_id ();
}
+void
+CORBA::StringValue::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
CORBA::Boolean
CORBA::StringValue::_tao_unmarshal (
TAO_InputCDR &strm,
@@ -195,6 +201,12 @@ CORBA::WStringValue::_tao_obv_repository_id (void) const
return this->_tao_obv_static_repository_id ();
}
+void
+CORBA::WStringValue::_tao_obv_truncatable_repo_ids (Repository_Id_List& ids) const
+{
+ ids.push_back (this->_tao_obv_static_repository_id ());
+}
+
CORBA::Boolean
CORBA::WStringValue::_tao_unmarshal (
TAO_InputCDR &strm,
@@ -353,7 +365,7 @@ operator>>= (
CORBA::Boolean
operator<< (
TAO_OutputCDR &strm,
- const CORBA::StringValue *_tao_valuebox
+ CORBA::StringValue *_tao_valuebox
)
{
return
@@ -381,7 +393,7 @@ operator>> (
CORBA::Boolean
operator<< (
TAO_OutputCDR &strm,
- const CORBA::WStringValue *_tao_valuebox
+ CORBA::WStringValue *_tao_valuebox
)
{
return
diff --git a/TAO/tao/Valuetype/StringValueC.h b/TAO/tao/Valuetype/StringValueC.h
index a0b9b69b3a8..fa8d1e68cab 100644
--- a/TAO/tao/Valuetype/StringValueC.h
+++ b/TAO/tao/Valuetype/StringValueC.h
@@ -70,49 +70,50 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
namespace CORBA
{
-
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:52
#if !defined (_CORBA_STRINGVALUE_CH_)
#define _CORBA_STRINGVALUE_CH_
-
+
class StringValue;
-
+
typedef
TAO_Value_Var_T<
StringValue
>
StringValue_var;
-
+
typedef
TAO_Value_Out_T<
StringValue
>
StringValue_out;
-
+
class TAO_Valuetype_Export StringValue
: public virtual CORBA::DefaultValueRefCountBase
{
public:
-
+
static StringValue* _downcast (CORBA::ValueBase *);
CORBA::ValueBase * _copy_value (void);
-
+
virtual const char* _tao_obv_repository_id (void) const;
-
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const;
+
static const char* _tao_obv_static_repository_id (void);
-
+
static CORBA::Boolean _tao_unmarshal (
TAO_InputCDR &,
StringValue *&
);
-
-
-
+
+
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:403
-
+
// constructors
StringValue (void);
StringValue (CORBA::Char * val);
@@ -121,95 +122,97 @@ namespace CORBA
StringValue (const StringValue& val);
// assignment operators
StringValue& operator= (CORBA::Char * val);
-
+
StringValue& operator= (const CORBA::Char * val);
-
+
StringValue& operator= (const CORBA::String_var& var);
-
+
// accessor
const CORBA::Char * _value (void) const;
-
+
// modifiers
void _value (CORBA::Char * val);
void _value (const CORBA::Char * val);
void _value (const CORBA::String_var& var);
-
+
// access to the boxed value for method signatures
const CORBA::Char * _boxed_in (void) const;
CORBA::Char *& _boxed_inout (void);
CORBA::Char *& _boxed_out (void);
// allows access and modification using a slot.
char & operator[] (CORBA::ULong slot);
-
+
// allows only accessing thru a slot.
char operator[] (CORBA::ULong slot) const;
-
+
private:
CORBA::String_var _pd_value;
-
-
+
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:115
-
+
protected:
virtual ~StringValue (void);
virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &) const;
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &);
-
+ virtual CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const;
+
private:
void operator= (const StringValue & val);
-
+
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_typecode/typecode_decl.cpp:44
-
+
extern TAO_Valuetype_Export ::CORBA::TypeCode_ptr const _tc_StringValue;
-
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:52
#if !defined (_CORBA_WSTRINGVALUE_CH_)
#define _CORBA_WSTRINGVALUE_CH_
-
+
class WStringValue;
-
+
typedef
TAO_Value_Var_T<
WStringValue
>
WStringValue_var;
-
+
typedef
TAO_Value_Out_T<
WStringValue
>
WStringValue_out;
-
+
class TAO_Valuetype_Export WStringValue
: public virtual CORBA::DefaultValueRefCountBase
{
public:
-
+
static WStringValue* _downcast (CORBA::ValueBase *);
CORBA::ValueBase * _copy_value (void);
-
+
virtual const char* _tao_obv_repository_id (void) const;
-
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const;
+
static const char* _tao_obv_static_repository_id (void);
-
+
static CORBA::Boolean _tao_unmarshal (
TAO_InputCDR &,
WStringValue *&
);
-
-
-
+
+
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:403
-
+
// constructors
WStringValue (void);
WStringValue (CORBA::WChar * val);
@@ -218,51 +221,52 @@ namespace CORBA
WStringValue (const WStringValue& val);
// assignment operators
WStringValue& operator= (CORBA::WChar * val);
-
+
WStringValue& operator= (const CORBA::WChar * val);
-
+
WStringValue& operator= (const CORBA::WString_var& var);
-
+
// accessor
const CORBA::WChar * _value (void) const;
-
+
// modifiers
void _value (CORBA::WChar * val);
void _value (const CORBA::WChar * val);
void _value (const CORBA::WString_var& var);
-
+
// access to the boxed value for method signatures
const CORBA::WChar * _boxed_in (void) const;
CORBA::WChar *& _boxed_inout (void);
CORBA::WChar *& _boxed_out (void);
// allows access and modification using a slot.
CORBA::WChar & operator[] (CORBA::ULong slot);
-
+
// allows only accessing thru a slot.
CORBA::WChar operator[] (CORBA::ULong slot) const;
-
+
private:
CORBA::WString_var _pd_value;
-
-
+
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ch.cpp:115
-
+
protected:
virtual ~WStringValue (void);
virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &) const;
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &);
-
+ virtual CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const;
+
private:
void operator= (const WStringValue & val);
-
+
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_typecode/typecode_decl.cpp:44
-
+
extern TAO_Valuetype_Export ::CORBA::TypeCode_ptr const _tc_WStringValue;
// TAO_IDL - Generated from
@@ -324,5 +328,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
#endif /* ifndef */
-
-
diff --git a/TAO/tao/Valuetype/StringValueC.inl b/TAO/tao/Valuetype/StringValueC.inl
index 04fc7a36098..a7b1df82545 100644
--- a/TAO/tao/Valuetype/StringValueC.inl
+++ b/TAO/tao/Valuetype/StringValueC.inl
@@ -142,8 +142,6 @@ CORBA::StringValue::_tao_marshal_v (TAO_OutputCDR & strm) const
return (strm << this->_pd_value);
}
-
-
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ci.cpp:60
ACE_INLINE const char*
@@ -158,7 +156,12 @@ CORBA::StringValue::_tao_unmarshal_v (TAO_InputCDR & )
return 1;
}
-
+ACE_INLINE CORBA::Boolean
+CORBA::StringValue::_tao_match_formal_type (ptrdiff_t formal_type_id) const
+{
+ return formal_type_id ==
+ reinterpret_cast<ptrdiff_t> (&CORBA::StringValue::_downcast);
+}
// TAO_IDL - Generated from
// c:\projects\ace_cvs\ace_wrappers\tao\tao_idl\be\be_visitor_valuebox/valuebox_ci.cpp:332
@@ -290,5 +293,11 @@ CORBA::WStringValue::_tao_unmarshal_v (TAO_InputCDR & )
return 1;
}
+ACE_INLINE CORBA::Boolean
+CORBA::WStringValue::_tao_match_formal_type (ptrdiff_t formal_type_id) const
+{
+ return formal_type_id ==
+ reinterpret_cast<ptrdiff_t> (&CORBA::WStringValue::_downcast);
+}
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Valuetype/ValueBase.cpp b/TAO/tao/Valuetype/ValueBase.cpp
index d7c325203d8..fbcd805a704 100644
--- a/TAO/tao/Valuetype/ValueBase.cpp
+++ b/TAO/tao/Valuetype/ValueBase.cpp
@@ -13,6 +13,7 @@
#include "tao/ORB_Core.h"
#include "tao/debug.h"
#include "ace/OS_NS_string.h"
+#include "ace/CORBA_macros.h"
#if !defined (__ACE_INLINE__)
# include "tao/Valuetype/ValueBase.inl"
@@ -48,11 +49,25 @@ CORBA::remove_ref (CORBA::ValueBase *val)
// ***********************************************************************
+TAO_ChunkInfo::TAO_ChunkInfo(CORBA::Boolean do_chunking,
+ CORBA::Long init_level)
+ : chunking_(do_chunking),
+ value_nesting_level_(init_level),
+ chunk_size_pos_ (0),
+ length_to_chunk_octets_pos_ (0),
+ chunk_octets_end_pos_ (0)
+{
+}
+
CORBA::ValueBase::ValueBase (void)
+ : is_truncatable_(0),
+ chunking_(0)
{
}
-CORBA::ValueBase::ValueBase (const ValueBase&)
+CORBA::ValueBase::ValueBase (const ValueBase& val)
+ : is_truncatable_(val.is_truncatable_),
+ chunking_(val.chunking_)
{
}
@@ -89,29 +104,17 @@ CORBA::ValueBase::_tao_any_destructor (void *x)
// (see CORBA 2.3 GIOP 15.3.4)
-CORBA::Boolean
-CORBA::ValueBase::_tao_marshal (TAO_OutputCDR &strm,
- const CORBA::ValueBase *this_,
- ptrdiff_t /* formal_type_id */)
-{
- CORBA::Boolean retval = true;
- // %! yet much to do ... look for +++ !
+// %! yet much to do ... look for +++ !
+
// 1. Is 'this' yet marshalled ? (->1a)
// If not then mark 'this' as marshalled. (->2) +++
// Or is it null ? (write null_ref and return ok)
// 1a. Put indirection and return successfull.
- if (this_ == 0)
- {
- retval = strm.write_ulong (0);
- // write TAO_OBV_GIOP_Flags::Null_ref
- return retval;
- }
-
// 2. if (chunking) and we are in a chunk (look in strm),
// end the chunk by writing its length at its start.
- // This is the responsibility of the CDR stream. +++
+ // This is the responsibility of the CDR stream.
// But if nothing is writtern in this chunk yet,
// we want to overwrite the place of the dummy blocksize-tag
// with our <value-tag>.
@@ -120,41 +123,33 @@ CORBA::ValueBase::_tao_marshal (TAO_OutputCDR &strm,
// 3. Build <value-tag>, which states if chunking is used
// and if type information ((list of) repository id(s))
// is provided. The latter is necessary if the formal_type_id
- // is unequal the 'true derived' type of this object. +++
-
- CORBA::ULong value_tag = TAO_OBV_GIOP_Flags::Value_tag_base
- | TAO_OBV_GIOP_Flags::Type_info_single;
-
- retval = strm.write_ulong (value_tag);
-
- if (! retval)
- {
- return retval;
- }
+ // is unequal the 'true derived' type of this object.
// 4. Marshal type information.
- retval = strm.write_string (this_->_tao_obv_repository_id ());
-
- if (! retval)
- {
- return retval;
- }
-
- // 5. if (chunking) let room for a blocksize-tag. (i.e. write ULong)
+ // 5. if (chunking) let room for a blocksize-tag. (i.e. write Long)
// 6. Now marshal state members. (%! Problem when state is empty
// and chunked encoding is used.)
- retval = this_->_tao_marshal_v (strm);
-
// 7. if (chunking) let strm overwrite the last blocksize tag
- // with its concrete value. +++
+ // with its concrete value.
+
// 8. if (chunking) write an end tag, or (optimization) let the CDR
// care for collecting all end tags of nested values (e.g. linked
- // list), so that only one end tag at all must be written. +++
+ // list), so that only one end tag at all must be written.
- return retval;
+CORBA::Boolean
+CORBA::ValueBase::_tao_marshal (TAO_OutputCDR &strm,
+ const CORBA::ValueBase *this_,
+ ptrdiff_t formal_type_id)
+{
+ if ( ! write_special_value (strm, this_))
+ {
+ return write_value (strm, this_, formal_type_id);
+ }
+
+ return true;
}
@@ -175,10 +170,8 @@ CORBA::ValueBase::_tao_unmarshal (TAO_InputCDR &strm,
// new_object->_tao_unmarshal_v ()
// new_object->_tao_unmarshal_post ()
- CORBA::ValueFactory_var factory;
CORBA::Boolean retval =
CORBA::ValueBase::_tao_unmarshal_pre (strm,
- factory.out (),
new_object,
0);
@@ -187,22 +180,11 @@ CORBA::ValueBase::_tao_unmarshal (TAO_InputCDR &strm,
return false;
}
- if (factory.in () != 0)
- {
- new_object = factory->create_for_unmarshal ();
-
- if (new_object == 0)
- {
- return false; // %! except.?
- }
-
- retval = new_object->_tao_unmarshal_v (strm);
-
- if (retval == 0)
+ if (new_object != 0)
{
+ if (! new_object->_tao_unmarshal_v (strm))
return false;
}
- }
// Now base must be null or point to the unmarshaled object.
// Align the pointer to the right subobject.
@@ -213,13 +195,11 @@ CORBA::ValueBase::_tao_unmarshal (TAO_InputCDR &strm,
CORBA::Boolean
CORBA::ValueBase::_tao_unmarshal_pre (TAO_InputCDR &strm,
- CORBA::ValueFactory &factory,
CORBA::ValueBase *&valuetype,
const char * const repo_id)
-{ // %! dont leak on error case !
- // %! postconditions
- CORBA::Boolean retval = true;
- factory = 0;
+{
+ CORBA::ValueFactory factory = 0;
+
// %! yet much to do ... look for +++ !
// 1. Get the <value-tag> (else it may be <indirection-tag> or <null-ref>).
@@ -230,32 +210,11 @@ CORBA::ValueBase::_tao_unmarshal_pre (TAO_InputCDR &strm,
// type mismatch gets by undetected, if the CDR stream fakes.
// So the type should be checked ... +++
- CORBA::ULong value_tag;
-
- if (!strm.read_ulong (value_tag))
- {
- return false;
- }
-
- if (TAO_OBV_GIOP_Flags::is_null_ref (value_tag))
- {
- valuetype = 0;
- return true;
- // ok, null reference unmarshaled
- }
// 2. Now at this point it must be a <value-tag> (error else).
// if (chunking) check that any last chunk ends with matching
// size. If not raise marshal exception.
// Increase the nesting level of valuetypes.
- if (!TAO_OBV_GIOP_Flags::is_value_tag (value_tag))
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("!CORBA::ValueBase::_tao_unmarshal_pre ")
- ACE_TEXT ("not value_tag\n")));
- return false;
- }
-
// 3. if (chunking) read and record the blocksize-tag.
// 4. Unmarshal type information and lookup factory.
@@ -263,102 +222,110 @@ CORBA::ValueBase::_tao_unmarshal_pre (TAO_InputCDR &strm,
// from the <value-tag>, then use the repository id parameter
// (it _must_ be right).
- TAO_ORB_Core *orb_core = strm.orb_core ();
+ CORBA::Long valuetag;
+ Repository_Id_List ids;
- if (orb_core == 0)
- {
- orb_core = TAO_ORB_Core_instance ();
+ if (! strm.read_long(valuetag))
+ return false;
- if (TAO_debug_level > 0)
+ if (TAO_OBV_GIOP_Flags::is_indirection_tag (valuetag))
{
- ACE_DEBUG ((LM_WARNING,
- "TAO (%P|%t) WARNING: extracting valuetype using "
- "default ORB_Core\n"));
- }
+ //@@TODO: read indirection value.
+ if (TAO_debug_level > 0)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO does not currently support valuetype indirecton\n")));
+ return false;
}
-
- if (TAO_OBV_GIOP_Flags::has_no_type_info (value_tag))
+ else if (TAO_OBV_GIOP_Flags::is_null_ref (valuetag))
+ {
+ // null reference is unmarshalled.
+ valuetype = 0;
+ return true;
+ }
+ else if (TAO_OBV_GIOP_Flags::has_single_type_info (valuetag))
+ {
+ ACE_CString id;
+ if (! strm.read_string(id))
+ return false;
+ ids.push_back (id);
+ }
+ else if (TAO_OBV_GIOP_Flags::has_list_type_info (valuetag))
{
- factory = orb_core->orb ()->lookup_value_factory (repo_id);
+ if (! read_repository_ids(strm, ids))
+ return false;
+ }
+ else if (TAO_OBV_GIOP_Flags::has_no_type_info (valuetag))
+ {
+ ids.push_back (repo_id);
}
else
{
- CORBA::String_var repo_id_stream;
-
- CORBA::ULong length = 0;
+ if (TAO_debug_level > 0)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) unknown value tag: %x\n"), valuetag));
+ return false;
+ }
- if (!strm.read_ulong (length))
- {
- return false;
- }
+ TAO_ORB_Core *orb_core = strm.orb_core ();
- // 'length' may not be the repo id length - it could be the
- // FFFFFFF indirection marker instead
- if (TAO_OBV_GIOP_Flags::is_indirection_tag (length))
- {
- CORBA::Long offset;
+ if (orb_core == 0)
+ {
+ orb_core = TAO_ORB_Core_instance ();
- // Read the negative byte offset
- if (!strm.read_long (offset) || offset >= 0)
+ if (TAO_debug_level > 0)
{
- return false;
+ ACE_DEBUG ((LM_WARNING,
+ "TAO (%P|%t) WARNING: extracting valuetype using "
+ "default ORB_Core\n"));
}
+ }
- // Cribbed from tc_demarshal_indirection in Typecode_CDR_Extraction.cpp
- TAO_InputCDR indir_stream (strm.rd_ptr () + offset - sizeof (CORBA::Long),
- (-offset) + sizeof (CORBA::Long),
- strm.byte_order ());
-
- if (!indir_stream.good_bit ())
- {
- return false;
- }
+ CORBA::Boolean require_truncation = false;
+ CORBA::Boolean chunking = TAO_OBV_GIOP_Flags::is_chunked (valuetag);
- indir_stream.read_string(repo_id_stream.inout ());
- }
- else
+ CORBA::ULong num_ids = ids.size ();
+ // Find the registered factory for this unmarshalling valuetype. If any
+ // factory for the valuetype in its truncatable derivation hierarchy
+ // is registered, the factory is used to create value for unmarshalling.
+ for (CORBA::ULong i = 0; i < num_ids; ++i)
+ {
+ factory = orb_core->orb ()->lookup_value_factory (ids[i].c_str ());
+ if (factory != 0)
{
- if (length > 0 && length <= strm.length ())
+ if (i != 0 && chunking)
{
- ACE_NEW_RETURN (repo_id_stream.inout (),
- ACE_CDR::Char[length],
- 0);
- if (!strm.read_char_array (repo_id_stream.inout (), length))
- {
- return false;
- }
- }
- else if (length == 0)
- {
- ACE_NEW_RETURN (repo_id_stream.inout (),
- ACE_CDR::Char[1],
- 0);
- ACE_OS::strcpy (const_cast <char *&> (repo_id_stream.inout ()), "");
- }
- else
- {
- return false;
+ require_truncation = true;
}
+ break;
}
-
- factory =
- orb_core->orb ()->lookup_value_factory (repo_id_stream.in ());
}
if (factory == 0)
{
if (TAO_debug_level > 0)
{
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("(%N:%l) ERROR: OBV factory is null for <%s>!\n"),
- repo_id));
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) OBV factory is null, id = %s\n"), repo_id));
}
ACE_THROW_RETURN (CORBA::MARSHAL (CORBA::OMGVMCID | 1,
CORBA::COMPLETED_MAYBE),
false);
+ }
+
+
+ valuetype = factory->create_for_unmarshal ();
+
+ if (require_truncation)
+ valuetype->truncation_hook ();
+
+ if (valuetype == 0)
+ {
+ return false; // %! except.?
}
- return retval;
+ valuetype->chunking_ = chunking;
+
+ return true;
}
CORBA::Boolean
@@ -388,11 +355,11 @@ CORBA::ValueBase::_tao_validate_box_type (TAO_InputCDR &strm,
const char * const repo_id_expected,
CORBA::Boolean & null_object)
{
- CORBA::ULong value_tag;
+ CORBA::Long value_tag;
// todo: no handling for indirection yet
- if (!strm.read_ulong (value_tag))
+ if (!strm.read_long (value_tag))
{
return false;
}
@@ -442,10 +409,6 @@ CORBA::ValueBase::_tao_validate_box_type (TAO_InputCDR &strm,
{ // Repository ids matched as expected
return true;
}
- else
- { // Unequal repository ids
- return false;
- }
}
if (TAO_OBV_GIOP_Flags::has_list_type_info (value_tag))
@@ -458,6 +421,354 @@ CORBA::ValueBase::_tao_validate_box_type (TAO_InputCDR &strm,
}
+// =================== methods for chunking ====================
+
+
+CORBA::Boolean
+CORBA::ValueBase::write_special_value(TAO_OutputCDR &strm,
+ const CORBA::ValueBase *value)
+{
+ // If the 'value' is null then write the null value to the stream.
+ if (value == 0)
+ {
+ return strm.write_long (TAO_OBV_GIOP_Flags::Null_tag);
+ }
+ //@@TODO: Check if the value is already written to stream. If it is then
+ // put indirection and return successful, otherwise does nothing
+ // and returns false.
+ else
+ {
+ // value not handled by this method - other code will write the value.
+ return false;
+ }
+}
+
+
+CORBA::Boolean
+CORBA::ValueBase::write_value(TAO_OutputCDR &strm,
+ const CORBA::ValueBase * value,
+ ptrdiff_t formal_type_id)
+{
+ if (! value->write_value_header (strm, formal_type_id))
+ return false;
+
+ if (! value->_tao_marshal_v (strm))
+ return false;
+
+ return true;
+}
+
+
+CORBA::Boolean
+CORBA::ValueBase::write_value_header(TAO_OutputCDR &strm,
+ ptrdiff_t formal_type_id) const
+{
+#if defined (TAO_HAS_OPTIMIMIZED_VALUETYPE_MARSHALING)
+ // this case allows TAO to avoid marshaling the typeID for values
+ // where the actual type matches the formal type (ie not a derived
+ // type).
+ //
+ // I would much prefer that there be a way to have a -ORB option to
+ // control this behavior, but for now there is no reference to the
+ // ORB Core available during marshaling (there is during unmarshaling)
+ // and no other way to communicate such configuration values.
+
+ CORBA::Boolean is_formal_type =
+ this->_tao_match_formal_type (formal_type_id);
+#else
+ // Unfortunately, all versions of tao prior to TAO 1.5.2 did not
+ // support unmarshaling of valuetypes that did not explicitly
+ // marshal the type id. At least it is benign to always encode the
+ // typecode value, even if it can be a little verbose.
+ CORBA::Boolean is_formal_type =
+ false;
+ ACE_UNUSED_ARG (formal_type_id);
+#endif /* TAO_HAS_OPTIMIMIZED_VALUETYPE_MARSHALING */
+
+ // Get the list of repository ids for this valuetype.
+ Repository_Id_List repository_ids;
+ this->_tao_obv_truncatable_repo_ids (repository_ids);
+ CORBA::Long num_ids = static_cast <CORBA::Long> (repository_ids.size ());
+
+ // Build <value-tag>, which states if chunking is used
+ // and if type information ((list of) repository id(s))
+ // is provided. The latter is necessary if the formal_type_id
+ // is unequal the 'true derived' type of this object.
+ CORBA::Long valuetag = TAO_OBV_GIOP_Flags::Value_tag_base;
+
+ // Truncatable value type, must use chunking and list all repository
+ // ids in its "truncatable" derivation hierarchy.
+ if (this->is_truncatable_ || this->chunking_)
+ valuetag |= TAO_OBV_GIOP_Flags::Chunking_tag_sigbits;
+
+ if (!is_formal_type || this->is_truncatable_)
+ valuetag |= TAO_OBV_GIOP_Flags::Type_info_single;
+
+ if (num_ids > 1)
+ valuetag |= TAO_OBV_GIOP_Flags::Type_info_list;
+
+ // Write <value-tag>.
+ if (! strm.write_long (valuetag))
+ {
+ return false;
+ }
+
+ if (num_ids > 1 && !strm.write_long (num_ids))
+ return false;
+
+ if (this->is_truncatable_ ||
+ !is_formal_type ||
+ num_ids > 1)
+ {
+ // Marshal type information.
+ for( CORBA::Long i = 0; i < num_ids; ++i )
+ {
+ if (! strm.write_string (repository_ids[i]))
+ return false;
+ }
+ }
+
+ return true;
+}
+
+// this method is called by the IDL generated _tao_marshal_state() method.
+CORBA::Boolean
+TAO_ChunkInfo::start_chunk(TAO_OutputCDR &strm)
+{
+ // If chunking, reserve the space for the chunk size of next chunk
+ // and increase the nesting level.
+ if (this->chunking_)
+ {
+ if (! reserve_chunk_size(strm))
+ return false;
+ this->value_nesting_level_ ++;
+ }
+ return true;
+}
+
+// this method is called by the IDL generated _tao_marshal_state() method.
+CORBA::Boolean
+TAO_ChunkInfo::end_chunk(TAO_OutputCDR &strm)
+{
+ if (this->chunking_)
+ {
+ // Write actual chunk size at the reserved chunk size place.
+ if (! this->write_previous_chunk_size(strm))
+ return false;
+
+ // Write an end tag which is negation of value_nesting_level_.
+ if (! strm.write_long(- this->value_nesting_level_))
+ return false;
+
+ // -- this->value_nesting_level_;
+ if ( -- this->value_nesting_level_ == 0 )
+ {
+ // ending chunk for outermost value
+ this->chunking_ = false;
+ }
+ }
+ return true;
+}
+
+
+CORBA::Boolean
+TAO_ChunkInfo::write_previous_chunk_size(TAO_OutputCDR &strm)
+{
+ if (this->chunk_size_pos_ != 0)
+ {
+ // Calculate the chunk size.
+ CORBA::Long chunk_size = strm.total_length () - this->length_to_chunk_octets_pos_;
+
+ // This should not happen since this is called in end_chunk() and
+ // the idl generated code always have the matched start_chunk() and
+ // end_chunk() pair. There is always data written to the stream between
+ // the start_chunk() and end_chunk() calls.
+ if (chunk_size == 0)
+ return false;
+
+ // Write the actual chunk size to the reserved chunk size position
+ // in the stream.
+ if (! strm.replace (chunk_size, this->chunk_size_pos_))
+ return false;
+
+ // We finish writing the actual chunk size, now we need reset the state.
+ this->chunk_size_pos_ = 0;
+ this->length_to_chunk_octets_pos_ = 0;
+ }
+
+ return true;
+}
+
+
+CORBA::Boolean
+TAO_ChunkInfo::reserve_chunk_size(TAO_OutputCDR &strm)
+{
+ // This is called in the start_chunk().
+ // Reserve the chunk size the first time the start_chunk () is called
+ // if there are several start_chunk () called continuously without
+ // calling end_chunk (). This could happen in the _tao_marshal_state()
+ // in the most derived valuetype.
+
+ if (this->chunk_size_pos_ == 0)
+ {
+ // Align the wr_ptr before we reserve the space for chunk size.
+ strm.align_write_ptr (ACE_CDR::LONG_SIZE);
+ // Remember begin of the chunk (at chunk size position) that is needed
+ // when we write back actual chunk size to the stream.
+ this->chunk_size_pos_ = strm.current ()->wr_ptr ();
+
+ // Insert four bytes here as a place-holder, we need to go back
+ // later and write the actual size.
+ if (! strm.write_long (0))
+ return false;
+
+ // Remember length before writing chunk data. This is used to calculate
+ // the actual size of the chunk.
+ this->length_to_chunk_octets_pos_ = strm.total_length ();
+ }
+
+ return true;
+}
+
+CORBA::Boolean
+TAO_ChunkInfo::handle_chunking (TAO_InputCDR &strm)
+{
+ if (!this->chunking_)
+ return true;
+ char* the_rd_ptr = strm.start()->rd_ptr ();
+
+ //This case could happen if a handle_chunking() reads a chunk size
+ //and then calls the handle_chunking() again without reading the chunk data.
+ //The handle_chunking() called continuously without reading the chunk data
+ //only happens at the beginning of _tao_unmarshal_state() in a valuetype
+ //that has parents.
+ if (the_rd_ptr < this->chunk_octets_end_pos_)
+ {
+ this->value_nesting_level_ ++;
+ return true;
+ }
+
+ //Safty check if reading is out of range of current chunk.
+ if (this->chunk_octets_end_pos_ != 0 && the_rd_ptr > this->chunk_octets_end_pos_)
+ return false;
+
+ // Read a long value that might be an endtag, the chunk size or the value tag
+ // of the nested valuetype.
+ CORBA::Long tag;
+ if (! strm.read_long(tag))
+ return false;
+
+ if (tag < 0)
+ {
+ // tag is an end tag
+ if (-tag > this->value_nesting_level_)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%P|%t) received end tag %d > value_nesting_level %d\n"),
+ -tag, this->value_nesting_level_),
+ false);
+ }
+ this->value_nesting_level_ = - tag;
+ this->value_nesting_level_--;
+
+
+ this->chunk_octets_end_pos_ = 0;
+
+ // Continue reading so that we can read the outmost endtag. This would
+ // simplify the implementation in the derived valuetype.
+ if (this->value_nesting_level_ > 0)
+ {
+ this->handle_chunking(strm);
+ }
+ }
+ else if (tag < TAO_OBV_GIOP_Flags::Value_tag_base)
+ {
+ // Read the chunk size of another chunk.
+ this->chunk_octets_end_pos_ = strm.rd_ptr () + tag;
+ this->value_nesting_level_ ++;
+ }
+ else // (tag >= 0x7fffff00)
+ {
+ // This should not happen since the valuetag of the nested values are always
+ // unmarshalled in the ValueBase::_tao_unmarshal_pre().
+ return false;
+ }
+
+ return true;
+}
+
+
+CORBA::Boolean
+TAO_ChunkInfo::skip_chunks (TAO_InputCDR &strm)
+{
+ if (!this->chunking_)
+ return true;
+
+ // This function is called after reading data of the truncated parent and
+ // skips the remaining chunks until the outmost endtag (-1).
+ // The tag read here is suppoused to be an endtag.
+ CORBA::Long tag;
+ if (! strm.read_long(tag))
+ return false;
+
+ // end of the whole valuetype.
+ if (tag == -1)
+ return true;
+ else if (tag < 0)
+ {
+ // continue skip the chunk.
+ return this->skip_chunks (strm);
+ }
+ else if (tag < TAO_OBV_GIOP_Flags::Value_tag_base)
+ {
+ // Read the chunk size and move forward to skip the data.
+ ACE_Message_Block* current = const_cast<ACE_Message_Block*>(strm.start ());
+ current->rd_ptr (tag);
+ return this->skip_chunks (strm);
+ }
+ else
+ return false;
+}
+
+CORBA::Boolean
+CORBA::ValueBase::read_repository_ids(ACE_InputCDR& strm, Repository_Id_List& ids)
+{
+ CORBA::Long num_ids;
+ if (! strm.read_long(num_ids))
+ return false;
+
+ if (num_ids == TAO_OBV_GIOP_Flags::Indirection_tag)
+ {
+ //@@TODO: read indirection repository ids and return true.
+ return false;
+ }
+ else
+ {
+ //@@TODO: map repository id for indirection
+ for (CORBA::Long i = 0; i < num_ids; i ++)
+ {
+ ACE_CString id;
+ if (! strm.read_string(id))
+ return false;
+ ids.push_back (id);
+ }
+ }
+
+ return true;
+}
+
+
+void
+CORBA::ValueBase::truncation_hook ()
+{
+#if defined (ACE_HAS_EXCEPTIONS)
+ ACE_THROW (CORBA::INTERNAL ());
+#else
+ ACE_OS::abort ();
+#endif /* ACE_HAS_EXCEPTIONS */
+}
+
+
// ================== Typecode initializations ==================
namespace TAO
@@ -575,11 +886,11 @@ CORBA::DefaultValueRefCountBase::_tao_refcount_value (void)
CORBA::Boolean
operator<< (TAO_OutputCDR &strm,
- const CORBA::ValueBase *_tao_valuetype)
+ CORBA::ValueBase *_tao_valuetype)
{
return CORBA::ValueBase::_tao_marshal (
strm,
- const_cast<CORBA::ValueBase *> (_tao_valuetype),
+ _tao_valuetype,
reinterpret_cast<ptrdiff_t> (&CORBA::ValueBase::_downcast)
);
}
diff --git a/TAO/tao/Valuetype/ValueBase.h b/TAO/tao/Valuetype/ValueBase.h
index 55360627f05..1b1880cadc9 100644
--- a/TAO/tao/Valuetype/ValueBase.h
+++ b/TAO/tao/Valuetype/ValueBase.h
@@ -35,6 +35,7 @@
#include "ace/Thread_Mutex.h"
#include "ace/Atomic_Op.h"
#include "ace/Null_Mutex.h"
+#include "ace/Vector_T.h"
#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
@@ -43,6 +44,66 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+class TAO_Valuetype_Export TAO_ChunkInfo
+{
+public:
+ TAO_ChunkInfo(CORBA::Boolean do_chunking = 0, CORBA::Long init_level = 0);
+
+ /// Methods to support chunking.
+ /// Note: These methods are called for both chunking and non-chunking
+ /// valuetype. These methods checks the chunking_ flag. If it's
+ /// set to be false the methods return true rightaway.
+
+ /// Methods for marshalling a valuetype.
+
+ /// This is called in the _tao_marshal_state (). This method reserves
+ /// space for the chunk size of the next chunk and also increments the
+ /// nesting level. The reservasion actually occurs the first time that
+ /// the start_chunk is called if there are multiple continuous start_chunk()
+ /// calls without the close_chunk() called in between.
+ CORBA::Boolean start_chunk(TAO_OutputCDR &strm);
+
+ /// This is called in the _tao_marshal_state (). This method writes the
+ /// actual chunk size to the reserved chunk size space and writes an end
+ /// tag with the negation value of current nesting level. A start_chunk()
+ /// needs an end_chunk() to close the current chunk. It's also needed for
+ /// writing the outmost endtag to the stream.
+ CORBA::Boolean end_chunk(TAO_OutputCDR &strm);
+
+ /// Methods for unmarshalling a valuetype.
+
+ /// This is called in the _tao_unmarshal_state () to read the chunk
+ /// size or an end tag.
+ CORBA::Boolean handle_chunking (TAO_InputCDR &strm);
+ /// This is called in the _tao_unmarshal_state () to skip the rest
+ /// chunks until the outmost endtag (-1) if the value is truncated
+ /// to its truncatable parent.
+ CORBA::Boolean skip_chunks (TAO_InputCDR &strm);
+ /// This is called in end_chunk(). It writes the actual chunk size to the
+ /// reserved chunk size space.
+ CORBA::Boolean write_previous_chunk_size(TAO_OutputCDR &strm);
+ /// Reserve space for chunk size. The memory in the stream will be
+ /// overwritten after all the chunk data is written. This method
+ /// only allows the reservasion being made once if the reserved
+ /// space has not been overwritten.
+ CORBA::Boolean reserve_chunk_size(TAO_OutputCDR &strm);
+
+ /// A flag to indicate that this instance is actually involved in a chunked
+ /// or truncatable valuetype.
+ CORBA::Boolean chunking_;
+
+ /// The level of nesting valuetypes.
+ CORBA::Long value_nesting_level_;
+ /// The starting position of the size of current chunk.
+ char* chunk_size_pos_;
+ /// The length of CDR stream from the begining to the current
+ /// chunk data starting position. Used to calculate the chunk size
+ /// across multiple chained ACE_Message_Blocks.
+ size_t length_to_chunk_octets_pos_;
+ /// The end position of current chunk.
+ char* chunk_octets_end_pos_;
+};
+
namespace CORBA
{
class ValueFactoryBase;
@@ -63,8 +124,12 @@ namespace CORBA
class TAO_Valuetype_Export ValueBase
{
public:
+ friend class TAO_ChunkInfo;
+
typedef ValueBase* _ptr_type;
typedef ValueBase_var _var_type;
+ typedef ACE_Vector < ACE_CString > Repository_Id_List;
+
// reference counting
/// %! virtual CORBA::ValueBase* _copy_value (void) = 0;
@@ -79,7 +144,16 @@ namespace CORBA
static void _tao_any_destructor (void *);
/// TAO extension
- virtual const char* _tao_obv_repository_id (void) const = 0;
+
+ /// Return the repository id of this valuetype.
+ virtual const char * _tao_obv_repository_id (void) const = 0;
+
+ /// Give the list of the RepositoryIds in the valuetype "truncatable"
+ /// inheritance hierarchy. List the id of this valuetype as first
+ /// RepositoryID and go up the "truncatable" derivation hierarchy.
+ /// Note the truncatable repo ids only list the truncatable base types
+ /// to which this type is safe to truncate, not all its parents.
+ virtual void _tao_obv_truncatable_repo_ids (Repository_Id_List &) const = 0;
// TAO internal --------------------------
@@ -101,9 +175,9 @@ namespace CORBA
/// Both used internally and are called from T::_tao_unmarshal ()
static CORBA::Boolean _tao_unmarshal_pre (TAO_InputCDR &strm,
- ValueFactory &,
ValueBase *&,
const char * const repo_id);
+
CORBA::Boolean _tao_unmarshal_post (TAO_InputCDR &strm);
/// Check repository id for value box type against what is
@@ -121,11 +195,49 @@ namespace CORBA
/// called after obtaining the fresh object from create_for_unmarshal ()
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &) = 0;
+ /// Notify the truncated parent valuetype to skip the rest of the chunks
+ /// when unmarshalling a value from its derived valuetype.
+ /// This is called when the factory for the most derived valuetype (in
+ /// the repository id list) does not exist and a truncated parent factory
+ /// is registered.
+ virtual void truncation_hook ();
+
protected:
ValueBase (void);
ValueBase (const ValueBase&);
virtual ~ValueBase (void);
+ /// This flag is set to be true when the valuetype defined
+ /// in the idl has the truncatable parent.
+ CORBA::Boolean is_truncatable_;
+
+ /// This flag is set to be true when marshalling uses chunking.
+ /// According to spec, the truncatable valuetype should use chunking
+ /// and it can be used for marshalling large valuetype. In current
+ /// implementation, we just use chunking for the truncatable valuetype.
+ CORBA::Boolean chunking_;
+
+ /// Compare the supplied formal type identifier with our actual type.
+ /// This is used during marshaling of valuetypes to detect when it is
+ /// appropriate to not explicitly marshal the typecode for the value.
+ virtual CORBA::Boolean _tao_match_formal_type (ptrdiff_t ) const = 0;
+
+ private:
+ /// Write some special values such as null value or indirection value.
+ static CORBA::Boolean write_special_value(TAO_OutputCDR &strm, const CORBA::ValueBase * value);
+ /// Write whole value.
+ static CORBA::Boolean write_value(TAO_OutputCDR &strm,
+ const CORBA::ValueBase * value,
+ ptrdiff_t formal_type_id);
+
+ /// Write the header of the value which includes the valuetag, number of
+ /// repository ids and list of repository ids.
+ CORBA::Boolean write_value_header(TAO_OutputCDR &strm,
+ ptrdiff_t formal_type_id) const;
+
+ /// Read the repository ids from the CDR input stream.
+ static CORBA::Boolean read_repository_ids(ACE_InputCDR& strm, Repository_Id_List& ids);
+
private:
ValueBase & operator= (const ValueBase &);
@@ -192,25 +304,28 @@ namespace CORBA
*/
namespace TAO_OBV_GIOP_Flags
{
- const CORBA::ULong Value_tag_base = 0x7fffff00L;
- const CORBA::ULong Value_tag_sigbits = 0xffffff00L;
- const CORBA::ULong Codebase_url = 1;
- const CORBA::ULong Type_info_sigbits = 0x00000006L;
- const CORBA::ULong Type_info_none = 0;
- const CORBA::ULong Type_info_single = 2;
- const CORBA::ULong Type_info_list = 6;
-
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_null_ref (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_value_tag (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_codebase_url (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_no_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_single_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_list_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_chunked (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection_tag (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_block_size (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_end_tag (CORBA::ULong);
+ const CORBA::Long Value_tag_base = 0x7fffff00L;
+ const CORBA::Long Value_tag_sigbits = 0xffffff00L;
+ const CORBA::Long Codebase_url = 1;
+ const CORBA::Long Type_info_sigbits = 0x00000006L;
+ const CORBA::Long Type_info_none = 0;
+ const CORBA::Long Type_info_single = 2;
+ const CORBA::Long Type_info_list = 6;
+ const CORBA::Long Chunking_tag_sigbits = 0x00000008L;
+ const CORBA::Long Indirection_tag = 0x7fffffffL;
+ const CORBA::Long Null_tag = 0x00000000L;
+
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_null_ref (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_value_tag (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_codebase_url (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_no_type_info (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_single_type_info (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_list_type_info (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_chunked (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection_tag (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_block_size (CORBA::Long);
+ TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_end_tag (CORBA::Long);
}
TAO_Valuetype_Export CORBA::Boolean
diff --git a/TAO/tao/Valuetype/ValueBase.inl b/TAO/tao/Valuetype/ValueBase.inl
index 2d15b4a0d19..d51a47bab83 100644
--- a/TAO/tao/Valuetype/ValueBase.inl
+++ b/TAO/tao/Valuetype/ValueBase.inl
@@ -7,69 +7,71 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_null_ref (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::is_null_ref (CORBA::Long tag)
{
- return (tag == 0);
+ return (tag == Null_tag);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_value_tag (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::is_value_tag (CORBA::Long tag)
{
return ((tag & Value_tag_sigbits) == 0x7FFFFF00L);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags:: has_codebase_url (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags:: has_codebase_url (CORBA::Long tag)
{
return (CORBA::Boolean) (tag & Codebase_url);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::has_no_type_info (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::has_no_type_info (CORBA::Long tag)
{
return ((tag & Type_info_sigbits) == Type_info_none);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::has_single_type_info (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::has_single_type_info (CORBA::Long tag)
{
return ((tag & Type_info_sigbits) == Type_info_single);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::has_list_type_info (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::has_list_type_info (CORBA::Long tag)
{
return ((tag & Type_info_sigbits) == Type_info_list);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags:: is_chunked (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags:: is_chunked (CORBA::Long tag)
{
return (CORBA::Boolean) (tag & 8);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_indirection_tag (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::is_indirection_tag (CORBA::Long tag)
{
- return (tag == 0xFFFFFFFFL);
+ return (static_cast<unsigned>(tag) == 0xFFFFFFFFL);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_indirection (CORBA::ULong value)
+TAO_OBV_GIOP_Flags::is_indirection (CORBA::Long value)
{
- return (0x80000000L < value && value <= (0xFFFFFFFFL - 4));
+ return (0x80000000L < static_cast<unsigned>(value) &&
+ static_cast<unsigned>(value) <= (0xFFFFFFFFL - 4));
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_block_size (CORBA::ULong value)
+TAO_OBV_GIOP_Flags::is_block_size (CORBA::Long value)
{
- return (0 < value && value < 0x7FFFFF00L);
+ return (0 < static_cast<unsigned>(value) &&
+ static_cast<unsigned>(value) < 0x7FFFFF00L);
}
ACE_INLINE CORBA::Boolean
-TAO_OBV_GIOP_Flags::is_end_tag (CORBA::ULong tag)
+TAO_OBV_GIOP_Flags::is_end_tag (CORBA::Long tag)
{
- return (0x80000000L < tag);
+ return (0x80000000L < (unsigned)tag);
}
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Valuetype/Value_CORBA_methods.h b/TAO/tao/Valuetype/Value_CORBA_methods.h
index 352c981ac76..dde1c2837b7 100644
--- a/TAO/tao/Valuetype/Value_CORBA_methods.h
+++ b/TAO/tao/Valuetype/Value_CORBA_methods.h
@@ -32,6 +32,7 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
namespace CORBA
{
class ValueBase;
diff --git a/TAO/tao/default_client.cpp b/TAO/tao/default_client.cpp
index bc6d38cf6ab..6076024c440 100644
--- a/TAO/tao/default_client.cpp
+++ b/TAO/tao/default_client.cpp
@@ -331,6 +331,12 @@ TAO_Default_Client_Strategy_Factory::create_wait_strategy (TAO_Transport *transp
return ws;
}
+TAO_Client_Strategy_Factory::Connect_Strategy
+TAO_Default_Client_Strategy_Factory::connect_strategy (void) const
+{
+ return this->connect_strategy_;
+}
+
TAO_Connect_Strategy *
TAO_Default_Client_Strategy_Factory::create_connect_strategy (TAO_ORB_Core *orb_core)
{
diff --git a/TAO/tao/default_client.h b/TAO/tao/default_client.h
index db6544d166d..e1660fb2041 100644
--- a/TAO/tao/default_client.h
+++ b/TAO/tao/default_client.h
@@ -62,6 +62,7 @@ public:
virtual TAO_Connect_Strategy *create_connect_strategy (TAO_ORB_Core *);
virtual ACE_Lock *create_ft_service_retention_id_lock (void);
virtual bool use_cleanup_options (void) const;
+ virtual Connect_Strategy connect_strategy (void) const;
protected:
void report_option_value_error (const ACE_TCHAR* option_name,
@@ -97,13 +98,6 @@ private:
/// The wait-for-reply strategy.
Wait_Strategy wait_strategy_;
- enum Connect_Strategy
- {
- TAO_BLOCKED_CONNECT,
- TAO_REACTIVE_CONNECT,
- TAO_LEADER_FOLLOWER_CONNECT
- };
-
/// The connection initiation strategy.
Connect_Strategy connect_strategy_;
diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp
index 59447bdb234..0680aa55925 100644
--- a/TAO/tao/default_resource.cpp
+++ b/TAO/tao/default_resource.cpp
@@ -62,11 +62,14 @@ TAO_Default_Resource_Factory::TAO_Default_Resource_Factory (void)
, wchar_codeset_descriptor_ (0)
, resource_usage_strategy_ (TAO_Resource_Factory::TAO_EAGER)
, drop_replies_ (true)
+ , principal_(0)
{
#if TAO_USE_LAZY_RESOURCE_USAGE_STRATEGY == 1
this->resource_usage_strategy_ =
TAO_Resource_Factory::TAO_LAZY;
#endif /*TAO_USE_LAZY_RESOURCE_USAGE_STRATEGY*/
+
+
}
TAO_Default_Resource_Factory::~TAO_Default_Resource_Factory (void)
@@ -90,6 +93,8 @@ TAO_Default_Resource_Factory::~TAO_Default_Resource_Factory (void)
delete codeset_manager_;
codeset_manager_ = 0;
+
+ delete principal_;
}
int
@@ -102,7 +107,8 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
// are useless
if (this->factory_disabled_) {
ACE_DEBUG ((LM_WARNING,
- ACE_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ignored\n")
+ ACE_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ")
+ ACE_TEXT ("ignored\n")
ACE_TEXT ("Default Resource Factory is disabled\n")));
return 0;
}
@@ -171,7 +177,8 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
-1);
if (pset->insert (item) == -1)
ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("(%P|%t) Unable to add protocol factories for %s: %m\n"),
+ ACE_TEXT ("(%P|%t) Unable to add protocol factories ")
+ ACE_TEXT ("for %s: %m\n"),
argv[curarg]));
}
}
@@ -239,7 +246,8 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
// note is being written during 1.2.3 timeframe.
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) This option would be deprecated \n")
- ACE_TEXT ("(%P|%t) Please use -ORBConnectionPurgingStrategy instead \n")));
+ ACE_TEXT ("(%P|%t) Please use -ORBConnectionPurgingStrategy ")
+ ACE_TEXT ("instead \n")));
if (curarg < argc)
{
@@ -1184,6 +1192,9 @@ TAO_Default_Resource_Factory::codeset_manager(void)
""));
factory =
ACE_Dynamic_Service<TAO_Codeset_Manager_Factory_Base>::instance ("TAO_Codeset");
+
+ principal_ = new ACE_Dynamic_Service_Dependency (ACE_TEXT ("TAO_Codeset"));
+
#endif
}
if (factory == 0)
diff --git a/TAO/tao/default_resource.h b/TAO/tao/default_resource.h
index aef5e545fd7..8f022479fc5 100644
--- a/TAO/tao/default_resource.h
+++ b/TAO/tao/default_resource.h
@@ -17,6 +17,7 @@
#include /**/ "ace/pre.h"
#include "ace/Service_Config.h"
+#include "ace/Dynamic_Service_Dependency.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
@@ -257,6 +258,12 @@ private:
/// Flag to indicate whether replies should be dropped during ORB
/// shutdown.
bool drop_replies_;
+
+ // Makes a dependency on a specific dynamic service ("TAO_Codeset") explicit.
+ // It helps to keep the corresponding DLL around until the last instance
+ // is destroyed. Note that failure to delete the instances will "pin" the
+ // DLL in memory, preventing it from being unloaded on demand.
+ ACE_Dynamic_Service_Dependency *principal_;
};
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/orbconf.h b/TAO/tao/orbconf.h
index 61cf7bfb65b..b6e8ed7613b 100644
--- a/TAO/tao/orbconf.h
+++ b/TAO/tao/orbconf.h
@@ -735,7 +735,9 @@ enum TAO_Cached_Policy_Type
TAO_CACHED_POLICY_BIDIRECTIONAL_GIOP,
- TAO_CACHED_POLICY_MAX_CACHED
+ TAO_CACHED_POLICY_MAX_CACHED,
+
+ TAO_CACHED_POLICY_ENDPOINT
};
// This enum provides a mask that represent the scope at which a given
diff --git a/TAO/tao/params.cpp b/TAO/tao/params.cpp
index a06608bedb2..f4bc363777f 100644
--- a/TAO/tao/params.cpp
+++ b/TAO/tao/params.cpp
@@ -14,7 +14,6 @@ ACE_RCSID (tao,
params,
"$Id$")
-
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_ORB_Parameters::TAO_ORB_Parameters (void)
@@ -25,6 +24,7 @@ TAO_ORB_Parameters::TAO_ORB_Parameters (void)
, sock_sndbuf_size_ (ACE_DEFAULT_MAX_SOCKET_BUFSIZ)
, nodelay_ (1)
, sock_keepalive_ (0)
+ , sock_dontroute_ (0)
, cdr_memcpy_tradeoff_ (ACE_DEFAULT_CDR_MEMCPY_TRADEOFF)
, max_message_size_ (0) // Disable outgoing GIOP fragments by default
, use_lite_protocol_ (0)
@@ -37,6 +37,8 @@ TAO_ORB_Parameters::TAO_ORB_Parameters (void)
, scope_policy_ (THR_SCOPE_PROCESS)
, single_read_optimization_ (1)
, shared_profile_ (0)
+ , use_parallel_connects_ (false)
+ , parallel_connect_delay_ (0)
, pref_network_ ()
, disable_rt_collocation_resolver_ (false)
, enforce_preferred_interfaces_ (false)
diff --git a/TAO/tao/params.h b/TAO/tao/params.h
index c65f9177e91..efefb62845f 100644
--- a/TAO/tao/params.h
+++ b/TAO/tao/params.h
@@ -89,6 +89,10 @@ public:
int sock_keepalive (void);
void sock_keepalive (int);
+ /// Set/Get whether we should set SO_DONTROUTE on the socket or not.
+ int sock_dontroute (void);
+ void sock_dontroute (int);
+
/**
* Octet sequences are marshalled without doing any copies, we
* simply append a block to the CDR message block chain. When the
@@ -175,6 +179,16 @@ public:
int shared_profile (void) const;
void shared_profile (int x);
+ /// Want to use parallel connection attempts when profiles have multiple
+ /// endpoints.
+ bool use_parallel_connects(void) const;
+ void use_parallel_connects (bool x);
+
+ /// The milliseconds delay used to stagger individual connection starts
+ /// when using parallel connects.
+ unsigned long parallel_connect_delay (void) const;
+ void parallel_connect_delay (unsigned long x);
+
/// Mutators and accessors for rt_collocation_resolver
bool disable_rt_collocation_resolver (void) const;
void disable_rt_collocation_resolver (bool);
@@ -240,9 +254,12 @@ private:
/// 1 if we're using TCP_NODELAY and 0 otherwise.
int nodelay_;
- /// 1 if we're using SO_KEEPALIV and 0 otherwise (default 0).
+ /// 1 if we're using SO_KEEPALIVE and 0 otherwise (default 0).
int sock_keepalive_;
+ /// 1 if we're using SO_DONTROUTE and 0 otherwise (default 0).
+ int sock_dontroute_;
+
/// Control the strategy for copying vs. appeding octet sequences in
/// CDR streams.
int cdr_memcpy_tradeoff_;
@@ -304,6 +321,16 @@ private:
/// Shared Profile - Use the same profile for multiple endpoints
int shared_profile_;
+ /// Use Parallel Connects - Try to connect to all endpoints in a
+ /// shared profile at once, use the first to complete.
+ int use_parallel_connects_;
+
+ /// When using parallel connects, this delay is used to stagger connection
+ /// attempts. This gives a trade-off between opening more potential
+ /// connections than necessary vs increasing the potential time before
+ /// a good connection is discovered. Time is expressed in milliseconds.
+ unsigned long parallel_connect_delay_;
+
/// Preferred network interfaces as a string
ACE_CString pref_network_;
diff --git a/TAO/tao/params.i b/TAO/tao/params.i
index d900d18a967..04e3f7575ec 100644
--- a/TAO/tao/params.i
+++ b/TAO/tao/params.i
@@ -163,6 +163,18 @@ TAO_ORB_Parameters::sock_keepalive (int x)
}
ACE_INLINE int
+TAO_ORB_Parameters::sock_dontroute (void)
+{
+ return this->sock_dontroute_;
+}
+
+ACE_INLINE void
+TAO_ORB_Parameters::sock_dontroute (int x)
+{
+ this->sock_dontroute_ = x;
+}
+
+ACE_INLINE int
TAO_ORB_Parameters::ace_sched_policy (void) const
{
return this->ace_sched_policy_;
@@ -218,6 +230,30 @@ TAO_ORB_Parameters::single_read_optimization (int x)
this->single_read_optimization_ = x;
}
+ACE_INLINE bool
+TAO_ORB_Parameters::use_parallel_connects (void) const
+{
+ return this->use_parallel_connects_;
+}
+
+ACE_INLINE void
+TAO_ORB_Parameters::use_parallel_connects (bool x)
+{
+ this->use_parallel_connects_ = x;
+}
+
+ACE_INLINE unsigned long
+TAO_ORB_Parameters::parallel_connect_delay (void) const
+{
+ return this->parallel_connect_delay_;
+}
+
+ACE_INLINE void
+TAO_ORB_Parameters::parallel_connect_delay (unsigned long x)
+{
+ this->parallel_connect_delay_ = x;
+}
+
ACE_INLINE int
TAO_ORB_Parameters::shared_profile (void) const
{
diff --git a/TAO/tao/tao.mpc b/TAO/tao/tao.mpc
index 8d9939c6a09..c514e95d123 100644
--- a/TAO/tao/tao.mpc
+++ b/TAO/tao/tao.mpc
@@ -113,6 +113,7 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
LF_Follower_Auto_Adder.cpp
LF_Follower_Auto_Ptr.cpp
LF_Invocation_Event.cpp
+ LF_Multi_Event.cpp
LF_Strategy.cpp
LF_Strategy_Complete.cpp
LocalObject.cpp
@@ -235,6 +236,7 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
}
Header_Files {
+ Array_Traits_T.h
Abstract_Servant_Base.h
Acceptor_Filter.h
Acceptor_Impl.h
@@ -262,6 +264,16 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
Block_Flushing_Strategy.h
BooleanSeqC.h
BooleanSeqS.h
+ Bounded_Array_Allocation_Traits.h
+ Bounded_Array_Sequence_T.h
+ Bounded_Basic_String_Sequence_T.h
+ Bounded_Object_Reference_Sequence_T.h
+ Bounded_Reference_Allocation_Traits.h
+ Bounded_Sequence_CDR_T.h
+ Bounded_String_Sequence_T.h
+ Bounded_Value_Allocation_Traits_T.h
+ Bounded_Value_Sequence_T.h
+ Bounded_Wstring_Sequence_T.h
Buffer_Allocator_T.h
Buffering_Constraint_Policy.h
Cache_Entries.h
@@ -326,6 +338,7 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
FloatSeqC.h
FloatSeqS.h
Flushing_Strategy.h
+ Generic_Sequence_T.h
GIOPC.h
GIOP_Message_Base.h
GIOP_Message_Generator_Parser_10.h
@@ -402,7 +415,10 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
Object_Proxy_Broker.h
Object_Ref_Table.h
Object_T.h
+ Object_Reference_Sequence_Element_T.h
Objref_VarOut_T.h
+ Object_Reference_Traits_Base_T.h
+ Object_Reference_Traits_T.h
OctetSeqC.h
OctetSeqS.h
operation_details.h
@@ -444,6 +460,7 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
Protocols_Hooks.h
Pseudo_VarOut_T.h
Queued_Message.h
+ Range_Checking_T.h
Reactive_Connect_Strategy.h
Reactive_Flushing_Strategy.h
Refcounted_ObjectKey.h
@@ -455,6 +472,7 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
Resume_Handle.h
Seq_Out_T.h
Seq_Var_T.h
+ Sequence_T.h
Server_Strategy_Factory.h
Service_Callbacks.h
Service_Context.h
@@ -468,6 +486,10 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
StringSeqC.h
StringSeqS.h
String_Alloc.h
+ String_Manager_T.h
+ String_Sequence_Element_T.h
+ String_Traits_Base_T.h
+ String_Traits_T.h
Stub_Factory.h
Stub.h
Synch_Invocation.h
@@ -508,9 +530,22 @@ project(TAO) : acelib, core, tao_output, taodefaults, pidl, extra_core {
ULongLongSeqS.h
ULongSeqC.h
ULongSeqS.h
+ Unbounded_Array_Allocation_Traits_T.h
+ Unbounded_Array_Sequence_T.h
+ Unbounded_Basic_String_Sequence_T.h
+ Unbounded_Object_Reference_Sequence_T.h
+ Unbounded_Octet_Sequence_T.h
+ Unbounded_Octet_Sequence_T.h
+ Unbounded_Reference_Allocation_Traits_T.h
+ Unbounded_Sequence_CDR_T.h
+ Unbounded_String_Sequence_T.h
+ Unbounded_Value_Allocation_Traits_T.h
+ Unbounded_Value_Sequence_T.h
+ Unbounded_Wstring_Sequence_T.h
UserException.h
UShortSeqC.h
UShortSeqS.h
+ Value_Traits_T.h
Valuetype_Adapter.h
Valuetype_Adapter_Factory.h
Var_Array_Argument_T.h
diff --git a/TAO/tests/AMI/ami_test.idl b/TAO/tests/AMI/ami_test.idl
index 82256ab3c10..ffdc66d63d5 100644
--- a/TAO/tests/AMI/ami_test.idl
+++ b/TAO/tests/AMI/ami_test.idl
@@ -15,7 +15,7 @@
-module A
+module A
{
exception DidTheRightThing {
long id;
@@ -24,15 +24,15 @@ module A
interface AMI_Test
{
- long foo (out long out_l,
+ long foo (out long out_l,
in long in_l,
in string in_str)
raises (DidTheRightThing);
-
+
attribute long yadda;
-
+
oneway void shutdown ();
-
+
void inout_arg_test (inout string str);
};
diff --git a/TAO/tests/Bug_1676_Regression/client.cpp b/TAO/tests/Bug_1676_Regression/client.cpp
index 2e2ec401a29..9687e3ec488 100644
--- a/TAO/tests/Bug_1676_Regression/client.cpp
+++ b/TAO/tests/Bug_1676_Regression/client.cpp
@@ -33,6 +33,8 @@ parse_args (int argc, char *argv[])
return 0;
}
+void get_stringList2(Test::Hello_var hello);
+
int
main (int argc, char *argv[])
{
@@ -63,7 +65,7 @@ main (int argc, char *argv[])
ACE_DEBUG ((LM_DEBUG, "\n(%P|%t) - get_stringList\n"));
- Test::StringList_var seq =
+ Test::StringList_var seq =
hello->get_stringList (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -71,7 +73,7 @@ main (int argc, char *argv[])
CORBA::String_var the_string = CORBA::string_dup ((*seq)[i]);
ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%s>\n",
the_string.in ()));
- }
+ }
ACE_DEBUG ((LM_DEBUG, "\n(%P|%t) - get_stringList2 with initialization\n"));
@@ -83,18 +85,11 @@ main (int argc, char *argv[])
CORBA::String_var the_string = seq2.in()[i];
ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%s>\n",
the_string.in ()));
- }
+ }
ACE_DEBUG ((LM_DEBUG, "\n(%P|%t) - get_stringList2 without initialization\n"));
- hello->get_stringList2(false, seq2.out());
- ACE_TRY_CHECK;
-
- for (CORBA::ULong i = 0; i<seq2->length(); i++) {
- CORBA::String_var the_string = seq2.in()[i];
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%s>\n",
- the_string.in ()));
- }
+ get_stringList2(hello);
ACE_DEBUG ((LM_DEBUG, "\n(%P|%t) - mod_stringList\n"));
@@ -123,3 +118,34 @@ main (int argc, char *argv[])
return 0;
}
+
+void get_stringList2(Test::Hello_var hello)
+{
+ Test::StringList_var seq2;
+
+ ACE_TRY_NEW_ENV
+ {
+ // Shutdown the ORB and block until the shutdown is complete.
+ hello->get_stringList2(false, seq2.out());
+ ACE_TRY_CHECK;
+
+ for (CORBA::ULong i = 0; i<seq2->length(); i++) {
+ CORBA::String_var the_string = seq2.in()[i];
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%s>\n",
+ the_string.in ()));
+ }
+ }
+ ACE_CATCH(CORBA::BAD_PARAM, ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) - catched expected exception BAD_PARAM\n"));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "get_stringList2");
+ }
+ ACE_ENDTRY;
+
+
+ return;
+}
diff --git a/TAO/tests/DLL_ORB/Test_Client_Module.cpp b/TAO/tests/DLL_ORB/Test_Client_Module.cpp
index 9deb390c8ee..0408425d5b4 100644
--- a/TAO/tests/DLL_ORB/Test_Client_Module.cpp
+++ b/TAO/tests/DLL_ORB/Test_Client_Module.cpp
@@ -90,7 +90,7 @@ Test_Client_Module::init (int argc, char *argv[])
// Initialize the ORB.
this->orb_ = CORBA::ORB_init (new_argc,
new_argv.get_buffer (),
- ""
+ "CLIENT"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -142,33 +142,8 @@ Test_Client_Module::init (int argc, char *argv[])
int
Test_Client_Module::fini (void)
{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- // Make sure the ORB is destroyed.
- if (!CORBA::is_nil (this->orb_.in ()))
- {
- this->orb_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- ACE_TEXT ("Test_Client_Module::fini"));
- return -1;
- }
- ACE_ENDTRY;
- ACE_CHECK_RETURN (-1);
-
- // This is a bit of a hack. The ORB Core's lifetime is tied to the
- // lifetime of an object reference. We need to wipe out all object
- // references before we call fini() on the TAO_Singleton_Manager.
- //
- // Note that this is only necessary if the default resource factory
- // is used, i.e. one isn't explicitly loaded prior to initializing
- // the ORB.
- (void) this->test_.out ();
+ ACE_DEBUG ((LM_INFO,
+ "Client is being finalized.\n"));
// ------------------------------------------------------------
// Pre-Test_Client_Module termination steps.
@@ -197,6 +172,31 @@ Test_Client_Module::svc (void)
/// Shutdown the remote ORB.
this->test_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
+
+ // Make sure the ORB is destroyed here - before the thread
+ // exits, because it may be holding global resources, owned by
+ // the Object Manager (thru its core, which is in turn owned by
+ // the ORB table; which is owned by the Object Manager).
+ // Otherwise the Object Manager will have clobbered them by the
+ // time it gets to destroy the ORB Table, which calls our
+ // fini(). Had we destroyed the ORB in our fini(), its core
+ // fininalization would have required access to those already
+ // deleted resources.
+ if (!CORBA::is_nil (this->orb_.in ()))
+ {
+ this->orb_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ // This is a bit of a hack. The ORB Core's lifetime is tied to the
+ // lifetime of an object reference. We need to wipe out all object
+ // references before we call fini() on the TAO_Singleton_Manager.
+ //
+ // Note that this is only necessary if the default resource factory
+ // is used, i.e. one isn't explicitly loaded prior to initializing
+ // the ORB.
+ (void) this->test_.out ();
+
}
ACE_CATCHANY
{
diff --git a/TAO/tests/DLL_ORB/Test_Server_Module.cpp b/TAO/tests/DLL_ORB/Test_Server_Module.cpp
index 09604d041e7..bb590b53b1e 100644
--- a/TAO/tests/DLL_ORB/Test_Server_Module.cpp
+++ b/TAO/tests/DLL_ORB/Test_Server_Module.cpp
@@ -91,7 +91,7 @@ Test_Server_Module::init (int argc, char *argv[])
// Initialize the ORB.
this->orb_ = CORBA::ORB_init (new_argc,
new_argv.get_buffer (),
- 0
+ "SERVER"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -169,24 +169,8 @@ Test_Server_Module::init (int argc, char *argv[])
int
Test_Server_Module::fini (void)
{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- // Make sure the ORB is destroyed.
- if (!CORBA::is_nil (this->orb_.in ()))
- {
- this->orb_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- ACE_TEXT ("Test_Server_Module::fini"));
- return -1;
- }
- ACE_ENDTRY;
- ACE_CHECK_RETURN (-1);
+ ACE_DEBUG ((LM_INFO,
+ "Server is being finalized.\n"));
// ------------------------------------------------------------
// Pre-Test_Server_Module termination steps.
@@ -211,6 +195,24 @@ Test_Server_Module::svc (void)
// Run the ORB event loop in its own thread.
this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_INFO,
+ "Server is being destroyed.\n"));
+
+ // Make sure the ORB is destroyed here - before the thread
+ // exits, because it may be holding global resources, owned by
+ // the Object Manager (thru its core, which is in turn owned by
+ // the ORB table; which is owned by the Object Manager).
+ // Otherwise the Object Manager will have clobbered them by the
+ // time it gets to destroy the ORB Table, which calls our
+ // fini(). Had we destroyed the ORB in our fini(), its core
+ // fininalization would have required access to those already
+ // deleted resources.
+ if (!CORBA::is_nil (this->orb_.in ()))
+ {
+ this->orb_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
}
ACE_CATCHANY
{
diff --git a/TAO/tests/ORT/ORT_test_IORInterceptor.cpp b/TAO/tests/ORT/ORT_test_IORInterceptor.cpp
index 33ecd4d3399..7a7a3a2943e 100644
--- a/TAO/tests/ORT/ORT_test_IORInterceptor.cpp
+++ b/TAO/tests/ORT/ORT_test_IORInterceptor.cpp
@@ -82,7 +82,7 @@ ORT_test_IORInterceptor::components_established (
void
ORT_test_IORInterceptor::adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId,
+ const char * id,
PortableInterceptor::AdapterState
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/tests/ORT/ORT_test_IORInterceptor.h b/TAO/tests/ORT/ORT_test_IORInterceptor.h
index 65ef1bf0f4e..14e17c49529 100644
--- a/TAO/tests/ORT/ORT_test_IORInterceptor.h
+++ b/TAO/tests/ORT/ORT_test_IORInterceptor.h
@@ -66,7 +66,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/tests/POA/README b/TAO/tests/POA/README
index a62f8269c50..9d4a03425d2 100644
--- a/TAO/tests/POA/README
+++ b/TAO/tests/POA/README
@@ -81,3 +81,17 @@ Object Adapter (POA) interfaces and their usage scenarios.
This program tests that nested non-servant upcalls are
handled correctly.
+ . POAManagerFactory
+
+ The program tests the POAManagerFactory interface. Test may
+ be run by hand using "POAManagerFactory -v" to get a verbose
+ report of individual tests being run.
+
+ . EndpointPolicy
+
+ Tests for the endpoint policy, the server listens on two
+ endpoints, one with an alias rendering it unreachable. The
+ server uses the endpoint policy to create two IORs, one with
+ the only the good endpoint and another with only the bad. The
+ client expects to reach the good ior and expects to fail with
+ the bad ior.
diff --git a/TAO/tests/Param_Test/svc.conf b/TAO/tests/Param_Test/svc.conf
index f2f882ba2f4..d63ac264118 100644
--- a/TAO/tests/Param_Test/svc.conf
+++ b/TAO/tests/Param_Test/svc.conf
@@ -3,5 +3,5 @@
# Please read $TAO_ROOT/docs/Options.html for details.
#
-static Resource_Factory "-ORBNativeWCharCodeset 0x00010109"
+#static Resource_Factory "-ORBNativeWCharCodeset 0x00010109"
static Server_Strategy_Factory "-ORBtablesize 128"
diff --git a/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp b/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp
index b8c44b203e0..c29013285ff 100644
--- a/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp
+++ b/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.cpp
@@ -181,7 +181,7 @@ FOO_IORInterceptor::components_established (
void
FOO_IORInterceptor::adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId ,
+ const char *,
PortableInterceptor::AdapterState
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h b/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h
index 699083a8fde..4fc980070d1 100644
--- a/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h
+++ b/TAO/tests/Portable_Interceptors/IORInterceptor/FOO_IORInterceptor.h
@@ -78,7 +78,7 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
virtual void adapter_manager_state_changed (
- PortableInterceptor::AdapterManagerId id,
+ const char * id,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((
diff --git a/TAO/tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc b/TAO/tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc
index b747a2264b8..b763787544e 100644
--- a/TAO/tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc
+++ b/TAO/tests/Sequence_Unit_Tests/Sequence_Unit_Tests.mpc
@@ -31,6 +31,14 @@ project(*Bounded_String) : taoexe {
}
}
+project(*UB_Arr_Seq): taoexe, boost_unit_test_framework {
+ exename = unbounded_array_sequence_ut
+ Source_Files {
+ mock_array.cpp
+ unbounded_array_sequence_ut.cpp
+ }
+}
+
project(*Obj_Ref_Seq_Elem): taoexe, boost_unit_test_framework {
exename = object_reference_sequence_element_ut
Source_Files {
diff --git a/TAO/tests/Smart_Proxies/Benchmark/client.cpp b/TAO/tests/Smart_Proxies/Benchmark/client.cpp
index 6867bd8560d..9be492b2cf3 100644
--- a/TAO/tests/Smart_Proxies/Benchmark/client.cpp
+++ b/TAO/tests/Smart_Proxies/Benchmark/client.cpp
@@ -151,8 +151,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
Smart_Test_Factory,
-1);
- // To make KAI Compiler happy as it considers <test_factory> to be
- // an unused variable.
ACE_UNUSED_ARG (test_factory);
}
diff --git a/TAO/tests/Smart_Proxies/Policy/client.cpp b/TAO/tests/Smart_Proxies/Policy/client.cpp
index e8853ed58ea..04331a0df03 100644
--- a/TAO/tests/Smart_Proxies/Policy/client.cpp
+++ b/TAO/tests/Smart_Proxies/Policy/client.cpp
@@ -137,8 +137,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
Smart_Test_Factory (one_shot_factory),
-1);
- // To make KAI Compiler happy as it considers <test_factory> to be
- // an unused variable.
ACE_UNUSED_ARG (test_factory);
run_test (orb.in (), 1);
diff --git a/TAO/tests/Smart_Proxies/client.cpp b/TAO/tests/Smart_Proxies/client.cpp
index 94dd6b472c0..312191a87f5 100644
--- a/TAO/tests/Smart_Proxies/client.cpp
+++ b/TAO/tests/Smart_Proxies/client.cpp
@@ -86,8 +86,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
Smart_Test_Factory,
-1);
- // To make KAI Compiler happy as it considers <test_factory> to be
- // an unused variable.
ACE_UNUSED_ARG (test_factory);
Test_var server =
diff --git a/TAO/tests/Smart_Proxies/dtor/client.cpp b/TAO/tests/Smart_Proxies/dtor/client.cpp
index 9429a29675d..73afdac32dc 100644
--- a/TAO/tests/Smart_Proxies/dtor/client.cpp
+++ b/TAO/tests/Smart_Proxies/dtor/client.cpp
@@ -60,8 +60,6 @@ int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
Test_Smart_Factory,
-1);
- // To make KAI Compiler happy as it considers <test_factory> to be
- // an unused variable.
ACE_UNUSED_ARG (test_factory);
Test_var server =