summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-15 16:46:05 +0000
committernobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-15 16:46:05 +0000
commit75cd0a04895e7809fddf92406fe1bd39e954f8cd (patch)
treef835245e9110ae7bd7d15e0156e256522572b961
parent320160ab6e19cfcc52967af30e33eb8890f64685 (diff)
downloadATCD-75cd0a04895e7809fddf92406fe1bd39e954f8cd.tar.gz
This commit was manufactured by cvs2svn to create tag 'merge_101503'.merge_101503
-rw-r--r--ACE-INSTALL.html30
-rw-r--r--ChangeLog247
-rw-r--r--Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp4
-rw-r--r--Kokyu/DSRT_CV_Dispatcher_Impl_T.h6
-rw-r--r--Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp6
-rw-r--r--Kokyu/Default_Dispatcher_Impl.cpp7
-rw-r--r--Kokyu/Dispatcher_Task.cpp12
-rw-r--r--Kokyu/Dispatcher_Task.h1
-rw-r--r--Kokyu/Kokyu.h8
-rw-r--r--Kokyu/Kokyu.html416
-rw-r--r--Kokyu/KokyuEC.jpgbin58534 -> 0 bytes
-rw-r--r--Kokyu/Kokyu_defs.i4
-rw-r--r--Kokyu/Kokyu_dsrt.h4
-rw-r--r--Kokyu/kokyu1.jpgbin86410 -> 0 bytes
-rw-r--r--Kokyu/kokyu2.jpgbin82664 -> 0 bytes
-rw-r--r--Kokyu/tests/DSRT_MIF/MIF.cpp104
-rw-r--r--Kokyu/tests/DSRT_MIF/Makefile3
-rw-r--r--Kokyu/tests/EDF/README24
-rw-r--r--Kokyu/tests/EDF/test.cpp27
-rw-r--r--Kokyu/tests/FIFO/README24
-rw-r--r--Kokyu/tests/FIFO/test.cpp16
-rw-r--r--Makefile31
-rw-r--r--TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp1
-rw-r--r--TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp4
-rw-r--r--TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp2
-rw-r--r--TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp8
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Makefile.archive1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Parser.cpp110
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Parser.hpp115
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp30
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp69
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp2
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp18
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp116
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp38
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp101
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m411
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp64
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp172
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp19
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp143
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp13
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp3
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp22
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp8
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp125
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp69
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp45
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp1
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp60
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m46
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp100
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp17
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp24
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp9
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp24
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp6
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp15
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp57
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp26
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp52
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp19
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp12
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp6
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp3
-rw-r--r--TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp18
-rw-r--r--TAO/CIAO/CCF/Documentation/TODO10
-rw-r--r--TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp8
-rw-r--r--TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp2
-rw-r--r--TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl3
-rw-r--r--TAO/CIAO/CIDLC/CIDLC.vcproj6
-rw-r--r--TAO/CIAO/CIDLC/Collectors.hpp5
-rw-r--r--TAO/CIAO/CIDLC/DescriptorGenerator.cpp22
-rw-r--r--TAO/CIAO/CIDLC/DescriptorGenerator.hpp5
-rw-r--r--TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp10
-rw-r--r--TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp2
-rw-r--r--TAO/CIAO/CIDLC/Literals.hpp10
-rw-r--r--TAO/CIAO/CIDLC/Makefile.alt42
-rw-r--r--TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp8
-rw-r--r--TAO/CIAO/CIDLC/ServantGenerator.cpp5
-rw-r--r--TAO/CIAO/CIDLC/ServantGenerator.hpp5
-rw-r--r--TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp152
-rw-r--r--TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp5
-rw-r--r--TAO/CIAO/CIDLC/ServantSourceGenerator.cpp154
-rw-r--r--TAO/CIAO/CIDLC/ServantSourceGenerator.hpp5
-rw-r--r--TAO/CIAO/CIDLC/TypeNameEmitter.cpp464
-rw-r--r--TAO/CIAO/CIDLC/TypeNameEmitter.hpp155
-rw-r--r--TAO/CIAO/ChangeLog170
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp2
-rw-r--r--TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp1
-rw-r--r--TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp1
-rw-r--r--TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini2
-rw-r--r--TAO/CIAO/examples/handcrafted/Hello/client.cpp1
-rw-r--r--TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp1
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/Benchmark.idl1
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc7
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp25
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/LatencyTest.h46
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl1
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf2
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl1
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc6
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp3
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp13
-rwxr-xr-xTAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl3
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h4
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc11
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp13
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad2
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/server.cpp98
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/svc.conf6
-rw-r--r--TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h4
-rw-r--r--TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h4
-rw-r--r--TAO/ChangeLog237
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp3
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc16
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp3
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers58
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client29
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server27
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc38
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client32
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server30
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc38
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client30
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server27
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc42
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp22
-rw-r--r--TAO/examples/Kokyu_dsrt_schedulers/utils.h2
-rw-r--r--TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp2
-rw-r--r--TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h6
-rw-r--r--TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp6
-rw-r--r--TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp2
-rw-r--r--TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h6
-rw-r--r--TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp6
-rw-r--r--TAO/examples/RTScheduling/Starter.dsp8
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc9
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp295
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h52
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h38
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf20
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp201
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h65
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp157
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc11
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg2
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp134
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc9
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj256
-rwxr-xr-xTAO/orbsvcs/FTRT_Event_Service/NameService17
-rw-r--r--TAO/orbsvcs/FTRT_Event_Service/Readme147
-rwxr-xr-xTAO/orbsvcs/FTRT_Event_Service/consumer22
-rwxr-xr-xTAO/orbsvcs/FTRT_Event_Service/ftec25
-rwxr-xr-xTAO/orbsvcs/FTRT_Event_Service/supplier21
-rw-r--r--TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp8
-rw-r--r--TAO/orbsvcs/PSS/Makefile.parser2
-rw-r--r--TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp36
-rw-r--r--TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h2
-rw-r--r--TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp76
-rw-r--r--TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp38
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp22
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h4
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp28
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h17
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h2
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h6
-rw-r--r--TAO/orbsvcs/orbsvcs/FTRT.idl82
-rw-r--r--TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl71
-rw-r--r--TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp13
-rw-r--r--TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp5
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent.mpc80
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp36
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h65
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp146
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h84
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp96
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h54
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h54
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp172
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h51
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp52
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h43
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp100
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h43
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp93
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h65
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp118
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h117
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h25
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp47
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h69
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp427
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h180
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp571
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h131
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp53
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h44
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h24
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp320
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h77
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp67
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h40
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp127
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h62
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp191
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h67
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp50
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h76
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h11
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj292
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp44
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h49
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp145
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h55
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp71
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h60
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp70
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h55
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp58
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h44
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h27
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp240
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h58
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp346
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h95
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp130
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h68
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp271
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h68
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp92
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h54
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp33
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h38
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp35
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h38
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp150
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h62
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp31
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h49
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp279
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h101
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp86
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h75
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp138
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h83
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp59
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h49
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp95
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h55
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp45
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h25
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h54
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp460
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h73
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl10
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h296
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp172
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h118
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl52
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h33
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h67
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h66
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl194
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl33
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp11
-rw-r--r--TAO/orbsvcs/orbsvcs/Makefile7
-rw-r--r--TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling193
-rw-r--r--TAO/orbsvcs/orbsvcs/Makefile.SSLIOP2
-rw-r--r--TAO/orbsvcs/orbsvcs/Makefile.bor3
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling.bor97
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp194
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling.idl110
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc19
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp424
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/README301
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp450
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h228
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i64
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp531
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h314
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i55
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp748
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h320
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i35
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h54
-rw-r--r--TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp194
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp325
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h70
-rw-r--r--TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp36
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc30
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp56
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h42
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp145
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h63
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/consumer.cpp151
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/supplier.cpp142
-rw-r--r--TAO/orbsvcs/tests/FtRtEvent/svc.conf3
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp4
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw29
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile433
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor44
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README11
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp180
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp96
-rwxr-xr-xTAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl61
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile29
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor12
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/Makefile3
-rw-r--r--TAO/orbsvcs/tests/LoadBalancing/Makefile.bor3
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/Makefile78
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client123
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server124
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp81
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h55
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/README272
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc16
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor72
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp192
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp418
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp192
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor74
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp200
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp426
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp200
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/client.cpp435
-rwxr-xr-xTAO/orbsvcs/tests/RTCosScheduling/run_test.pl318
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg24
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/server.cpp247
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/server.ior1
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/svc.conf2
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/testSched.idl43
-rw-r--r--TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h54
-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/Exception.cpp11
-rw-r--r--TAO/tao/Exception.h10
-rw-r--r--TAO/tao/PortableServer/PortableServerS.h11
-rw-r--r--TAO/tao/Transport.cpp2
-rw-r--r--TAO/tao/corbafwd.h10
-rw-r--r--TAO/tests/Objref_Sequence_Test/client.cpp2
-rw-r--r--TAO/tests/RTScheduling/Current/Thread_Task.cpp2
-rw-r--r--THANKS1
-rw-r--r--ace/OS.cpp10
-rw-r--r--ace/OS.h54
-rw-r--r--ace/Process.h5
-rw-r--r--ace/Select_Reactor_Base.cpp79
-rw-r--r--ace/ace_wchar.inl2
-rw-r--r--bin/MakeProjectCreator/config/ftrtevent.mpb6
-rw-r--r--bin/MakeProjectCreator/config/ftrteventclient.mpb6
-rw-r--r--bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb2
-rw-r--r--bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb2
-rw-r--r--bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb5
-rw-r--r--bin/MakeProjectCreator/config/rtcosscheduling.mpb6
-rw-r--r--bin/MakeProjectCreator/modules/CbxProjectCreator.pm76
-rw-r--r--bin/MakeProjectCreator/templates/cbx.mpd236
-rw-r--r--bin/MakeProjectCreator/templates/cbxdll.mpt6
-rw-r--r--bin/MakeProjectCreator/templates/cbxexe.mpt5
-rwxr-xr-xbin/mpc.pl1
-rw-r--r--bin/tao_other_tests.lst2
-rw-r--r--include/makeinclude/platform_cygwin32.GNU3
-rw-r--r--include/makeinclude/platform_linux_borland.GNU3
-rw-r--r--include/makeinclude/platform_mingw32.GNU3
-rw-r--r--include/makeinclude/wrapper_macros.GNU71
-rw-r--r--protocols/ace/RMCast/Makefile.am105
-rw-r--r--protocols/ace/RMCast/README57
-rw-r--r--protocols/ace/RMCast/RMCast_Export.h44
-rw-r--r--tests/Makefile.tests1
-rw-r--r--tests/Reactor_Notification_Queue_Test.cpp223
-rw-r--r--tests/Reactor_Notification_Queue_Test.dsp166
-rw-r--r--tests/Tests.bor1
-rw-r--r--tests/run_test.lst1
-rw-r--r--tests/tests.dsw15
-rw-r--r--tests/tests.mpc7
420 files changed, 13601 insertions, 17914 deletions
diff --git a/ACE-INSTALL.html b/ACE-INSTALL.html
index 4136498c2ec..ae9d95c4985 100644
--- a/ACE-INSTALL.html
+++ b/ACE-INSTALL.html
@@ -179,8 +179,7 @@ supported by the DOC group, Riverace, or OCI. <P>
We've also added some support for
<A HREF="#mingw">GNU g++ with MinGW</A>,
- <A HREF="#borland">Borland C++ 5.5, Borland C++ Builder 4.0/5.0/6.0
- and Borland C++ BuilderX</A>, and IBM's VisualAge C++ compiler.
+ Borland C++ Builder 4.0 and later, and IBM's VisualAge C++ compiler.
Since we don't have these compilers we rely on the ACE+TAO users
community to maintain these ports. Therefore, please send email
to the ACE mailing list if you run into problems. <P>
@@ -1207,14 +1206,14 @@ with Borland C++ Builder. <P>
<P><hr align=left width="50%"><P>
<H4><A NAME="borland">Building and Installing ACE on Win32 with Borland
-C++</A></H4>
+C++Builder</A></H4>
If you are building for a machine without a network card, you may want
to check <A HREF="#win32nonic">here</A> first. <P>
<OL>
<LI>Uncompress the ACE distribution into a directory, where it will
- create an
+create an
ACE_wrappers directory containing the source. The ACE_wrappers
directory will be referred to as ACE_ROOT in the following steps -- so
ACE_ROOT\ace would be C:\ACE_wrappers\ace if you uncompressed into the
@@ -1241,7 +1240,7 @@ to check <A HREF="#win32nonic">here</A> first. <P>
<BR>
<CODE>set ACE_ROOT=C:\ACE_wrappers</CODE><BR>
<BR>
- <LI>Set the BCBVER environment vairable to the main version of your Borland C++ compiler.
+ <LI>Set the BCBVER environment vairable to the main version of your BCB compiler.
Currently 4, 5, and 6 are supported. For example:<BR>
<BR>
<CODE>set BCBVER=5</CODE><BR>
@@ -1271,12 +1270,6 @@ variables
Set the environment variable below to build a version of ACE that is build against the VCL-compatible run-time library. This can only be used with BCB version 4<BR>
<CODE>set PASCAL=1</CODE><BR>
<BR>
- Set the environment variable below to build a version of ACE using the
- C++BuilderX preview compiler. This compiler isn't supported at this moment
- but by setting this environment variable the new compiler is used and
- you can expirement with this compiler.<BR>
- <CODE>set CBX=1</CODE><BR>
- <BR>
You can then start the build with the command
<BR><CODE>make -f Makefile.bor</CODE><BR>
<BR>
@@ -1308,10 +1301,9 @@ pascal). To build VCL compatible libraries try
make -f Makefile.bor
</CODE></PRE></BLOCKQUOTE> <P>
-The Borland C++ Builder 4.0/5.0/6.0 port has been done by <A
-HREF="mailto:jody@atdesk.com">Jody Hagins</A>, <A
-HREF="mailto:chris@kohlhoff.com">Christopher Kohlhoff</A> and <A
-HREF="mailto:jwillemsen@remedy.nl">Johnny Willemsen</A>. <P>
+The Borland C++ Builder 4.0/5.0 port has been done by <A
+HREF="mailto:jody@atdesk.com">Jody Hagins</A> and <A
+HREF="mailto:chris@kohlhoff.com">Christopher Kohlhoff</A>. <P>
<B>ACE TESTS</B><P>
@@ -1321,9 +1313,10 @@ Makefile.bor file, that is:<P>
make -f Makefile.bor
</CODE></BLOCKQUOTE><P>
-Once you build all the tests, you can run the perl script:<P>
+Once you build all the tests, you can run a perl script:<P>
<BLOCKQUOTE><CODE>run_test.pl -ExeSubDir
-Dynamic\Release</CODE></BLOCKQUOTE><P> in the
+Dynamic\Release</CODE></BLOCKQUOTE><P> or the the batch file:<P>
+<BLOCKQUOTE><CODE>run_tests.bat bor</CODE></BLOCKQUOTE><P> in the
<code>tests</code> directory to try all the tests. You need to make
sure the ACE bin directory (in this case ACE_ROOT\bin\Dynamic\Release)
is on the path before you try to run the tests.<p>
@@ -1453,7 +1446,8 @@ The tests are located in ACE_ROOT\tests. There is also a workspace in
that directory to build all the tests (tests.dsw)<P>
Once you build all the tests (Batch Build works well for this), you
-can run perl script <code>run_test.pl</code> in the
+can run perl script <code>run_test.pl</code> or the the batch file <a
+href="tests/run_tests.bat"><code>run_tests.bat</code></a> in the
<code>tests</code> directory to try all the tests.<p>
<A NAME="win32nonic">
diff --git a/ChangeLog b/ChangeLog
index 519de2ab1ff..9f2195ddbfc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,233 +1,28 @@
-Wed Oct 15 13:22:32 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * include/makeinclude/platform_linux_borland.GNU:
- Also set versioned_so to 0 in this file.
-
-Wed Oct 15 13:16:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * include/makeinclude/platform_mingw32.GNU:
- * include/makeinclude/platform_cygwin32.GNU:
- Instead of setting SONAME and SOVERSION to empty, set
- versioned_so to 0 to indicate that versioned dll's should
- be used because cygwin and mingw have problem with this.
- This makes Cygwin/MinGW working again.
-
-Wed Oct 15 08:45:20 EDT 2003 Kevin Bryank <bryank@cs.uri.edu>
-
- * bin/MakeProjectCreator/config/rtcosscheduling.mpb:
- Adding base project for using the RTC 1.0 Scheduling Service
-
-Wed Oct 15 10:40:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * ace/Select_Reactor_Base.cpp:
- Fixed unused argument warning when ACE_HAS_REACTOR_NOTIFICATION_QUEUE
- is defined
-
-Tue Oct 14 21:54:07 2003 Nanbor Wang <nanbor@.cs.wustl.edu>
-
- * Makefile (CIAO_CORE_DIRS): Added Kokyu to the list of base
- library for CIAO. Although CIAO doesn't depend on Kokyu, it is
- needed to allow the compilation in orbsvcs/orbsvcs/ to run to
- completion.
-
-Tue Oct 14 23:21:00 UTC 2003 Don Hinton <dhinton@dresystems.com>
-
- * ace/OS.h:
- Removed following method declarations that were not implemented
- or used: times(), cond_timedwait_i(), alarm_i(), ualarm_i(),
- sleep_i(), nanosleep_i(), select_i(), poll_i(), sema_wait_i(),
- sigtimedwait_i(), gettimeofday_i().
-
- * ace/Process.h:
- Fixed typo and added #include of Global_Macros.h.
-
-Tue Oct 14 17:13:46 2003 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu>
-
- * ace/Process.h: Put the ACE_Process copy constructor and
- assignment operator in the private part of the class to disallow
- copying. Thanks to Adam Fanello <yahoo@fanello.net> for
- reporting this.
-
- * ace/OS.cpp: Added patches to support PHARLAP. Thanks
- to Ira Burton <imburton@micron.com> for supplying these.
-
-Tue Oct 14 13:54:19 2003 Steve Huston <shuston@riverace.com>
- Picked up from ACE 5.3:
- Wed Jun 11 17:18:39 2003 Steve Huston <shuston@riverace.com>
-
- * include/makeinclude/wrapper_macros.GNU: Make SOVERSION
- user-settable if versioned_so is enabled. Thanks to Craig L.
- Ching <cching@mqsoftware.com> for this idea.
- Also moved the versioned_so and SOVERSION setup to after
- platform_macros.GNU is included so that users can set this stuff
- up in their platform_macros.GNU file. The ACE_MAJOR_VERSION,
- etc. variables are still set up before platform_macros.GNU, though,
- in case platform_macros.GNU wants to use them.
-
-Tue Oct 14 10:45:32 2003 Nanbor Wang <nanbor@.cs.wustl.edu>
-
- * Makefile: Added a new CIAO_Core target for building all CIAO
- core libraries and tools, including everything they need.
- Thanks to Gautam for suggesting this.
-
-Tue Oct 14 03:43:47 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp: Added this->
- qualification to instance variables in base class to fix
- compile warnings in HPUX build.
-
- * Kokyu/Default_Dispatcher_Impl.cpp:
- * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp:
- * Kokyu/Dispatcher_Task.cpp:
- * Kokyu/Dispatcher_Task.h:
- * Kokyu/Kokyu.h:
- * Kokyu/Kokyu_defs.i: Removed/added comments
-
-Tue Oct 14 05:50:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * tests/Reactor_Notification_Queue_Test.cpp:
- Fixed compile error in MSVC6 WChar build
-
-Mon Oct 13 17:52:31 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tests/Reactor_Notification_Queue_Test.cpp: Fixed a warning in
- g++ builds.
-
-Tue Oct 14 05:27:03 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tests/Reactor_Notification_Queue_Test.dsp: Added this time for
- real.
-
-Mon Oct 13 15:25:41 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb:
- Added include path to the Kokyu_dsrt_schedulers directory.
-
-Mon Oct 13 08:51:29 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * ace/ace_wchar.inl: Reverted the change to BUG 1605 that was
- applied. The MSDN documentation doesn't suggest a 1 instead of a
- -1. Reopening BUG 1605.
-
-Mon Oct 13 12:39:33 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * tests/Makefile.tests:
- Fixed typo in Reactor_Notification_Queue_Test
-
-Mon Oct 13 08:36:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * Kokyu/Kokyu_dsrt.h:
- * Kokyu/DSRT_CV_Dispatcher_Impl_T.h:
- Fixed fuzz pre/post error.
-
- * tests/Reactor_Notification_Queue_Test.cpp:
- Fixed fuzz file mismatch error.
-
-Mon Oct 13 06:34:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * bin/mpc.pl:
- * bin/MakeProjectCreator/templates/cbxexe.mpt:
- * bin/MakeProjectCreator/templates/cbxdll.mpt:
- * bin/MakeProjectCreator/templates/cbx.mpd:
- * bin/MakeProjectCreator/modules/CbxProjectCreator.pm:
- Added first version of cbx generator. This generated project files
- for the new C++BuilderX development environment. This just sets some
- of the options and adds all files to the project.
-
-Sun Oct 12 21:07:04 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tests/Makefile.tests:
- * tests/Tests.bor:
- * tests/run_test.lst:
- * tests/tests.mpc: Regular exercise for building and running the
- test on all the platforms.
-
-Sun Oct 12 19:03:31 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * Kokyu/Dispatcher_Task.cpp: Changed the Null lock in the
- allocator to Mutex lock.
-
-Sun Oct 12 17:20:40 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * ace/Select_Reactor_Base.cpp: Fix for [BUG 1268]. Please refer to
- bugzilla database at
-
- http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1268
-
- for more details on the source of the problem and the solution
- for the same. Thanks to Carlos O'Ryan for providing patches.
-
- * tests/Reactor_Notification_Queue_Test.cpp:
- * tests/Reactor_Notification_Queue_Test.dsp:
- * tests/tests.dsw: New test that stresses the feature of sending
- notify messages to the reactor. Thanks to Carlos O'Ryan for
- providing the test.
-
-Sun Oct 12 14:08:38 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb:
- * bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb:
- * bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb:
- Added MPC base project files for Kokyu DSRT schedulers.
-
-Sun Oct 12 11:48:02 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * Kokyu/Kokyu.html:
- * Kokyu/kokyu1.jpg:
- * Kokyu/kokyu2.jpg:
- * Kokyu/KokyuEC.jpg: Added some initial documentation on Kokyu.
-
-Sun Oct 12 17:34:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * ACE-INSTALL.html:
- Removed mentioning of tests/run_tests.bat, it has been removed
- some time ago and the perl script run_tests.pl is the only one
- to use. Updated documentation for Borland support. CBuilderX is
- now supported, but not the new preview compiler that is shipped
- with CBuilderX.
-
-Sun Oct 12 08:42:32 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * Kokyu/tests/DSRT_MIF/MIF.cpp:
- * Kokyu/tests/DSRT_MIF/Makefile:
- * Kokyu/tests/FIFO/test.cpp:
- * Kokyu/tests/FIFO/README:
- * Kokyu/tests/EDF/README:
- * Kokyu/tests/EDF/test.cpp: Added more output info
- statements. Added README for the examples.
-
-Sat Oct 11 23:48:21 2003 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * bin/tao_other_tests.lst:
-
- Enabled TAO load balancer infrastructure controlled membership
- and CPU load monitor tests.
-
Sat Oct 11 21:51:52 2003 Venkita Subramonian <venkita@cs.wustl.edu>
* Kokyu/Kokyu_defs.{h,i,cpp}:
* Kokyu/Default_Dispatcher_Impl.cpp: Fixed some minor bugs related
to setting the dispatcher with the correct sched policy.
-
+
* Kokyu/tests/FIFO/test.cpp: Added some output print statements to
- print error messages on dispatcher failure.
+ print error messages on dispatcher failure.
Sat Oct 11 17:39:09 2003 Venkita Subramonian <venkita@cs.wustl.edu>
- * Kokyu/Dispatcher_Task.i:
- * Kokyu/Dispatcher_Task.h:
- * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp:
- * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp:
+ * Kokyu/Dispatcher_Task.i:
+ * Kokyu/Dispatcher_Task.h:
+ * Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp:
+ * Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp:
Add this-> qualification when referencing instance variables in
base class to get rid of compiler warnings in HPUX build.
-
+
* ace/ace_wchar.inl: Fix for BUG 1605. Thanks to Dmitry
Botcharnikov <dimab@garant.ru> and Stephan Bettermann
<sbetterm@erggroup.com> for reporting the problem and suggesting
- a solution. Please see
+ a solution. Please see
- http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1605
+ http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1605
for a description of the problem.
@@ -239,20 +34,20 @@ Sat Oct 11 11:01:05 2003 Venkita Subramonian <venkita@cs.wustl.edu>
Fri Oct 10 22:56:35 2003 Venkita Subramonian <venkita@cs.wustl.edu>
- * Kokyu/Kokyu_defs.{h,i,cpp}:
- * Kokyu/Dispatcher_Task.{i,h,cpp}:
- * Kokyu/Dispatcher_Impl.h:
- * Kokyu/Default_Dispatcher_Impl.cpp:
-
+ * Kokyu/Kokyu_defs.{h,i,cpp}:
+ * Kokyu/Dispatcher_Task.{i,h,cpp}:
+ * Kokyu/Dispatcher_Impl.h:
+ * Kokyu/Default_Dispatcher_Impl.cpp:
+
Added allocator, sched scope, sched policy, reordering queue
attributes to the Dispatcher_Attributes class. This will make
the dispatcher more configurable.
-
- * Kokyu/tests/FIFO/test.cpp:
- * Kokyu/tests/EDF/test.cpp:
-
+
+ * Kokyu/tests/FIFO/test.cpp:
+ * Kokyu/tests/EDF/test.cpp:
+
Added command line options to specify the sched policy.
-
+
Fri Oct 10 19:52:26 UTC 2003 Don Hinton <dhinton@dresystems.com>
* ace/OS.{h,i}:
@@ -369,6 +164,7 @@ Tue Oct 07 06:07:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
* bin/MakeProjectCreator/templates/bor.mpd:
Generate NAME, else nothing happens when building with Borland.
+
Fri Oct 03 22:41:20 2003 Chris Cleeland <cleeland@ociweb.com>
* ACE version 5.3.4 released.
@@ -409,6 +205,7 @@ Thu Oct 2 07:33:07 2003 Venkita Subramonian <venkita@cs.wustl.edu>
* Kokyu/tests/FIFO/test.cpp:
Added shutdown of the dispatcher at the end.
+
Wed Oct 1 10:59:35 2003 Chad Elliott <elliott_c@ociweb.com>
* apps/gperf/src/gperf.mpc:
@@ -693,6 +490,7 @@ Tue Sep 16 11:49:19 2003 Chad Elliott <elliott_c@ociweb.com>
Tue Sep 16 11:55:18 2003 Gautam H. Thaker <gthaker@atl.lmco.com>
+
* performance-tests/SCTP/SOCK_SEQPACK_srv.cpp:
fix compiler warning due to unintialized pointer
@@ -711,6 +509,7 @@ Tue Sep 16 11:55:18 2003 Gautam H. Thaker <gthaker@atl.lmco.com>
Changes to support changed LKSCTP API support from 2.6.test.4
kernel an onward.
+
Tue Sep 16 10:28:02 2003 Chad Elliott <elliott_c@ociweb.com>
* bin/MakeProjectCreator/modules/ProjectCreator.pm:
diff --git a/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp b/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp
index a5d28115fac..737ec3e105b 100644
--- a/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp
+++ b/Kokyu/DSRT_CV_Dispatcher_Impl_T.cpp
@@ -73,9 +73,9 @@ schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos)
this->blocked_prio_,
this->sched_policy_) == -1)
{
- ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_ERROR ((LM_ERROR,
ACE_TEXT ("%p\n"),
- ACE_TEXT ("thr_setprio failed")), -1);
+ ACE_TEXT ("thr_setprio failed")));
}
ACE_NEW_RETURN (item,
diff --git a/Kokyu/DSRT_CV_Dispatcher_Impl_T.h b/Kokyu/DSRT_CV_Dispatcher_Impl_T.h
index 305afb55ccc..0cf7045d247 100644
--- a/Kokyu/DSRT_CV_Dispatcher_Impl_T.h
+++ b/Kokyu/DSRT_CV_Dispatcher_Impl_T.h
@@ -10,7 +10,7 @@
#ifndef DSRT_CV_DISPATCHER_IMPL_T_H
#define DSRT_CV_DISPATCHER_IMPL_T_H
-#include /**/ "ace/pre.h"
+#include "ace/pre.h"
#include "ace/Task.h"
#include "ace/Copy_Disabled.h"
@@ -36,7 +36,7 @@ namespace Kokyu
typedef typename
DSRT_Scheduler_Traits::QoSDescriptor_t DSRT_QoSDescriptor;
- DSRT_CV_Dispatcher_Impl (ACE_Sched_Params::Policy sched_policy,
+ DSRT_CV_Dispatcher_Impl (ACE_Sched_Params::Policy sched_policy,
int sched_scope);
int init_i (const DSRT_ConfigInfo&);
@@ -82,5 +82,5 @@ namespace Kokyu
#pragma implementation ("DSRT_CV_Dispatcher_Impl_T.cpp")
#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
-#include /**/ "ace/post.h"
+#include "ace/post.h"
#endif /* DSRT_DIRECT_DISPATCHER_IMPL_T_H */
diff --git a/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp b/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp
index 20f61222b11..2d3c996a23d 100644
--- a/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp
+++ b/Kokyu/DSRT_Direct_Dispatcher_Impl_T.cpp
@@ -188,7 +188,7 @@ template <class DSRT_Scheduler_Traits>
int DSRT_Direct_Dispatcher_Impl<DSRT_Scheduler_Traits>::
schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos)
{
- ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX, guard, this->synch_lock_, -1);
+ ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX, guard, synch_lock_, -1);
#ifdef KOKYU_DSRT_LOGGING
ACE_DEBUG ((LM_DEBUG,
@@ -216,9 +216,9 @@ schedule_i (Guid_t id, const DSRT_QoSDescriptor& qos)
this->blocked_prio_,
this->sched_policy_) == -1)
{
- ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_ERROR ((LM_ERROR,
ACE_TEXT ("%p\n"),
- ACE_TEXT ("thr_setprio failed")), -1);
+ ACE_TEXT ("thr_setprio failed")));
}
#ifdef KOKYU_DSRT_LOGGING
diff --git a/Kokyu/Default_Dispatcher_Impl.cpp b/Kokyu/Default_Dispatcher_Impl.cpp
index 9403b46a892..3b7dbcafa4c 100644
--- a/Kokyu/Default_Dispatcher_Impl.cpp
+++ b/Kokyu/Default_Dispatcher_Impl.cpp
@@ -127,10 +127,8 @@ Default_Dispatcher_Impl::dispatch_i (const Dispatch_Command* cmd,
Dispatcher_Task* task =
find_task_with_preemption_prio (qos_info.preemption_priority_);
- //@@VS - We should insert this into the lowest prio queue.
- //How do we know that the last queue is the lowest prio queue.
if (task == 0)
- task = tasks_[ntasks_-1].get ();
+ task = tasks_[0].get ();
return task->enqueue (cmd, qos_info);
}
@@ -138,9 +136,6 @@ Default_Dispatcher_Impl::dispatch_i (const Dispatch_Command* cmd,
int
Default_Dispatcher_Impl::shutdown_i ()
{
- //This needs to be revisited based on mode transition and
- //consistent cut through the queues
-
//post shutdown command to all tasks
int i;
diff --git a/Kokyu/Dispatcher_Task.cpp b/Kokyu/Dispatcher_Task.cpp
index 8002d3a581d..3b4b509c7a3 100644
--- a/Kokyu/Dispatcher_Task.cpp
+++ b/Kokyu/Dispatcher_Task.cpp
@@ -12,7 +12,6 @@
ACE_RCSID(Kokyu, Dispatcher_Task, "$Id$")
namespace
-//anonymous namespace - use this to avoid polluting the global namespace
{
const int ALLOC_POOL_CHUNKS = 200;
}
@@ -20,7 +19,7 @@ namespace
namespace Kokyu
{
-typedef ACE_Cached_Allocator<Dispatch_Queue_Item, ACE_SYNCH_MUTEX>
+typedef ACE_Cached_Allocator<Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX>
Dispatch_Queue_Item_Allocator;
int
@@ -191,17 +190,18 @@ void Dispatch_Queue_Item::init_i (const QoSDescriptor& qos_info)
template class ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> >;
template class ACE_Lock_Adapter<ACE_Thread_Mutex>;
-template class ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX>;
+template class ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX>;
template class ACE_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item> >;
-template class ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>, ACE_SYNCH_MUTEX>;
+template class ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>,
+ ACE_SYNCH_NULL_MUTEX>;
template class ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>;
#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> >
#pragma instantiate ACE_Lock_Adapter<ACE_Thread_Mutex>
#pragma instantiate ACE_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item> >
-#pragma instantiate ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX>
-#pragma instantiate ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_MUTEX>
+#pragma instantiate ACE_Cached_Allocator<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX>
+#pragma instantiate ACE_Locked_Free_List<ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item, ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Cached_Mem_Pool_Node<Kokyu::Dispatch_Queue_Item>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/Kokyu/Dispatcher_Task.h b/Kokyu/Dispatcher_Task.h
index 0bb91313f47..09be9974140 100644
--- a/Kokyu/Dispatcher_Task.h
+++ b/Kokyu/Dispatcher_Task.h
@@ -83,6 +83,7 @@ private:
private:
ConfigInfo curr_config_info_;
+ /// An per-task allocator
ACE_Allocator *allocator_;
int own_allocator_;
diff --git a/Kokyu/Kokyu.h b/Kokyu/Kokyu.h
index b2e041bed8c..c5a47ff90b6 100644
--- a/Kokyu/Kokyu.h
+++ b/Kokyu/Kokyu.h
@@ -32,14 +32,6 @@
//around.
#include "Dispatcher_Impl.h"
-//#################################################################
-//Beware that this interface will be subject to change in the future
-//since this is the very initial release. We will be working on
-//trying to merge the DSRT and EC mechanisms in the future. If you
-//are a user of this interface, kindly let us know so that we can
-//coordinate with you when we refactor this interface.
-//##################################################################
-
namespace Kokyu
{
//class Dispatcher_Impl;
diff --git a/Kokyu/Kokyu.html b/Kokyu/Kokyu.html
deleted file mode 100644
index 55c8016cd1c..00000000000
--- a/Kokyu/Kokyu.html
+++ /dev/null
@@ -1,416 +0,0 @@
-<!-- $Id$ -->
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Venkita Subramonian">
- <meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]">
- <title>Kokyu</title>
-</head>
-<body>
-
-<center>
-<h2>
-<b><font size=+2>Kokyu - A middleware framework for flexible scheduling
-and dispatching</font></b></h2></center>
-<a href="#Introduction">Introduction</a>
-<br><a href="#SchedFramework">Strategized Scheduling framework</a>
-<br><a href="#FlexDispatch">Flexible Dispatching Framework</a>
-<br><a href="#KokyuEC">Use of Kokyu within the TAO Real-time Event Channel(RTEC)</a>
-<br><a href="#ConfigKokyuEC">Configuration of RTEC to use Kokyu dispatching</a>
-<br><a href="#KokyuDSRTCORBA">Use of Kokyu within the Dynamic Scheduling
-Real-time CORBA (DSRTCORBA) schedulers</a>
-<br><a href="#newDSRTSched">How to write a new DSRT scheduler using Kokyu</a>
-<br><a href="#DSRTCORBAvsRTEC">Kokyu DSRTCORBA vs Kokyu RTEC</a>
-<br><a href="#Status">Current status</a>
-<br><a href="#Future">Future work</a>
-<br><a href="#Papers">Papers on Kokyu</a>
-<br>&nbsp;
-<h3>
-<a NAME="Introduction"></a>Introduction</h3>
-Kokyu is a portable middleware scheduling framework designed to provide
-flexible scheduling and dispatching services within the context of higher-level
-middleware. Kokyu currently provides real-time scheduling and dispatching
-services for TAO’s real-time CORBA Event Service, which mediates supplier-consumer
-relationships between application operations. Kokyu consists primarily
-of two cooperating infrastructure segments, illustrated in Figure 1:
-<center>
-<p><img SRC="kokyu1.jpg" height=285 width=489>
-<br><b>Figure 1: Kokyu Scheduling and Dispatching Infrastructure</b></center>
-
-<ol>
-<li>
-A pluggable scheduling infrastructure with efficient support for adaptive
-execution of diverse static, dynamic, and hybrid static/dynamic scheduling
-heuristics.</li>
-
-<li>
-A flexible dispatching infrastructure that allows composition of primitive
-operating system and middleware mechanisms to enforce arbitrary scheduling
-heuristics.</li>
-</ol>
-The scheduler is responsible for specifying how operation dispatch requests
-are ordered, by assigning priority levels and rates to tasks, and producing
-a configuration specification for the dispatching mechanism. The dispatcher
-is responsible for enforcing the ordering of operation dispatches using
-different threads, requests queues, and timers configured according to
-the scheduler’s specification. The combined framework provides an implicit
-projection of scheduling heuristics into appropriate dispatching infrastructure
-configurations, so that the scheduling and dispatching infrastructure segments
-can be optimized both separately and in combination.
-<h3>
-<a NAME="SchedFramework"></a>Strategized Scheduling framework</h3>
-The Kokyu scheduling framework is designed to support a variety of scheduling
-heuristics including RMS, EDF, MLF, and MUF. In addition, this framework
-provides a common environment to compare systematically both existing and
-new scheduling strategies. This flexibility is achieved in the Kokyu framework
-via the Strategy pattern, which allows parts of the sequence of steps in
-an algorithm to be replaced, thus providing interchangeable variations
-within a consistent algorithmic framework. The Kokyu scheduling framework
-uses the Strategy pattern to encapsulate a family of scheduling algorithms
-within a fixed CORBA IDL interface, thereby enabling different strategies
-to be configured independently from applications that use them.
-<h3>
-<a NAME="FlexDispatch"></a>Flexible Dispatching Framework</h3>
-The right side of Figure 1 shows the essential features of Kokyu’s flexible
-task dispatching infrastructure. Key features of the dispatching infrastructure
-that are essential to performing our optimizations are as follows:
-<p><b>Dispatching queues:</b> Each task is assigned by our strategized
-Kokyu scheduling framework&nbsp; to a specific dispatching queue, each
-of which has an associated queue number, a queueing discipline, and a unique
-operating-system-specific priority for its single associated dispatching
-thread.
-<p><b>Dispatching threads:</b> Operating-system thread priorities decrease
-as the queue number increases, so that the 0th queue is served by the highest
-priority thread. Each dispatching thread removes the task from the head
-of its queue and runs its entry point function to completion before retrieving
-the next task to dispatch. Adapters can be applied to operations to intercept
-and possibly short-circuit the entry-point upcall. In general, however,
-the outermost operation entry point must complete on each dispatch.
-<p><b>Queueing disciplines: </b>Dispatching thread priorities determine
-which queue is active at any given time: the highest priority queue with
-a task to dispatch is always active, preempting tasks in lower priority
-queues. In addition, each queue may have a distinct discipline for determining
-which of its enqueued tasks has the highest eligibility, and must ensure
-the highest is at the head of the queue at the point when one is to be
-dequeued. We consider three disciplines:
-<ul>
-<li>
-Static – Tasks are ordered by a static subpriority value – results in FIFO
-ordering if all static subpriorities are made the same; static queues at
-different priority levels can be used to implement an RMS scheduling strategy.</li>
-
-<li>
-Deadline – Tasks are ordered by time to deadline; a single deadline queue
-can be used to implement the earliest deadline first (EDF) scheduling strategy.</li>
-
-<li>
-Laxity – Tasks are ordered by slack time, or laxity – the time to deadline
-minus the execution time; a single laxity queue can be used to implement
-the minimum laxity first (MLF) scheduling strategy; laxity queues at different
-priority levels can be used to implement the maximum urgency first (MUF)
-scheduling strategy.</li>
-</ul>
-Any discipline for which a maximal eligibility may be selected can be employed
-to manage a given dispatching queue in this approach. Scheduling strategies
-can be constructed from one or more queues of each discipline alone, or
-combinations of queues with different disciplines can be used. Figure 2&nbsp;
-illustrates the general queueing mechanism used by the dispatching modules
-in the Kokyu dispatching framework.
-<center>
-<p><img SRC="kokyu2.jpg" height=176 width=779>
-<p><b>Figure 2: Example Queueing Mechanism in a Kokyu Dispatching Module</b></center>
-
-<p>In addition, this figure shows how the output information provided by
-the Kokyu scheduling framework is used to configure and operate a dispatching
-module. During system initialization, each dispatching module obtains the
-thread priority and dispatching type for each of its queues, typically
-from the scheduling service’s output interface. Next, each queue is assigned
-a unique dispatching priority number, a unique thread priority, and an
-enumerated dispatching type. Finally, each dispatching module has an ordered
-queue of pending dispatches per dispatching priority. To preserve QoS guarantees,
-operations are inserted into the appropriate dispatching queue according
-to their assigned dispatching priority. Operations within a dispatching
-queue are ordered by their assigned dispatching subpriority. To minimize
-priority inversions, operations are dispatched from the queue with the
-highest thread priority, preempting any operation executing in a lower
-priority thread. To minimize preemption overhead, there is no preemption
-within a given priority queue. The following three values are defined for
-the dispatching type:
-<ul>
-<li>
-<b>STATIC DISPATCHING</b>: This type specifies a queue that only considers
-the static portion of an operation’s dispatching subpriority.</li>
-
-<li>
-<b>DEADLINE DISPATCHING</b>: This type specifies a queue that considers
-the dynamic and static portions of an operation’s dispatching subpriority,
-and updates the dynamic portion according to the time remaining until the
-operation’s deadline.</li>
-
-<li>
-<b>LAXITY DISPATCHING</b>: This type specifies a queue that considers the
-dynamic and static portions of an operation’s dispatching subpriority,
-and updates the dynamic portion according to the operation’s laxity.</li>
-</ul>
-
-<h3>
-<a NAME="KokyuEC"></a>Use of Kokyu within the TAO Real-time Event Channel(RTEC)</h3>
-Figure 3 shows the sequence of operations that take place in the Kokyu
-based dispatching module in the TAO RTEC. The client application registers
-all relevant operations with the scheduler along with their real-time requirements.
-This is done through the concept of an <font face="Courier New,Courier">RT_Info
-</font>(see
-TAO/orbsvcs/orbsvcs/RtecScheduler.idl) structure which is a structure that
-contains the execution time, criticality, period, etc of an operation.&nbsp;
-The client then calls <font face="Courier New,Courier">compute_schedule</font>
-method on the scheduler. The scheduler creates a dependency graphs of all
-operations and partitions operations into equivalence classes based on
-the scheduling parameters supplied. The scheduler can be configured to
-have any scheduling policy which determines the equivalence class partitioning
-(queues) and possibly a partial ordering of operations within an equivalence
-class (ordering within a queue). Once this is done, the scheduler has the
-configuration information for the Kokyu dispatcher like the number of dispatch
-queues, priorities for the threads processing each queue, etc.
-<p>When the client calls <font face="Courier New,Courier">activate</font>
-on the event channel, the EC inturn activates the Kokyu based EC dispatching
-module. The EC dispatching module queries the dispatch configuration from
-the scheduler and uses that to create the Kokyu dispatcher with the appropriate
-number of lanes and threads. When an event is pushed into the EC, the EC
-pushes the event to the appropriate consumers, who are subscribed to that
-event. For each consumer, the EC queries the scheduler for the RT_Info
-of that consumer. It then hands over the event to the Kokyu based dispatching
-module. The dispatching module then enqueues the event into the appropriate
-queue for processing by the thread watching that queue.
-<center>
-<p><img SRC="KokyuEC.jpg" height=784 width=716>
-<p><b>Figure 3: Kokyu based dispatching module within TAO RTEC</b></center>
-
-<h3>
-<a NAME="ConfigKokyuEC"></a>Configuration of RTEC to use Kokyu dispatching</h3>
-<b>Static configuration</b>: In the <b>svc.conf</b> file, make sure you
-have the following configuration for Kokyu dispatching. You can combine
-this with other -ECxxx options.
-<p><font face="Courier New,Courier">static EC_Factory "-ECdispatching kokyu
-SCHED_FIFO -ECscheduling kokyu -ECfiltering kokyu"</font>
-<p>To run the threads in the real-time FIFO class, use SCHED_FIFO. You
-could use SCHED_RR and SCHED_OTHER also.
-<br>The default is SCHED_FIFO.
-<p>In your program, call
-<p><font face="Courier New,Courier">TAO_EC_Kokyu_Factory::init_svcs ();</font>
-<p>to statically create the EC Kokyu dispatching and other Kokyu related
-modules.
-<p><b>Dynamic configuration</b>: In the <b>svc.conf</b> file, make sure
-you have the following configuration for Kokyu dispatching. You can combine
-this with other -ECxxx options.
-<p><font face="Courier New,Courier">dynamic EC_Factory Service_Object *
-TAO_RTKokyuEvent:_make_TAO_EC_Kokyu_Factory() "-ECdispatching kokyu -ECscheduling
-kokyu -ECfiltering kokyu"</font>
-<h3>
-<a NAME="KokyuDSRTCORBA"></a>Use of Kokyu within the Dynamic Scheduling
-Real-time CORBA (DSRTCORBA) schedulers</h3>
-An initial implementation of mechanisms to support DSRTCORBA schedulers
-have been released. DSRTCORBA uses the concept of distributed threads,
-which traverse multiple end systems giving the application the illusion
-of a single logical thread executing an end-to-end task. The distributed
-thread carries with it the scheduling parameters like importance, deadline,
-etc so that it can get scheduled by a local scheduler on each endsystem.
-The Kokyu DSRT dispatching framework is used as an enforcing mechanism.
-<p>The DSRT schedulers are available in the directory $TAO_ROOT/examples/Kokyu_dsrt_schedulers.
-They use the Kokyu DSRT
-<br>dispatching classes present in $ACE_ROOT/Kokyu. These act as wrappers/adapters
-around the Kokyu DSRT dispatcher. The Kokyu DSRT dispatcher is responsible
-for scheduling threads which ask the dispatcher to schedule themselves.
-Currently there are two implementations for the Kokyu DSRT dispatcher.
-One uses a condition-variable based approach for scheduling threads and
-the other manipulates priorities of threads and relies on the OS scheduler
-for dispatching the threads appropriately.
-<h4>
-CV-based approach:</h4>
-In this approach, it is assumed that the threads "yield" on a regular basis
-to the scheduler by calling <tt>update_scheduling_segment</tt>. Only one
-thread is running at any point in time. All the other threads are blocked
-on a condition variable. When the currently running thread yields, it will
-cause the condition variable to be signalled. All the eligible threads
-are stored in a scheduler queue (rbtree), the most eligible thread determined
-by the scheduling discipline. This approach has the drawback that it requires
-a cooperative threading model, where threads yield voluntarily on a regular
-basis. The application threads are responsible for doing this voluntary
-yielding.
-<h4>
-OS-based approach:</h4>
-This approach relies on the OS scheduler to do the actual thread dispatching.
-The Kokyu DSRT dispatcher manipulates the priorities of the threads. The
-scheduler maintains a queue (rbtree) of threads. The scheduler also has
-an executive thread, which runs at the maximum available priority. This
-thread runs in a continuous loop until the dispatcher is shut down. The
-executive thread is responsible for selecting the most eligible thread
-from the scheduler queue and bump up its priority if necessary while bumping
-down the priority of the currently running thread, if it is not the most
-eligible. There are four priority levels required for this mechanism to
-work, listed in descending order of priorities. For example, a thread running
-at <i>Active</i> priority will preempt a
-<br>thread running at <i>Inactive</i> priority level.
-<ol>
-<li>
-Executive priority - priority at which the scheduler executive thread runs.</li>
-
-<li>
-Blocked priority - this is the priority to which threads about to block
-on remote calls will be bumped up to.</li>
-
-<li>
-Active priority - this is the priority to which the most eligible thread
-is set to.</li>
-
-<li>
-Inactive priority - this is the priority to which all threads except the
-most eligible thread is set to.</li>
-</ol>
-As soon as a thread asks to be scheduled, a wrapper object is created and
-inserted into the queue. This object carries the qos (sched params) associated
-with that thread. A condition variable is signalled to inform the executive
-thread that the queue is "dirty". The scheduler thread picks up the most
-eligble one and sets its priority to <i>active</i> and sets the currently
-running thread priority to
-<br><i>inactive</i>.
-<p>The drawback to this approach is that it relies on the OS scheduler
-to dispatch the threads. Also, with the current implementation, there is
-only one thread running at active priority and others are all at <i>inactive</i>
-level. This will create undesirable effects with multi-processor systems,
-which could select any one of the <i>inactive</i> level threads and this
-could cause priority inversions.
-<h3>
-<a NAME="newDSRTSched"></a>How to write a new DSRT scheduler using Kokyu</h3>
-One can use one of the schedulers as a starting point. The variation points
-are
-<ol>
-<li>
-The scheduler parameters that need to be propagated along with the service
-context.</li>
-
-<li>
-The QoS comparison function, that determines which thread is more eligible.</li>
-</ol>
-To aid (1), we have created a Svc_Ctxt_DSRT_QoS idl interface (see ./Kokyu_qos.pidl).
-This interface currently has the necessary things to be propagated for
-FP, MIF and MUF schedulers. This can be altered if necessary to accomodate
-new sched params. The idea here is to let the IDL compiler generate the
-marshalling code (including Any operators) so that these parameters can
-be shipped across in the service context in an encapsulated CDR.
-<p>To create customized QoS comparator functions, we used the idea of C++
-traits to let the user define customized comparator functions. For example,
-the MIF scheduler uses the following traits class.
-<p><tt>&nbsp; struct MIF_Scheduler_Traits</tt>
-<br><tt>&nbsp; {</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; typedef RTScheduling::Current::IdType Guid_t;</tt>
-<p><tt>&nbsp;&nbsp;&nbsp; struct _QoSDescriptor_t</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef long Importance_t;</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Importance_t importance_;</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; };</tt>
-<p><tt>&nbsp;&nbsp;&nbsp; typedef _QoSDescriptor_t QoSDescriptor_t;</tt>
-<p><tt>&nbsp;&nbsp;&nbsp; typedef Kokyu::MIF_Comparator&lt;QoSDescriptor_t>
-QoSComparator_t;</tt>
-<p><tt>&nbsp;&nbsp;&nbsp; class _Guid_Hash</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; public:</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u_long operator () (const Guid_t&amp;
-id)</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ACE::hash_pjw
-((const char *) id.get_buffer (),</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-id.length ());</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
-<br><tt>&nbsp;&nbsp;&nbsp; };</tt>
-<p><tt>&nbsp;&nbsp;&nbsp; typedef _Guid_Hash Guid_Hash;</tt>
-<br><tt>&nbsp; };</tt>
-<p>The idea of traits makes the Kokyu dispatcher more flexible in terms
-of creating new schedulers. For example, the Kokyu classes do not care
-about what concrete type Guid is. It could be an OctetSequence for some
-applications, whereas it could be an int for some others. The exact type
-is defined by the application (in this case, the MIF scheduler) using the
-traits class. In the above traits class the Guid's type is defined to be
-an octet sequence (indirectly). The Kokyu dispatcher expects the following
-typedef's to
-<br>be present in the traits class:
-<p><tt>Guid_t - </tt>Type of GUID.
-<br><tt>QoSDescriptor_t - </tt>aggregate for scheduler parameters
-<br><tt>QoSComparator_t - </tt>used by the scheduler queue to determine
-most eligible item
-<br><tt>Guid_Hash - </tt>used by the internal hash map in the scheduler
-to hash the guid.
-<p>It is also expected that the following operator be defined for comparing
-QoS parameters. This comparator function will be used by the scheduler
-queue to determine the most eligible item in the queue.
-<p><tt>QoSComparator_t::operator ()(const QoSDescriptor_t&amp; qos1,</tt>
-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-const QoSDescriptor_t&amp; qos2)</tt>
-<h3>
-<a NAME="DSRTCORBAvsRTEC"></a>Kokyu DSRTCORBA vs Kokyu RTEC</h3>
-Currently we have separate interfaces for DSRTCORBA and RTEC dispatching
-mechanisms. Once we get more use cases and experience, there is a possibility
-of these getting merged in the future. The RTEC related dispatching interface
-is in <tt>Kokyu::Dispatcher (Kokyu.h)</tt> and DSRTCORBA related dispatching
-interface is in <tt>Kokyu::DSRT_Dispatcher (Kokyu_dsrt.h)</tt>
-<h3>
-<a NAME="Status"></a>Current status</h3>
-Kokyu dispatching framework is available as a separate module under <tt><font size=+1>ACE_wrappers/Kokyu</font></tt>
-as part of the <a href="http://deuce.doc.wustl.edu/Download.html">ACE/TAO
-distribution</a>. Note that this module is not dependent on TAO, though
-it is built on top of ACE. The TAO Event Channel uses the Strategy and
-Service Configurator patterns to use configurable dispatching modules.
-A Kokyu based EC dispatching module is available in the <tt><font size=+1>TAO/orbsvcs/orbsvcs/RTKokyuEvent</font></tt>
-module. This module acts as an adapter between the Kokyu dispatcher and
-the RTEC.
-<p>Kokyu scheduling framework is available under the TAO source tree (<tt><font size=+1>TAO/orbsvcs/orbsvcs/Sched</font></tt>).
-<p>An example using the RTEC Kokyu dispatching module is available under
-<tt><font size=+1>TAO/orbsvcs/examples/RtEC/Kokyu</font></tt>.
-<h3>
-<a NAME="Future"></a>Future work</h3>
-
-<ol>
-<li>
-Currently there is no support for timers in the Kokyu dispatching module.
-We plan to do this in the near future.</li>
-
-<li>
-It looks like there is a general structure to the different schedulers.
-May be this can be abstracted using templates or some similar mechanism.</li>
-
-<li>
-Thread sched policy and sched scope are currently being passed explicitly
-from the application to the scheduler. This can be changed later to get
-this information from the ORB. This requires the usage of RTORB and the
-actual values can be set using svc.conf parameters for RT_ORB_Loader.</li>
-
-<br>&nbsp;
-<li>
-See whether the approaches could be extended to multiprocessor systems.</li>
-</ol>
-
-<h3>
-<a NAME="Papers"></a>Papers on Kokyu</h3>
-
-<ol>
-<li>
-Christopher D. Gill, <a href="http://www.cse.wustl.edu/~cdgill/PDF/cdgill_dissertation.pdf">Dissertation:Flexible
-Scheduling in Middleware for Distributed Rate-Based Real-Time Applications</a></li>
-
-<li>
-Christopher D. Gill, David L. Levine, and Douglas C. Schmidt <a href="http://www.cse.wustl.edu/~cdgill/PDF/dynamic.pdf">The
-Design and Performance of a Real-Time CORBA Scheduling Service</a>, Real-Time
-Systems: the International Journal of Time-Critical Computing Systems,
-special issue on Real-Time Middleware, guest editor Wei Zhao, March 2001,
-Vol. 20 No. 2</li>
-
-<li>
-Christopher D. Gill, Douglas C. Schmidt, and Ron Cytron, <a href="http://www.cs.wustl.edu/~schmidt/PDF/embedded_sched.pdf">Multi-Paradigm
-Scheduling for Distributed Real-Time Embedded Computing</a>, IEEE Proceedings
-Special Issue on Modeling and Design of Embedded Systems, Volume 91, Number
-1, January 2003.</li>
-</ol>
-
-</body>
-</html>
diff --git a/Kokyu/KokyuEC.jpg b/Kokyu/KokyuEC.jpg
deleted file mode 100644
index 8be16ef04c3..00000000000
--- a/Kokyu/KokyuEC.jpg
+++ /dev/null
Binary files differ
diff --git a/Kokyu/Kokyu_defs.i b/Kokyu/Kokyu_defs.i
index 50b780ab2c7..a10283c0d7b 100644
--- a/Kokyu/Kokyu_defs.i
+++ b/Kokyu/Kokyu_defs.i
@@ -18,8 +18,8 @@ void Dispatcher_Attributes::sched_scope(int scope)
ACE_INLINE
Reordering_Queue_Attributes::Reordering_Queue_Attributes ()
- :static_bit_field_mask_ (0), // not used
- static_bit_field_shift_ (0), // not used
+ :static_bit_field_mask_ (0), // 2^(10) - 1
+ static_bit_field_shift_ (0), // 10 low order bits
dynamic_priority_max_ (0x7FFFFFFFUL), // 2^31-1
dynamic_priority_offset_ (0x08000000UL) // 15/16th of dynamic prio range
{
diff --git a/Kokyu/Kokyu_dsrt.h b/Kokyu/Kokyu_dsrt.h
index 1c75df12192..ecbcd80d511 100644
--- a/Kokyu/Kokyu_dsrt.h
+++ b/Kokyu/Kokyu_dsrt.h
@@ -10,7 +10,7 @@
#ifndef KOKYU_DSRT_H
#define KOKYU_DSRT_H
-#include /**/ "ace/pre.h"
+#include "ace/pre.h"
#include "ace/Copy_Disabled.h"
//#if !defined (ACE_LACKS_PRAGMA_ONCE)
@@ -173,5 +173,5 @@ namespace Kokyu
#pragma implementation ("Kokyu_dsrt.cpp")
#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
-#include /**/ "ace/post.h"
+#include "ace/post.h"
#endif /* KOKYU_DSRT_H */
diff --git a/Kokyu/kokyu1.jpg b/Kokyu/kokyu1.jpg
deleted file mode 100644
index 094f5535d02..00000000000
--- a/Kokyu/kokyu1.jpg
+++ /dev/null
Binary files differ
diff --git a/Kokyu/kokyu2.jpg b/Kokyu/kokyu2.jpg
deleted file mode 100644
index 2c649bfc754..00000000000
--- a/Kokyu/kokyu2.jpg
+++ /dev/null
Binary files differ
diff --git a/Kokyu/tests/DSRT_MIF/MIF.cpp b/Kokyu/tests/DSRT_MIF/MIF.cpp
index 276271d3b62..0a90aef28d1 100644
--- a/Kokyu/tests/DSRT_MIF/MIF.cpp
+++ b/Kokyu/tests/DSRT_MIF/MIF.cpp
@@ -5,8 +5,6 @@
#include "ace/Sched_Params.h"
#include "ace/Atomic_Op.h"
#include "ace/Synch.h"
-#include "ace/High_Res_Timer.h"
-
#include "Kokyu_dsrt.h"
ACE_Atomic_Op<ACE_SYNCH_MUTEX, long> guid=0;
@@ -48,81 +46,55 @@ public:
MyTask (ACE_Barrier& barrier,
Kokyu::DSRT_Dispatcher<mif_scheduler_traits>* dispatcher,
- mif_scheduler_traits::QoSDescriptor_t& qos,
- int exec_duration)
+ mif_scheduler_traits::QoSDescriptor_t& qos)
:barrier_ (barrier),
dispatcher_ (dispatcher),
qos_ (qos),
- guid_ (++guid),
- exec_duration_ (exec_duration)
+ guid_ (++guid)
{}
- int svc (void);
+ int svc (void)
+ {
+ ACE_hthread_t thr_handle;
+ ACE_Thread::self (thr_handle);
+ int prio;
+
+ ACE_DEBUG ((LM_DEBUG, "(%t|%T): task activated\n"));
+ ACE_ASSERT (dispatcher_ != 0);
+ barrier_.wait ();
+ prio = dispatcher_->schedule (guid_, qos_);
+
+ if (ACE_Thread::getprio (thr_handle, prio) == -1)
+ {
+ if (errno == ENOTSUP)
+ {
+ ACE_DEBUG((LM_DEBUG,
+ ACE_TEXT ("getprio not supported on this platform\n")
+ ));
+ return 0;
+ }
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("getprio failed")));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "(%t) Thread prio=%d, guid=%d, qos_.importance=%d \n", prio, guid_, qos_.importance_));
+ dispatcher_->cancel_schedule (this->guid_);
+ return 0;
+ }
- private:
+private:
ACE_Barrier& barrier_;
Kokyu::DSRT_Dispatcher<mif_scheduler_traits>* dispatcher_;
mif_scheduler_traits::QoSDescriptor_t qos_;
mif_scheduler_traits::Guid_t guid_;
- int exec_duration_;
};
-int MyTask::svc (void)
-{
- ACE_hthread_t thr_handle;
- ACE_Thread::self (thr_handle);
- int prio;
-
- ACE_DEBUG ((LM_DEBUG, "(%t|%T): task activated\n"));
- ACE_ASSERT (dispatcher_ != 0);
-
- prio = dispatcher_->schedule (guid_, qos_);
-
- barrier_.wait ();
-
- long prime_number = 9619899;
-
- ACE_High_Res_Timer timer;
- ACE_Time_Value elapsed_time;
- ACE_Time_Value seconds_tracker(0,0);
-
- ACE_Time_Value one_second (1,0);
- ACE_Time_Value compute_count_down_time (exec_duration_, 0);
- ACE_Countdown_Time compute_count_down (&compute_count_down_time);
-
- timer.start ();
- while (compute_count_down_time > ACE_Time_Value::zero)
- {
- ACE::is_prime (prime_number,
- 2,
- prime_number / 2);
-
- compute_count_down.update ();
- timer.stop ();
- timer.elapsed_time (elapsed_time);
- seconds_tracker += elapsed_time;
- if (seconds_tracker >= one_second)
- {
- seconds_tracker.set (0,0);
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%t) Currently running guid=%d")
- ACE_TEXT (", qos_.importance=%d \n"),
- guid_, qos_.importance_));
- }
- timer.reset ();
- timer.start ();
- }
-
- dispatcher_->cancel_schedule (this->guid_);
- return 0;
-}
-
int main (int,char**)
{
Kokyu::DSRT_ConfigInfo config_info;
// config_info.scheduler_type_ = Kokyu::SCHED_MIF;
- config_info.impl_type_ = Kokyu::DSRT_OS_BASED;
ACE_Barrier barrier (3);
@@ -142,11 +114,11 @@ int main (int,char**)
qos1.importance_ = 1;
qos2.importance_ = 2;
- qos3.importance_ = 3;
+ qos3.importance_ = 1;
- MyTask mytask1 (barrier, disp.get (), qos1, 15);
- MyTask mytask2 (barrier, disp.get (), qos2, 6);
- MyTask mytask3 (barrier, disp.get (), qos3, 4);
+ MyTask mytask1 (barrier, disp.get (), qos1);
+ MyTask mytask2 (barrier, disp.get (), qos2);
+ MyTask mytask3 (barrier, disp.get (), qos3);
long flags = THR_BOUND | THR_SCHED_FIFO;
@@ -174,8 +146,12 @@ int main (int,char**)
"EC (%P|%t) cannot activate task\n"));
}
+ ACE_OS::sleep (5);
+
disp->shutdown ();
+ ACE_OS::sleep (5);
+
ACE_DEBUG ((LM_DEBUG, "main thread exiting\n"));
return 0;
diff --git a/Kokyu/tests/DSRT_MIF/Makefile b/Kokyu/tests/DSRT_MIF/Makefile
index 3a122424056..8304cf22d55 100644
--- a/Kokyu/tests/DSRT_MIF/Makefile
+++ b/Kokyu/tests/DSRT_MIF/Makefile
@@ -28,8 +28,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
# Local targets
#----------------------------------------------------------------------------
-#CPPFLAGS += -I$(ACE_ROOT)/Kokyu -DKOKYU_DSRT_LOGGING
-CPPFLAGS += -I$(ACE_ROOT)/Kokyu
+CPPFLAGS += -I$(ACE_ROOT)/Kokyu -DKOKYU_DSRT_LOGGING
LDFLAGS += -lKokyu
#----------------------------------------------------------------------------
diff --git a/Kokyu/tests/EDF/README b/Kokyu/tests/EDF/README
deleted file mode 100644
index 4f209605e14..00000000000
--- a/Kokyu/tests/EDF/README
+++ /dev/null
@@ -1,24 +0,0 @@
-This example is a very simple example, showing how to use the Kokyu
-dispatcher to dispatch command objects in a EDF manner. The test
-configures the Kokyu dispatcher with a single EDF lane. Typically this
-would be done by an EDF scheduler which assigns priorities to tasks
-based on the deadlines for tasks. To ensure that the command objects
-enqueued in the dispatcher are dispatched in the correct order, we
-enqueue the command objects and *then* activate the dispatcher. Only
-when the dispatcher is activated, the thread watching each dispatch
-queue starts running.
-
-To run this example,
-
-./test -p<fifo|rr|other>
-
-The following is the expected output
-
-Deadline of command1 is 1065966081
-Deadline of command2 is 1065966131
-Deadline of command3 is 1065966031
-command 3 executed
-command 1 executed
-command 2 executed
-
-Note that the deadlines are absolute deadlines.
diff --git a/Kokyu/tests/EDF/test.cpp b/Kokyu/tests/EDF/test.cpp
index 7844f4cbf4a..8b8882f88e3 100644
--- a/Kokyu/tests/EDF/test.cpp
+++ b/Kokyu/tests/EDF/test.cpp
@@ -19,14 +19,9 @@ public:
:Kokyu::Dispatch_Command(1),id_(i)
{
}
- int execute();
-private:
- int id_;
-};
-
-int MyCommand::execute()
-{
+ int execute()
+ {
ACE_hthread_t thr_handle;
ACE_Thread::self (thr_handle);
int prio;
@@ -50,7 +45,12 @@ int MyCommand::execute()
ACE_TEXT (("(%t|prio=%d) | command %d executed\n")),
prio, id_));
return 0;
-}
+ }
+
+private:
+ int id_;
+};
+
int main (int argc, char** argv)
{
@@ -113,17 +113,12 @@ int main (int argc, char** argv)
qos3.preemption_priority_ = 1;
qos3.deadline_ = deadline3;
- ACE_DEBUG ((LM_DEBUG, "Deadline of command1 is %d\n",
- qos1.deadline_.sec ()));
disp->dispatch (&cmd1, qos1);
-
- ACE_DEBUG ((LM_DEBUG, "Deadline of command2 is %d\n",
- qos2.deadline_.sec ()));
+ printf("inserted 1\n");
disp->dispatch (&cmd2, qos2);
-
- ACE_DEBUG ((LM_DEBUG, "Deadline of command3 is %d\n",
- qos3.deadline_.sec ()));
+ printf("inserted 2\n");
disp->dispatch (&cmd3, qos3);
+ printf("inserted 3\n");
disp->activate ();
diff --git a/Kokyu/tests/FIFO/README b/Kokyu/tests/FIFO/README
deleted file mode 100644
index 5700e4a5038..00000000000
--- a/Kokyu/tests/FIFO/README
+++ /dev/null
@@ -1,24 +0,0 @@
-This example is a very simple example, showing how to use the Kokyu
-dispatcher to dispatch command objects in a FIFO manner. The test
-configures the Kokyu dispatcher with 3 FIFO lanes, each having a
-different priority. Typically this would be done by an RMS scheduler
-which assigns priorities to tasks based on the rate of tasks. To
-ensure that the command objects enqueued in the dispatcher are
-dispatched in the correct order, we enqueue the command objects and
-*then* activate the dispatcher. Only when the dispatcher is activated,
-the thread watching each dispatch queue starts running.
-
-To run this example,
-
-./test -p<fifo|rr|other>
-
-The following is the expected output
-
-Priority of command1 is 2
-Priority of command2 is 3
-Priority of command3 is 1
-command 3 executed
-command 1 executed
-command 2 executed
-
-Note that a lower number means a higher priority for the task.
diff --git a/Kokyu/tests/FIFO/test.cpp b/Kokyu/tests/FIFO/test.cpp
index c61f14fdcfd..fab7f34698c 100644
--- a/Kokyu/tests/FIFO/test.cpp
+++ b/Kokyu/tests/FIFO/test.cpp
@@ -18,14 +18,9 @@ public:
:Kokyu::Dispatch_Command(1),id_(i)
{
}
- int execute ();
-private:
- int id_;
-};
-
-int MyCommand::execute()
-{
+ int execute()
+ {
ACE_hthread_t thr_handle;
ACE_Thread::self (thr_handle);
int prio;
@@ -49,7 +44,12 @@ int MyCommand::execute()
ACE_TEXT (("(%t|prio=%d) | command %d executed\n")),
prio, id_));
return 0;
-}
+ }
+
+private:
+ int id_;
+};
+
int main (int argc, char** argv)
{
diff --git a/Makefile b/Makefile
index d2f57a9af60..85e070d799b 100644
--- a/Makefile
+++ b/Makefile
@@ -73,42 +73,13 @@ CORE_DIRS= \
TAO/orbsvcs/orbsvcs \
TAO/orbsvcs/Naming_Service
-CIAO_CORE_DIRS= \
- ace \
- apps/gperf/src \
- ACEXML \
- Kokyu \
- TAO/tao \
- TAO/TAO_IDL \
- TAO/orbsvcs/orbsvcs \
- TAO/orbsvcs/Naming_Service \
- TAO/CIAO/ciao \
- TAO/CIAO/tools
-
-CIAO_MPC_DIRS= \
- TAO/CIAO/ciao \
- TAO/CIAO/tools
-
-.PHONY: CIAO_Core MPC_Make Core reverseclean
+.PHONY: Core reverseclean
Core:
@for dir in $(CORE_DIRS); \
do \
$(MAKE) -C $$dir; \
done
-CIAO_Core: MPC_Make
- @for dir in $(CIAO_CORE_DIRS); \
- do \
- $(MAKE) -C $$dir; \
- done
-
-MPC_Make:
- @for dir in $(CIAO_MPC_DIRS); \
- do \
- cd $(ACE_ROOT)/$$dir && $(ACE_ROOT)/bin/mwc.pl; \
- done
- cd $(ACE_ROOT)
-
reverseclean:
@$(ACE_ROOT)/bin/reverse_clean $(DIRS)
diff --git a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp
index 864bb160a35..446a702cef9 100644
--- a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp
+++ b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/Composition.hpp
@@ -50,6 +50,7 @@ namespace CCF
Category::Value category,
ScopePtr const& scope)
: Declaration (name, scope),
+ Scope (name, scope),
category_ (category)
{
type_info (static_type_info ());
diff --git a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp
index d47bfb3188b..63f9047aae7 100644
--- a/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp
+++ b/TAO/CIAO/CCF/CCF/CIDL/SyntaxTree/HomeExecutor.hpp
@@ -30,7 +30,8 @@ namespace CCF
ScopedName implements,
SimpleName manages)
: Declaration (name, scope),
- implements_ (table (), implements),
+ Scope (name, scope),
+ implements_ (scope->table (), implements),
manages_ (manages)
{
type_info (static_type_info ());
diff --git a/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp b/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp
index 33716bd726b..7cc7f94e4c3 100644
--- a/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp
+++ b/TAO/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp
@@ -28,11 +28,10 @@ namespace CCF
map (typeid (SyntaxTree::Composition), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Composition> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp b/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp
index 44340ad94ee..17e2f46dc1e 100644
--- a/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp
+++ b/TAO/CIAO/CCF/CCF/CIDL/Traversal/HomeExecutor.hpp
@@ -28,11 +28,11 @@ namespace CCF
map (typeid (SyntaxTree::HomeExecutor), this);
}
- virtual bool
+
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::HomeExecutor> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp b/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp
index 3f428462745..e8dcdea0ac3 100644
--- a/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp
+++ b/TAO/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp
@@ -177,7 +177,7 @@ namespace Indentation
{
hold_.push_back (c);
- int_type result (traits_type::eof ());
+ int_type result;
while (!hold_.empty ())
{
diff --git a/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp b/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp
index f829301caaf..239fa962c75 100644
--- a/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp
+++ b/TAO/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp
@@ -10,9 +10,6 @@
#include "CCF/CompilerElements/TokenStream.hpp"
-// tmp
-// #include <iostream>
-
namespace CCF
{
//@@ this code is experimental and needs cleaning
@@ -76,7 +73,6 @@ namespace CCF
}
case '#':
{
- // std::cerr << "see \'#\'; state is " << state << std::endl;
if (state != PREPROCESSING) break;
return handle_preprocessor_token ();
}
@@ -98,7 +94,7 @@ namespace CCF
char_type c = to_char_type (i);
- //@@ '\n' won't work on MS
+ //@@ '\n' won't work on MShit
switch (c)
{
case '\n': return underflow (); //skip it
@@ -130,7 +126,7 @@ namespace CCF
int_type
handle_preprocessor_token ()
{
- // std::cerr << "handle_preprocessor_token" << std::endl;
+ //std::cerr << "handle_preprocessor_token" << std::endl;
skip_white_space ();
diff --git a/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp b/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp
index b977aff35cc..653bfa639de 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp
@@ -32,7 +32,6 @@ namespace CCF
keyword_table_.insert ("out" );
keyword_table_.insert ("sinclude" );
keyword_table_.insert ("supports" );
- keyword_table_.insert ("typedef" );
keyword_table_.insert ("typeid" );
keyword_table_.insert ("typeprefix");
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive b/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive
index 81827acb354..648efd94e18 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive
+++ b/TAO/CIAO/CCF/CCF/IDL2/Makefile.archive
@@ -21,7 +21,6 @@ translated_units := SyntaxTree/BuiltIn.o \
SyntaxTree/Operation.o \
SyntaxTree/Translation.o \
SyntaxTree/TypeId.o \
- SyntaxTree/Typedef.o \
SyntaxTree/ValueType.o
translated_units += Traversal/BuiltIn.o \
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp b/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp
index d5831b90013..6a8bcd6e84a 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Parser.cpp
@@ -44,7 +44,6 @@ namespace CCF
OUT ("out"),
SINCLUDE ("sinclude"),
SUPPORTS ("supports"),
- TYPEDEF ("typedef"),
TYPEID ("typeid"),
TYPEPREFIX ("typeprefix"),
@@ -56,22 +55,39 @@ namespace CCF
RPAREN (")"),
SEMI (";"),
+ // Include
+ //
+ //
+ act_include_begin (f.include (), &SemanticAction::Include::begin),
+ act_include_end (f.include (), &SemanticAction::Include::end),
- // Attribute
+ // TypeId
//
//
- act_attribute_type (
- f.attribute (), &SemanticAction::Attribute::type),
+ act_type_id_begin (f.type_id (), &SemanticAction::TypeId::begin),
+ act_type_id_end (f.type_id (), &SemanticAction::TypeId::end),
- act_attribute_name (
- f.attribute (), &SemanticAction::Attribute::name),
+ // TypePrefix
+ //
+ //
+ act_type_prefix_begin (f.type_prefix (),
+ &SemanticAction::TypePrefix::begin),
+ act_type_prefix_end (f.type_prefix (),
+ &SemanticAction::TypePrefix::end),
- // Include
+ // Module
//
//
- act_include_begin (f.include (), &SemanticAction::Include::begin),
- act_include_end (f.include (), &SemanticAction::Include::end),
+ act_module_begin (f.module (), &SemanticAction::Module::begin),
+
+ act_module_open_scope (
+ f.module (), &SemanticAction::Scope::open_scope),
+
+ act_module_close_scope (
+ f.module (), &SemanticAction::Scope::close_scope),
+
+ act_module_end (f.module (), &SemanticAction::Module::end),
// Interface
@@ -97,20 +113,14 @@ namespace CCF
act_interface_end (f.interface (), &SemanticAction::Interface::end),
-
- // Module
+ // Attribute
//
//
- act_module_begin (f.module (), &SemanticAction::Module::begin),
-
- act_module_open_scope (
- f.module (), &SemanticAction::Scope::open_scope),
-
- act_module_close_scope (
- f.module (), &SemanticAction::Scope::close_scope),
-
- act_module_end (f.module (), &SemanticAction::Module::end),
+ act_attribute_type (
+ f.attribute (), &SemanticAction::Attribute::type),
+ act_attribute_name (
+ f.attribute (), &SemanticAction::Attribute::name),
// Operation
//
@@ -121,37 +131,8 @@ namespace CCF
act_operation_parameter (
this, &Parser::act_operation_parameter_core),
- act_operation_end (f.operation (), &SemanticAction::Operation::end),
-
-
- // Typedef
- //
- //
- act_typedef_begin (
- f.typedef_ (), &SemanticAction::Typedef::begin),
-
- act_typedef_declarator (
- f.typedef_ (), &SemanticAction::Typedef::declarator),
-
- act_typedef_end (
- f.typedef_ (), &SemanticAction::Typedef::end),
+ act_operation_end (f.operation (), &SemanticAction::Operation::end)
-
- // TypeId
- //
- //
- act_type_id_begin (f.type_id (), &SemanticAction::TypeId::begin),
- act_type_id_end (f.type_id (), &SemanticAction::TypeId::end),
-
-
- // TypePrefix
- //
- //
- act_type_prefix_begin (f.type_prefix (),
- &SemanticAction::TypePrefix::begin),
-
- act_type_prefix_end (f.type_prefix (),
- &SemanticAction::TypePrefix::end)
{
language =
guard
@@ -180,13 +161,12 @@ namespace CCF
declaration =
abstract_type_decl
- | extension
| local_type_decl
| module_decl
- | typedef_
+ | unconstrained_interface_decl
+ | extension
| type_id
| type_prefix
- | unconstrained_interface_decl
;
type_id =
@@ -423,30 +403,6 @@ namespace CCF
>> simple_identifier
)[act_operation_parameter]
;
-
-
- // typedef
- //
- //
-
- typedef_ =
- TYPEDEF
- >> identifier[act_typedef_begin]
- >> typedef_declarator_list
- >> SEMI[act_typedef_end]
- ;
-
- typedef_type_spec =
- identifier[act_typedef_begin]
- ;
-
- typedef_declarator_list =
- identifier[act_typedef_declarator]
- >> *(
- COMMA
- >> identifier[act_typedef_declarator]
- )
- ;
}
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp b/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp
index 6cb5497ec9a..aa74109512b 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Parser.hpp
@@ -311,7 +311,6 @@ namespace CCF
KeywordParser OUT;
KeywordParser SINCLUDE;
KeywordParser SUPPORTS;
- KeywordParser TYPEDEF;
KeywordParser TYPEID;
KeywordParser TYPEPREFIX;
@@ -332,6 +331,7 @@ namespace CCF
//
// Language
//
+
typedef
Parsing::Rule
Rule;
@@ -344,6 +344,9 @@ namespace CCF
Rule include_decl;
Rule system_include_decl;
+ Rule type_id;
+ Rule type_prefix;
+
Rule module_decl;
Rule abstract_type_decl;
@@ -364,13 +367,6 @@ namespace CCF
Rule operation_parameter_list;
Rule operation_parameter;
- Rule typedef_;
- Rule typedef_type_spec;
- Rule typedef_declarator_list;
-
- Rule type_id;
- Rule type_prefix;
-
public:
Parser (CompilerElements::Context& context,
Diagnostic::Stream& dout,
@@ -388,34 +384,62 @@ namespace CCF
//
// Semantic actions
//
+
typedef
NoArgAction<SemanticAction::Scope>
ScopeAction;
+ // Include
+ //
+ //
+ OneArgAction<StringLiteralPtr, SemanticAction::Include>
+ act_include_begin;
+
+ NoArgAction<SemanticAction::Include>
+ act_include_end;
- // Attribute
+ // TypeId
//
//
- OneArgAction<IdentifierPtr, SemanticAction::Attribute>
- act_attribute_type;
+ TwoArgAction<IdentifierPtr,
+ StringLiteralPtr,
+ SemanticAction::TypeId>
+ act_type_id_begin;
- OneArgAction<SimpleIdentifierPtr, SemanticAction::Attribute>
- act_attribute_name;
+ NoArgAction<SemanticAction::TypeId>
+ act_type_id_end;
+ // TypePrefix
+ //
+ //
+ TwoArgAction<IdentifierPtr,
+ StringLiteralPtr,
+ SemanticAction::TypePrefix>
+ act_type_prefix_begin;
- // Include
+ NoArgAction<SemanticAction::TypePrefix>
+ act_type_prefix_end;
+
+ // Module
//
//
- OneArgAction<StringLiteralPtr, SemanticAction::Include>
- act_include_begin;
- NoArgAction<SemanticAction::Include>
- act_include_end;
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Module>
+ act_module_begin;
+
+ ScopeAction
+ act_module_open_scope;
+
+ ScopeAction
+ act_module_close_scope;
+ NoArgAction<SemanticAction::Module>
+ act_module_end;
// Interface
//
//
+
OneArgAction<SimpleIdentifierPtr, SemanticAction::Interface>
act_abstract_interface_begin;
@@ -437,22 +461,14 @@ namespace CCF
NoArgAction<SemanticAction::Interface>
act_interface_end;
-
- // Module
+ // Attribute
//
//
- OneArgAction<SimpleIdentifierPtr, SemanticAction::Module>
- act_module_begin;
-
- ScopeAction
- act_module_open_scope;
-
- ScopeAction
- act_module_close_scope;
-
- NoArgAction<SemanticAction::Module>
- act_module_end;
+ OneArgAction<IdentifierPtr, SemanticAction::Attribute>
+ act_attribute_type;
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Attribute>
+ act_attribute_name;
// Operation
//
@@ -494,43 +510,6 @@ namespace CCF
NoArgAction<SemanticAction::Operation>
act_operation_end;
-
-
- // Typedef
- //
- //
- OneArgAction<IdentifierPtr, SemanticAction::Typedef>
- act_typedef_begin;
-
- OneArgAction<SimpleIdentifierPtr, SemanticAction::Typedef>
- act_typedef_declarator;
-
- NoArgAction<SemanticAction::Typedef>
- act_typedef_end;
-
-
- // TypeId
- //
- //
- TwoArgAction<IdentifierPtr,
- StringLiteralPtr,
- SemanticAction::TypeId>
- act_type_id_begin;
-
- NoArgAction<SemanticAction::TypeId>
- act_type_id_end;
-
-
- // TypePrefix
- //
- //
- TwoArgAction<IdentifierPtr,
- StringLiteralPtr,
- SemanticAction::TypePrefix>
- act_type_prefix_begin;
-
- NoArgAction<SemanticAction::TypePrefix>
- act_type_prefix_end;
};
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp
index cc8a27311f9..429bcec2f37 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction.hpp
@@ -11,7 +11,6 @@
#include "CCF/IDL2/SemanticAction/Interface.hpp"
#include "CCF/IDL2/SemanticAction/Module.hpp"
#include "CCF/IDL2/SemanticAction/Operation.hpp"
-#include "CCF/IDL2/SemanticAction/Typedef.hpp"
#include "CCF/IDL2/SemanticAction/TypeId.hpp"
#include "CCF/IDL2/SemanticAction/Factory.hpp"
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp
index c19a7ae1f37..6d566d6dd3b 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp
@@ -11,12 +11,11 @@ namespace CCF
{
namespace SemanticAction
{
- class Attribute;
class Include;
- class Interface;
class Module;
+ class Interface;
+ class Attribute;
class Operation;
- class Typedef;
class TypeId;
class TypePrefix;
@@ -29,29 +28,26 @@ namespace CCF
virtual
~Factory () throw () {}
- virtual Attribute&
- attribute () = 0;
-
virtual Include&
include () = 0;
- virtual Interface&
- interface () = 0;
+ virtual TypeId&
+ type_id () = 0;
+
+ virtual TypePrefix&
+ type_prefix () = 0;
virtual Module&
module () = 0;
- virtual Operation&
- operation () = 0;
-
- virtual Typedef&
- typedef_ () = 0;
+ virtual Interface&
+ interface () = 0;
- virtual TypeId&
- type_id () = 0;
+ virtual Attribute&
+ attribute () = 0;
- virtual TypePrefix&
- type_prefix () = 0;
+ virtual Operation&
+ operation () = 0;
};
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp
index 0d0f5a49074..e6f9d1c56fd 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp
@@ -7,13 +7,12 @@
#include "CCF/IDL2/SemanticAction/Factory.hpp"
-#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp"
#include "CCF/IDL2/SemanticAction/Impl/Include.hpp"
-#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp"
#include "CCF/IDL2/SemanticAction/Impl/Module.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp"
#include "CCF/IDL2/SemanticAction/Impl/Operation.hpp"
-#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp"
-#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp"
namespace CCF
{
@@ -40,21 +39,14 @@ namespace CCF
scope_ (r->scope ()),
- attribute_ (trace_, scope_),
include_ (trace_, *this, r, scope_),
- interface_ (trace_, scope_),
- module_ (trace_, scope_),
- operation_ (trace_, scope_),
- typedef__ (trace_, scope_),
type_id_ (trace_, scope_),
- type_prefix_ (trace_, scope_)
- {
- }
-
- virtual SemanticAction::Attribute&
- attribute ()
+ type_prefix_ (trace_, scope_),
+ module_ (trace_, scope_),
+ interface_ (trace_, scope_),
+ attribute_ (trace_, scope_),
+ operation_ (trace_, scope_)
{
- return attribute_;
}
virtual SemanticAction::Include&
@@ -63,40 +55,40 @@ namespace CCF
return include_;
}
- virtual SemanticAction::Interface&
- interface ()
+ virtual SemanticAction::TypeId&
+ type_id ()
{
- return interface_;
+ return type_id_;
}
- virtual SemanticAction::Module&
- module ()
+ virtual SemanticAction::TypePrefix&
+ type_prefix ()
{
- return module_;
+ return type_prefix_;
}
- virtual SemanticAction::Operation&
- operation ()
+ virtual SemanticAction::Module&
+ module ()
{
- return operation_;
+ return module_;
}
- virtual SemanticAction::Typedef&
- typedef_ ()
+ virtual SemanticAction::Interface&
+ interface ()
{
- return typedef__;
+ return interface_;
}
- virtual SemanticAction::TypeId&
- type_id ()
+ virtual SemanticAction::Attribute&
+ attribute ()
{
- return type_id_;
+ return attribute_;
}
- virtual SemanticAction::TypePrefix&
- type_prefix ()
+ virtual SemanticAction::Operation&
+ operation ()
{
- return type_prefix_;
+ return operation_;
}
protected:
@@ -105,14 +97,13 @@ namespace CCF
SyntaxTree::ScopePtr scope_;
SyntaxTree::TranslationRegionPtr region_;
- Attribute attribute_;
Include include_;
- Interface interface_;
- Module module_;
- Operation operation_;
- Typedef typedef__;
TypeId type_id_;
TypePrefix type_prefix_;
+ Module module_;
+ Interface interface_;
+ Attribute attribute_;
+ Operation operation_;
};
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
index 05306d59113..8351d30a837 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
@@ -115,8 +115,6 @@ namespace CCF
if (!passed) throw IncompatibleType (d->declaration_class ());
- //@@ could instead check for XXDef
- //
return d->dynamic_type<TypeDecl> ()->defined ();
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp
deleted file mode 100644
index 6298527032f..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// file : CCF/IDL2/SemanticAction/Impl/Typedef.cpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SemanticAction
- {
- namespace Impl
- {
- }
- }
- }
-}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp
deleted file mode 100644
index 95c1403ae43..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// file : CCF/IDL2/SemanticAction/Impl/Typedef.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
-#define CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
-
-#include "CCF/IDL2/SyntaxTree/Typedef.hpp"
-#include "CCF/IDL2/SemanticAction/Typedef.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SemanticAction
- {
- namespace Impl
- {
- //
- //
- //
- class Typedef : public virtual SemanticAction::Typedef
- {
- public:
- virtual
- ~Typedef () throw () {}
-
- Typedef (bool trace, SyntaxTree::ScopePtr& current)
- : trace_ (trace),
- scope_ (current),
- type_ ("::") //@@ this is dirty
- {
- }
-
- virtual void
- begin (IdentifierPtr const& id)
- {
- if (trace_) cerr << "typedef " << id << endl;
-
- using namespace SyntaxTree;
-
- Name name (id->lexeme ());
-
- struct Predicate : public DeclarationTable::ResolvePredicate
- {
- virtual bool
- test (DeclarationPtr const& d) const throw ()
- {
- return d->is_a<TypeDecl> ();
- }
- } p;
-
- try
- {
- type_ = scope_->table ().resolve (
- name,
- scope_->name (),
- scope_->peek_order (),
- p);
- }
- catch (DeclarationTable::NameNotFound const&)
- {
- cerr << "error: invalid typedef declaration" << endl;
- cerr << "no type with name \'"
- << name << "\' visible from scope \'"
- << scope_->name () << "\'" << endl;
- }
- catch (DeclarationTable::PredicateNotMet const&)
- {
- cerr << "error: invalid typedef declaration" << endl;
- cerr << "no type with name \'"
- << name << "\' visible from scope \'"
- << scope_->name () << "\'" << endl;
- }
- }
-
- virtual void
- declarator (SimpleIdentifierPtr const& id)
- {
- if (trace_) cerr << " " << id << endl;
-
- using namespace SyntaxTree;
-
- if (type_ != ScopedName ("::"))
- {
- TypedefDeclPtr typedef_ (
- new TypedefDecl (SimpleName (id->lexeme ()),
- type_,
- scope_));
-
-
- scope_->insert (typedef_);
- }
- }
-
- virtual void
- end ()
- {
- if (trace_) cerr << "end" << endl;
-
- // Indicate that we are done.
- //
- type_ = SyntaxTree::ScopedName ("::");
- }
-
- private:
- bool trace_;
- SyntaxTree::ScopePtr& scope_;
- SyntaxTree::ScopedName type_;
- };
- }
- }
- }
-}
-
-#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp
deleted file mode 100644
index 6cf8f0c8cff..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// file : CCF/IDL2/SemanticAction/Typedef.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
-#define CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
-
-#include "CCF/IDL2/SemanticAction/Elements.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SemanticAction
- {
- //
- //
- //
- class Typedef
- {
- public:
- virtual
- ~Typedef () throw () {}
-
- virtual void
- begin (IdentifierPtr const& id) = 0;
-
- virtual void
- declarator (SimpleIdentifierPtr const& id) = 0;
-
- virtual void
- end () = 0;
- };
- }
- }
-}
-
-#endif // CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp
index 7a81f72daac..c52182a747e 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree.hpp
@@ -11,7 +11,6 @@
#include "CCF/IDL2/SyntaxTree/Module.hpp"
#include "CCF/IDL2/SyntaxTree/Operation.hpp"
#include "CCF/IDL2/SyntaxTree/Translation.hpp"
-#include "CCF/IDL2/SyntaxTree/Typedef.hpp"
#include "CCF/IDL2/SyntaxTree/TypeId.hpp"
#include "CCF/IDL2/SyntaxTree/ValueType.hpp"
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp
index f1ffa06fba0..a21a1ba2bc1 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp
@@ -25,7 +25,11 @@ namespace CCF
virtual
~BuiltInTypeDef () throw () {}
- BuiltInTypeDef ()
+ BuiltInTypeDef (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ TypeDef (name, scope)
{
type_info (static_type_info ());
}
@@ -58,7 +62,10 @@ namespace CCF
~Object () throw () {}
Object (ScopePtr const& scope)
- : Declaration (SimpleName ("Object"), scope)
+ : Declaration (SimpleName ("Object"), scope),
+ TypeDecl (SimpleName ("Object"), scope),
+ TypeDef (SimpleName ("Object"), scope),
+ BuiltInTypeDef (SimpleName ("Object"), scope)
{
type_info (static_type_info ());
}
@@ -91,7 +98,10 @@ namespace CCF
~ValueBase () throw () {}
ValueBase (ScopePtr const& scope)
- : Declaration (SimpleName ("ValueBase"), scope)
+ : Declaration (SimpleName ("ValueBase"), scope),
+ TypeDecl (SimpleName ("ValueBase"), scope),
+ TypeDef (SimpleName ("ValueBase"), scope),
+ BuiltInTypeDef (SimpleName ("ValueBase"), scope)
{
type_info (static_type_info ());
}
@@ -124,7 +134,10 @@ namespace CCF
~Any () throw () {}
Any (ScopePtr const& scope)
- : Declaration (SimpleName ("any"), scope)
+ : Declaration (SimpleName ("any"), scope),
+ TypeDecl (SimpleName ("any"), scope),
+ TypeDef (SimpleName ("any"), scope),
+ BuiltInTypeDef (SimpleName ("any"), scope)
{
type_info (static_type_info ());
}
@@ -157,7 +170,10 @@ namespace CCF
~Boolean () throw () {}
Boolean (ScopePtr const& scope)
- : Declaration (SimpleName ("boolean"), scope)
+ : Declaration (SimpleName ("boolean"), scope),
+ TypeDecl (SimpleName ("boolean"), scope),
+ TypeDef (SimpleName ("boolean"), scope),
+ BuiltInTypeDef (SimpleName ("boolean"), scope)
{
type_info (static_type_info ());
}
@@ -190,7 +206,10 @@ namespace CCF
~Char () throw () {}
Char (ScopePtr const& scope)
- : Declaration (SimpleName ("char"), scope)
+ : Declaration (SimpleName ("char"), scope),
+ TypeDecl (SimpleName ("char"), scope),
+ TypeDef (SimpleName ("char"), scope),
+ BuiltInTypeDef (SimpleName ("char"), scope)
{
type_info (static_type_info ());
}
@@ -223,7 +242,10 @@ namespace CCF
~Double () throw () {}
Double (ScopePtr const& scope)
- : Declaration (SimpleName ("double"), scope)
+ : Declaration (SimpleName ("double"), scope),
+ TypeDecl (SimpleName ("double"), scope),
+ TypeDef (SimpleName ("double"), scope),
+ BuiltInTypeDef (SimpleName ("double"), scope)
{
type_info (static_type_info ());
}
@@ -256,7 +278,10 @@ namespace CCF
~Float () throw () {}
Float (ScopePtr const& scope)
- : Declaration (SimpleName ("float"), scope)
+ : Declaration (SimpleName ("float"), scope),
+ TypeDecl (SimpleName ("float"), scope),
+ TypeDef (SimpleName ("float"), scope),
+ BuiltInTypeDef (SimpleName ("float"), scope)
{
type_info (static_type_info ());
}
@@ -289,7 +314,10 @@ namespace CCF
~Long () throw () {}
Long (ScopePtr const& scope)
- : Declaration (SimpleName ("long"), scope)
+ : Declaration (SimpleName ("long"), scope),
+ TypeDecl (SimpleName ("long"), scope),
+ TypeDef (SimpleName ("long"), scope),
+ BuiltInTypeDef (SimpleName ("long"), scope)
{
type_info (static_type_info ());
}
@@ -322,7 +350,10 @@ namespace CCF
~LongDouble () throw () {}
LongDouble (ScopePtr const& scope)
- : Declaration (SimpleName ("long double"), scope)
+ : Declaration (SimpleName ("long double"), scope),
+ TypeDecl (SimpleName ("long double"), scope),
+ TypeDef (SimpleName ("long double"), scope),
+ BuiltInTypeDef (SimpleName ("long double"), scope)
{
type_info (static_type_info ());
}
@@ -355,7 +386,10 @@ namespace CCF
~LongLong () throw () {}
LongLong (ScopePtr const& scope)
- : Declaration (SimpleName ("long long"), scope)
+ : Declaration (SimpleName ("long long"), scope),
+ TypeDecl (SimpleName ("long long"), scope),
+ TypeDef (SimpleName ("long long"), scope),
+ BuiltInTypeDef (SimpleName ("long long"), scope)
{
type_info (static_type_info ());
}
@@ -388,7 +422,10 @@ namespace CCF
~Octet () throw () {}
Octet (ScopePtr const& scope)
- : Declaration (SimpleName ("octet"), scope)
+ : Declaration (SimpleName ("octet"), scope),
+ TypeDecl (SimpleName ("octet"), scope),
+ TypeDef (SimpleName ("octet"), scope),
+ BuiltInTypeDef (SimpleName ("octet"), scope)
{
type_info (static_type_info ());
}
@@ -421,7 +458,10 @@ namespace CCF
~Short () throw () {}
Short (ScopePtr const& scope)
- : Declaration (SimpleName ("short"), scope)
+ : Declaration (SimpleName ("short"), scope),
+ TypeDecl (SimpleName ("short"), scope),
+ TypeDef (SimpleName ("short"), scope),
+ BuiltInTypeDef (SimpleName ("short"), scope)
{
type_info (static_type_info ());
}
@@ -454,7 +494,10 @@ namespace CCF
~String () throw () {}
String (ScopePtr const& scope)
- : Declaration (SimpleName ("string"), scope)
+ : Declaration (SimpleName ("string"), scope),
+ TypeDecl (SimpleName ("string"), scope),
+ TypeDef (SimpleName ("string"), scope),
+ BuiltInTypeDef (SimpleName ("string"), scope)
{
type_info (static_type_info ());
}
@@ -487,7 +530,10 @@ namespace CCF
~UnsignedLong () throw () {}
UnsignedLong (ScopePtr const& scope)
- : Declaration (SimpleName ("unsigned long"), scope)
+ : Declaration (SimpleName ("unsigned long"), scope),
+ TypeDecl (SimpleName ("unsigned long"), scope),
+ TypeDef (SimpleName ("unsigned long"), scope),
+ BuiltInTypeDef (SimpleName ("unsigned long"), scope)
{
type_info (static_type_info ());
}
@@ -520,7 +566,10 @@ namespace CCF
~UnsignedLongLong () throw () {}
UnsignedLongLong (ScopePtr const& scope)
- : Declaration (SimpleName ("unsigned long long"), scope)
+ : Declaration (SimpleName ("unsigned long long"), scope),
+ TypeDecl (SimpleName ("unsigned long long"), scope),
+ TypeDef (SimpleName ("unsigned long long"), scope),
+ BuiltInTypeDef (SimpleName ("unsigned long long"), scope)
{
type_info (static_type_info ());
}
@@ -553,7 +602,10 @@ namespace CCF
~UnsignedShort () throw () {}
UnsignedShort (ScopePtr const& scope)
- : Declaration (SimpleName ("unsigned short"), scope)
+ : Declaration (SimpleName ("unsigned short"), scope),
+ TypeDecl (SimpleName ("unsigned short"), scope),
+ TypeDef (SimpleName ("unsigned short"), scope),
+ BuiltInTypeDef (SimpleName ("unsigned short"), scope)
{
type_info (static_type_info ());
}
@@ -586,7 +638,10 @@ namespace CCF
~Void () throw () {}
Void (ScopePtr const& scope)
- : Declaration (SimpleName ("void"), scope)
+ : Declaration (SimpleName ("void"), scope),
+ TypeDecl (SimpleName ("void"), scope),
+ TypeDef (SimpleName ("void"), scope),
+ BuiltInTypeDef (SimpleName ("void"), scope)
{
type_info (static_type_info ());
}
@@ -619,7 +674,10 @@ namespace CCF
~Wchar () throw () {}
Wchar (ScopePtr const& scope)
- : Declaration (SimpleName ("wchar"), scope)
+ : Declaration (SimpleName ("wchar"), scope),
+ TypeDecl (SimpleName ("wchar"), scope),
+ TypeDef (SimpleName ("wchar"), scope),
+ BuiltInTypeDef (SimpleName ("wchar"), scope)
{
type_info (static_type_info ());
}
@@ -652,7 +710,10 @@ namespace CCF
~Wstring () throw () {}
Wstring (ScopePtr const& scope)
- : Declaration (SimpleName ("wstring"), scope)
+ : Declaration (SimpleName ("wstring"), scope),
+ TypeDecl (SimpleName ("wstring"), scope),
+ TypeDef (SimpleName ("wstring"), scope),
+ BuiltInTypeDef (SimpleName ("wstring"), scope)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4 b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4
index 5169cc84b89..00fb9296d4f 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4
@@ -20,7 +20,10 @@ define(`built_in_type_impl', `
~$1 () throw () {}
$1 (ScopePtr const& scope)
- : Declaration (SimpleName ("$2"), scope)
+ : Declaration (SimpleName ("$2"), scope),
+ TypeDecl (SimpleName ("$2"), scope),
+ TypeDef (SimpleName ("$2"), scope),
+ BuiltInTypeDef (SimpleName ("$2"), scope)
{
type_info (static_type_info ());
}
@@ -72,7 +75,11 @@ namespace CCF
virtual
~BuiltInTypeDef () throw () {}
- BuiltInTypeDef ()
+ BuiltInTypeDef (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ TypeDef (name, scope)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp
index df663a79876..bfe3418a29d 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.cpp
@@ -18,37 +18,6 @@ namespace CCF
//
namespace
{
- bool
- subtype_p (TypeInfo const& derived, TypeInfo const& base)
- {
- if (derived.type_id () == base.type_id ()) return true;
-
- for (TypeInfo::BaseIterator i = derived.begin_base ();
- i != derived.end_base ();
- ++i)
- {
- if (subtype_p (i->type_info (), base)) return true;
- }
-
- return false;
- }
- }
-
- bool Node::
- is_a (TypeInfo const& ti) const
- {
- return subtype_p (type_info (), ti);
- }
-
- NodePtr Node::
- dynamic_type (TypeInfo const& ti)
- {
- if (is_a (ti)) return NodePtr (ReferenceCounting::add_ref (this));
- else return NodePtr ();
- }
-
- namespace
- {
TypeInfo
node_init_ ()
{
@@ -64,6 +33,7 @@ namespace CCF
TypeInfo const& Node::
static_type_info () { return node_; }
+
// Comma
//
//
@@ -107,8 +77,7 @@ namespace CCF
Declaration (SimpleName const& name, ScopePtr const& scope)
: order_ (scope->create_order ()),
name_ (scope->name (), name),
- table_ (scope->table ()),
- scope_ (table_,
+ scope_ (scope->table (),
scope->name (),
scope->order ()) // Hint: scope->scope () may throw
{
@@ -121,7 +90,6 @@ namespace CCF
ScopePtr const& scope)
: order_ (order),
name_ (scope->name (), name),
- table_ (scope->table ()),
scope_ (scope->table (),
scope->name (),
scope->order ()) // Hint: scope->scope () may throw
@@ -132,11 +100,10 @@ namespace CCF
Declaration::
Declaration (ScopedName const& name,
Order const& order,
- DeclarationTable& table)
+ DeclarationTable const& table)
: order_ (order),
name_ (name),
- table_ (table),
- scope_ (table_) // this stuff is faked
+ scope_ (table) // this stuff is faked
{
type_info (static_type_info ());
}
@@ -202,7 +169,6 @@ namespace CCF
}
}
-
DeclarationTable::IteratorPair DeclarationTable::
lookup (ScopedName const& n) const
{
@@ -217,26 +183,6 @@ namespace CCF
}
}
-
- DeclarationPtr DeclarationTable::
- lookup (ScopedName const& n, Introspection::TypeInfo const& ti) const
- throw (DeclarationNotFound, TypeMismatch)
- {
- IteratorPair pair = lookup (n);
-
- if (pair.first == pair.second) throw DeclarationNotFound ();
-
- for (; pair.first != pair.second; pair.first++)
- {
- DeclarationPtr d = (*pair.first);
-
- if (d->is_a (ti)) return d;
- }
-
- throw TypeMismatch ();
- }
-
-
DeclarationTable::Iterator DeclarationTable::
begin () const
{
@@ -351,7 +297,7 @@ namespace CCF
{
try
{
- table ().insert (d);
+ table_.insert (d);
}
catch (...)
{
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp
index 6f5e83bf63d..9574ce5ced2 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.hpp
@@ -37,11 +37,6 @@ namespace CCF
class InvalidArgument {};
public:
- virtual
- ~Name ()
- {
- }
-
explicit
Name (std::string const& name) throw (InvalidArgument)
: name_ (name)
@@ -74,20 +69,13 @@ namespace CCF
return name_ != other.name_;
}
- public:
- virtual std::ostream&
- print (std::ostream& o) const
- {
- return o << name_;
- }
-
protected:
std::string name_;
friend std::ostream&
operator << (std::ostream& o, Name const& name)
{
- return name.print (o);
+ return o << name.name_;
}
friend class ScopedName;
@@ -145,7 +133,7 @@ namespace CCF
};
- // Should always start with "::". Can be just "::" which
+ // Shuld always start with "::". Can be just "::" which
// means it's a file-scope.
//
//
@@ -321,18 +309,6 @@ namespace CCF
std::string literal_;
};
- inline bool
- operator== (StringLiteral const& a, StringLiteral const& b)
- {
- return a.str () == b.str ();
- }
-
- inline bool
- operator!= (StringLiteral const& a, StringLiteral const& b)
- {
- return a.str () != b.str ();
- }
-
//
//
@@ -456,41 +432,23 @@ namespace CCF
type_info (static_type_info ());
}
- // Virtual typing.
- //
+ // Dynamic typing
public:
- //@@ should virtual_type be constant (since it is temporary)?
- //
- virtual NodePtr
- virtual_type ()
- {
- return NodePtr ();
- }
-
- // Dynamic typing.
- //
- public:
-
- virtual bool
- is_a (Introspection::TypeInfo const& ti) const;
-
template <typename Type>
bool
- is_a () const
+ is_a ()
{
- return is_a (Type::static_type_info ());
+ NodePtr self (ReferenceCounting::add_ref (this));
+ return ReferenceCounting::strict_cast<Type>(self) != 0;
}
- virtual NodePtr
- dynamic_type (Introspection::TypeInfo const& ti);
-
template <typename Type>
StrictPtr<Type>
dynamic_type ()
{
- return ReferenceCounting::strict_cast<Type>(
- dynamic_type (Type::static_type_info ()));
+ NodePtr self (ReferenceCounting::add_ref (this));
+ return ReferenceCounting::strict_cast<Type>(self);
}
// Context
@@ -580,6 +538,7 @@ namespace CCF
public:
+
DeclarationRef (DeclarationPtr decl);
DeclarationRef (DeclarationTable const& table, ScopedName const& name);
DeclarationRef (DeclarationTable const& table,
@@ -641,14 +600,6 @@ namespace CCF
StrictPtr<Scope>
ScopePtr;
- class Declaration;
-
- typedef
- StrictPtr<Declaration>
- DeclarationPtr;
-
- class DeclarationTable;
-
class Declaration : public virtual Node
{
protected:
@@ -665,40 +616,7 @@ namespace CCF
// e.g. FileScope
Declaration (ScopedName const& name,
Order const& order,
- DeclarationTable& table);
-
-
- // This c-tor is declared but never defined. The trick is that
- // it should never be called since all inheritance in SyntaxTree
- // is virtual.
- //
- Declaration ();
-
- public:
- DeclarationTable const&
- table () const
- {
- return table_;
- }
-
- DeclarationTable&
- table ()
- {
- return table_;
- }
-
- public:
- //@@ returned object should be constant
- //
- //@@ it should probably take ScopedName
- //
- virtual DeclarationPtr
- clone_temporary (SimpleName const& name,
- Order const& order,
- ScopePtr const& scope)
- {
- throw 0;
- }
+ DeclarationTable const& table);
public:
@@ -731,10 +649,13 @@ namespace CCF
private:
Order order_;
ScopedName name_;
- DeclarationTable& table_;
DeclarationRef<Scope> scope_;
};
+ typedef
+ StrictPtr<Declaration>
+ DeclarationPtr;
+
//
//
@@ -826,11 +747,15 @@ namespace CCF
IteratorPair
lookup (ScopedName const& n) const;
- class DeclarationNotFound {};
+ bool
+ exist (ScopedName const& n) const
+ {
+ IteratorPair pair = lookup (n);
+ return pair.first != pair.second;
+ }
- DeclarationPtr
- lookup (ScopedName const& n, Introspection::TypeInfo const& ti) const
- throw (DeclarationNotFound, TypeMismatch);
+
+ class DeclarationNotFound {};
template <typename T>
StrictPtr<T>
@@ -842,13 +767,6 @@ namespace CCF
lookup (ScopedName const& n, Order const& o) const
throw (DeclarationNotFound, TypeMismatch);
- bool
- exist (ScopedName const& n) const
- {
- IteratorPair pair = lookup (n);
- return pair.first != pair.second;
- }
-
class ResolutionFailure {};
class NameNotFound : public ResolutionFailure {};
class PredicateNotMet : public ResolutionFailure {};
@@ -892,8 +810,22 @@ namespace CCF
virtual
~Scope () throw () {}
- Scope ()
- : next_order_ (0)
+ // This c-tor is here for Declarations that are not in scope
+ // e.g. FileScope.
+ Scope (DeclarationTable& table,
+ ScopedName const& name,
+ Order const& order)
+ : Declaration (name, order, table),
+ table_ (table),
+ next_order_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ Scope (SimpleName const& name, ScopePtr const& scope)
+ : Declaration (name, scope),
+ table_ (scope->table ()),
+ next_order_ (0)
{
type_info (static_type_info ());
}
@@ -919,6 +851,19 @@ namespace CCF
Order
peek_order ();
+
+ public:
+
+ DeclarationTable const& table () const
+ {
+ return table_;
+ }
+
+ DeclarationTable& table ()
+ {
+ return table_;
+ }
+
// Runtime declaration type information
public:
virtual std::string
@@ -933,6 +878,7 @@ namespace CCF
private:
DeclarationSet content_;
+ DeclarationTable& table_;
unsigned long next_order_;
};
@@ -946,7 +892,9 @@ namespace CCF
virtual
~TypeDecl () throw () {}
- TypeDecl ()
+ TypeDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope)
{
type_info (static_type_info ());
}
@@ -987,7 +935,10 @@ namespace CCF
virtual
~TypeForwardDecl () throw () {}
- TypeForwardDecl ()
+ TypeForwardDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -1023,7 +974,10 @@ namespace CCF
virtual
~TypeDef () throw () {}
- TypeDef ()
+ TypeDef (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp
index c79d24db3b9..bc8b9ba131b 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Elements.tpp
@@ -38,7 +38,7 @@ namespace CCF
template <typename T, typename Ptr>
DeclarationRef<T, Ptr>::
DeclarationRef (DeclarationPtr decl)
- : table_ (decl->table ()),
+ : table_ (decl->scope ()->table ()),
name_ (decl->name ()),
order_ (decl->order ()),
initialized_ (true),
@@ -89,10 +89,21 @@ namespace CCF
lookup (ScopedName const& n) const
throw (DeclarationNotFound, TypeMismatch)
{
- DeclarationPtr d (lookup (n, T::static_type_info ()));
+ IteratorPair pair = lookup (n);
+
+ if (pair.first == pair.second) throw DeclarationNotFound ();
+
+ for (; pair.first != pair.second; pair.first++)
+ {
+ DeclarationPtr d = (*pair.first);
+
+ //@@ gcc bug
+ StrictPtr<T> p ((*pair.first)->template dynamic_type<T> ());
+
+ if (p != 0) return p;
+ }
- //@@ gcc bug
- return d->template dynamic_type<T> ();
+ throw TypeMismatch ();
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp
index 8b9613715e6..f17cdfa2413 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Interface.hpp
@@ -13,17 +13,20 @@ namespace CCF
{
namespace SyntaxTree
{
-
+
//
//
//
class InterfaceDecl : public virtual TypeDecl
{
- protected:
+ public:
virtual
~InterfaceDecl () throw () {}
- InterfaceDecl ()
+ InterfaceDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -72,11 +75,16 @@ namespace CCF
class InterfaceForwardDecl : public virtual InterfaceDecl,
public virtual TypeForwardDecl
{
- protected:
+ public:
virtual
~InterfaceForwardDecl () throw () {}
- InterfaceForwardDecl ()
+ InterfaceForwardDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ TypeForwardDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -94,7 +102,7 @@ namespace CCF
static_type_info ();
};
-
+
//
//
//
@@ -120,11 +128,18 @@ namespace CCF
public virtual TypeDef,
public virtual Scope
{
- protected:
+ public:
virtual
~InterfaceDef () throw () {}
- InterfaceDef (ScopedNameSet const& inherits)
+ InterfaceDef (SimpleName const& name,
+ ScopePtr const& scope,
+ ScopedNameSet const& inherits)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope)
{
type_info (static_type_info ());
@@ -132,14 +147,10 @@ namespace CCF
i != inherits.end ();
i++)
{
- inherits_.insert (InterfaceDefRef (table (), *i));
+ inherits_.insert (InterfaceDefRef (scope->table (), *i));
}
}
- // This c-tor is never called.
- //
- InterfaceDef ();
-
public:
typedef
InterfaceDefRefSetName::const_iterator
@@ -195,11 +206,16 @@ namespace CCF
//
class AbstractInterfaceDecl : public virtual InterfaceDecl
{
- protected:
+ public:
virtual
~AbstractInterfaceDecl () throw () {}
- AbstractInterfaceDecl ()
+ // forward-declared unconstrained interface c-tor
+ AbstractInterfaceDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -231,9 +247,15 @@ namespace CCF
virtual
~AbstractInterfaceForwardDecl () throw () {}
+ // forward-declared unconstrained interface c-tor
AbstractInterfaceForwardDecl (SimpleName const& name,
ScopePtr const& scope)
- : Declaration (name, scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ TypeForwardDecl (name, scope),
+ InterfaceForwardDecl (name, scope),
+ AbstractInterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -266,7 +288,12 @@ namespace CCF
ScopePtr const& scope,
ScopedNameSet const& inherits)
: Declaration (name, scope),
- InterfaceDef (inherits)
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ AbstractInterfaceDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ InterfaceDef (name, scope, inherits)
{
type_info (static_type_info ());
}
@@ -293,11 +320,15 @@ namespace CCF
//
class LocalInterfaceDecl : public virtual InterfaceDecl
{
- protected:
+ public:
virtual
~LocalInterfaceDecl () throw () {}
- LocalInterfaceDecl ()
+ LocalInterfaceDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -332,7 +363,12 @@ namespace CCF
LocalInterfaceForwardDecl (SimpleName const& name,
ScopePtr const& scope)
- : Declaration (name, scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ TypeForwardDecl (name, scope),
+ InterfaceForwardDecl (name, scope),
+ LocalInterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -365,7 +401,12 @@ namespace CCF
ScopePtr const& scope,
ScopedNameSet const& inherits)
: Declaration (name, scope),
- InterfaceDef (inherits)
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ LocalInterfaceDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ InterfaceDef (name, scope, inherits)
{
type_info (static_type_info ());
}
@@ -393,11 +434,15 @@ namespace CCF
//
class UnconstrainedInterfaceDecl : public virtual InterfaceDecl
{
- protected:
+ public:
virtual
~UnconstrainedInterfaceDecl () throw () {}
- UnconstrainedInterfaceDecl ()
+ UnconstrainedInterfaceDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -441,31 +486,18 @@ namespace CCF
virtual
~UnconstrainedInterfaceForwardDecl () throw () {}
- UnconstrainedInterfaceForwardDecl (SimpleName const& name,
- ScopePtr const& scope)
- : Declaration (name, scope)
- {
- type_info (static_type_info ());
- }
-
UnconstrainedInterfaceForwardDecl (SimpleName const& name,
- Order const& order,
ScopePtr const& scope)
- : Declaration (name, order, scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ TypeForwardDecl (name, scope),
+ InterfaceForwardDecl (name, scope),
+ UnconstrainedInterfaceDecl (name, scope)
{
type_info (static_type_info ());
}
- public:
- virtual DeclarationPtr
- clone_temporary (SimpleName const& name,
- Order const& order,
- ScopePtr const& scope)
- {
- return DeclarationPtr (
- new UnconstrainedInterfaceForwardDecl (name, order, scope));
- }
-
// Runtime declaration type information
public:
virtual std::string
@@ -479,7 +511,6 @@ namespace CCF
static_type_info ();
};
-
//
//
//
@@ -495,30 +526,16 @@ namespace CCF
ScopePtr const& scope,
ScopedNameSet const& inherits)
: Declaration (name, scope),
- InterfaceDef (inherits)
- {
- type_info (static_type_info ());
- }
-
- UnconstrainedInterfaceDef (SimpleName const& name,
- Order const& order,
- ScopePtr const& scope)
- : Declaration (name, order, scope),
- InterfaceDef (ScopedNameSet ()) //@@ broken
+ TypeDecl (name, scope),
+ InterfaceDecl (name, scope),
+ UnconstrainedInterfaceDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ InterfaceDef (name, scope, inherits)
{
type_info (static_type_info ());
}
- public:
- virtual DeclarationPtr
- clone_temporary (SimpleName const& name,
- Order const& order,
- ScopePtr const& scope)
- {
- return DeclarationPtr (
- new UnconstrainedInterfaceDef (name, order, scope));
- }
-
// Runtime declaration type information
public:
virtual std::string
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt
index 9061713c1b6..41d218a4d96 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Makefile.alt
@@ -16,7 +16,6 @@ cxx_translation_units := BuiltIn.cpp \
Module.cpp \
Operation.cpp \
Translation.cpp \
- Typedef.cpp \
TypeId.cpp \
ValueType.cpp
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp
index 4b437af660f..003d6d77c14 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Module.hpp
@@ -23,7 +23,8 @@ namespace CCF
~Module () throw () {}
Module (SimpleName const& name, ScopePtr const& scope)
- : Declaration (name, scope)
+ : Declaration (name, scope),
+ Scope (name, scope)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp
index 4c18575d728..3cb6dae67f4 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Operation.hpp
@@ -27,7 +27,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
@@ -151,21 +151,12 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
}
- protected:
- // This c-tor is never actually called.
- //
- OperationDecl (ScopedName const& type)
- : type_ (table (), type)
- {
- type_info (static_type_info ());
- }
-
public:
TypeDeclPtr
type ()
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp
index 4de37c90f40..ce37a67bf1c 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.cpp
@@ -34,7 +34,8 @@ namespace CCF
FileScope::
FileScope (DeclarationTable& table, Order const& order)
- : Declaration (ScopedName ("::"), order, table)
+ : Declaration (ScopedName ("::"), order, table),
+ Scope (table, ScopedName ("::"), order)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp
index 7e311372d49..7f57ecf1f8e 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Translation.hpp
@@ -25,7 +25,6 @@ namespace CCF
FileScope (DeclarationTable& table, Order const& order);
- public:
virtual ScopePtr
scope () const throw (NotInScope)
{
@@ -93,11 +92,6 @@ namespace CCF
table.insert (scope_);
}
- protected:
- // This c-tor is never called.
- //
- TranslationRegion ();
-
public:
DeclarationTable const&
table () const
@@ -168,11 +162,14 @@ namespace CCF
//
class IncludeTranslationRegion : public virtual TranslationRegion
{
- protected:
+ public:
virtual
~IncludeTranslationRegion () throw () {}
- IncludeTranslationRegion ()
+ IncludeTranslationRegion (fs::path const& file_path,
+ DeclarationTable& table,
+ Order const& order)
+ : TranslationRegion (file_path, table, order)
{
type_info (static_type_info ());
}
@@ -200,7 +197,8 @@ namespace CCF
UserIncludeTranslationRegion (fs::path const& file_path,
DeclarationTable& table,
Order const& order)
- : TranslationRegion (file_path, table, order)
+ : TranslationRegion (file_path, table, order),
+ IncludeTranslationRegion (file_path, table, order)
{
type_info (static_type_info ());
}
@@ -227,7 +225,8 @@ namespace CCF
SysIncludeTranslationRegion (fs::path const& file_path,
DeclarationTable& table,
Order const& order)
- : TranslationRegion (file_path, table, order)
+ : TranslationRegion (file_path, table, order),
+ IncludeTranslationRegion (file_path, table, order)
{
type_info (static_type_info ());
}
@@ -254,7 +253,8 @@ namespace CCF
ImpliedIncludeTranslationRegion (fs::path const& file_path,
DeclarationTable& table,
Order const& order)
- : TranslationRegion (file_path, table, order)
+ : TranslationRegion (file_path, table, order),
+ IncludeTranslationRegion (file_path, table, order)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp
index b8e03b9e898..367462e7f26 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/TypeId.cpp
@@ -21,9 +21,7 @@ namespace CCF
typeid_init_ ()
{
TypeInfo ti (typeid (TypeId));
- ti.add_base (Access::PUBLIC,
- true,
- Declaration::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
return ti;
}
@@ -43,9 +41,7 @@ namespace CCF
typeprefix_init_ ()
{
TypeInfo ti (typeid (TypePrefix));
- ti.add_base (Access::PUBLIC,
- true,
- Declaration::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
return ti;
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp
deleted file mode 100644
index 72b33d34661..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-// file : CCF/IDL2/SyntaxTree/Typedef.cpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#include "CCF/IDL2/SyntaxTree/Typedef.hpp"
-
-using namespace Introspection;
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SyntaxTree
- {
- //@@ It seems throwing exception in DeclarationTable::lookup ()
- // in case declaration not found or type mismatched is not
- // not right.
- //
- bool TypedefDecl::
- is_a (Introspection::TypeInfo const& ti) const
- {
- if (TypeDecl::is_a (ti)) return true;
-
- try
- {
- table ().lookup (type_, ti);
- return true;
- }
- catch (DeclarationTable::DeclarationNotFound const&)
- {
- //@@ ICE
- abort ();
- }
- catch (DeclarationTable::TypeMismatch const&)
- {
- return false;
- }
- }
-
- NodePtr TypedefDecl::
- dynamic_type (Introspection::TypeInfo const& ti)
- {
- NodePtr n = TypeDecl::dynamic_type (ti);
-
- if (n != 0) return n;
-
- // Try virtual type.
- //
-
- NodePtr v (virtual_type ());
-
- if (v != 0) return v->dynamic_type (ti);
- else return v;
- }
-
- NodePtr TypedefDecl::
- virtual_type ()
- {
- // Try to return TypeDef if there is one, otherwise TypeDecl.
- //
- try
- {
- TypeDefPtr def (table ().lookup<TypeDef> (type_));
-
- return def->clone_temporary (name ().simple (),
- order (),
- scope ());
- }
- catch (DeclarationTable::DeclarationNotFound const&)
- {
- //@@ ICE
- abort ();
- }
- catch (DeclarationTable::TypeMismatch const&)
- {
- try
- {
- TypeDeclPtr decl (table ().lookup<TypeDecl> (type_));
-
- return decl->clone_temporary (name ().simple (),
- order (),
- scope ());
- }
- catch (DeclarationTable::DeclarationNotFound const&)
- {
- //@@ maybe it's a goofd idea to just let these exception
- // go out of the function. And somewhere in the driver
- // they should be cought and reported as ICE.
-
- //@@ ICE
- abort ();
- }
- catch (DeclarationTable::TypeMismatch const&)
- {
- //@@ ICE
- abort ();
- }
- }
- }
-
-
- bool TypedefDecl::
- defined () const
- {
- return is_a (TypeDef::static_type_info ());
- }
-
- namespace
- {
- TypeInfo
- typedef_decl_init_ ()
- {
- TypeInfo ti (typeid (TypedefDecl));
- ti.add_base (Access::PUBLIC, true, TypeDecl::static_type_info ());
- return ti;
- }
-
- TypeInfo typedef_decl_ (typedef_decl_init_ ());
- }
-
- TypeInfo const& TypedefDecl::
- static_type_info () { return typedef_decl_; }
- }
- }
-}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp
deleted file mode 100644
index 0a93a5c88ab..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/Typedef.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// file : CCF/IDL2/SyntaxTree/Typedef.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP
-#define CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP
-
-#include "CCF/IDL2/SyntaxTree/Elements.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SyntaxTree
- {
- class TypedefDecl : public virtual TypeDecl
- {
- public:
- virtual
- ~TypedefDecl () throw () {}
-
- TypedefDecl (SimpleName const& name,
- ScopedName const& type,
- ScopePtr const& scope)
- : Declaration (name, scope),
- type_ (type)
- {
- type_info (static_type_info ());
- }
-
- public:
- virtual bool
- is_a (Introspection::TypeInfo const& ti) const;
-
- virtual NodePtr
- dynamic_type (Introspection::TypeInfo const& ti);
-
- virtual NodePtr
- virtual_type ();
-
- // Type completeness
- public:
- virtual bool
- defined () const;
-
- // Runtime declaration type information
- public:
- virtual std::string
- declaration_class ()
- {
- return "typedef";
- }
-
- public:
- static Introspection::TypeInfo const&
- static_type_info ();
-
- private:
- ScopedName type_;
- };
-
- typedef
- StrictPtr<TypedefDecl>
- TypedefDeclPtr;
- }
- }
-}
-
-#endif // CCF_IDL2_SYNTAX_TREE_TYPEDEF_HPP
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp
index 226fe3beafa..4fd69746124 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/SyntaxTree/ValueType.hpp
@@ -19,11 +19,14 @@ namespace CCF
//
class ValueTypeDecl : public virtual TypeDecl
{
- protected:
+ public:
virtual
~ValueTypeDecl () throw () {}
- ValueTypeDecl ()
+ ValueTypeDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -79,13 +82,10 @@ namespace CCF
ValueTypeForwardDecl (SimpleName const& name,
ScopePtr const& scope)
- : Declaration (name, scope)
- {
- type_info (static_type_info ());
- }
-
- protected:
- ValueTypeForwardDecl ()
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ TypeForwardDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -136,20 +136,11 @@ namespace CCF
ValueTypeDef (SimpleName const& name,
ScopePtr const& scope,
ScopedNameSet const& inherits)
- : Declaration (name, scope)
- {
- type_info (static_type_info ());
-
- for (ScopedNameSet::const_iterator i = inherits.begin ();
- i != inherits.end ();
- i++)
- {
- inherits_.insert (ValueTypeDefRef (table (), *i));
- }
- }
-
- protected:
- ValueTypeDef (ScopedNameSet const& inherits)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope)
{
type_info (static_type_info ());
@@ -157,15 +148,10 @@ namespace CCF
i != inherits.end ();
i++)
{
- inherits_.insert (ValueTypeDefRef (table (), *i));
+ inherits_.insert (ValueTypeDefRef (scope->table (), *i));
}
}
- // This c-tor is never called.
- //
- ValueTypeDef ();
-
-
// Runtime declaration type information
public:
virtual std::string
@@ -197,6 +183,7 @@ namespace CCF
typedef
std::set<ValueTypeDefRef, ValueTypeDefRefOrderComparator>
ValueTypeDefRefSet;
+
}
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp
index d87a0919da4..04da1fe1e4f 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal.hpp
@@ -11,7 +11,6 @@
#include "CCF/IDL2/Traversal/Module.hpp"
#include "CCF/IDL2/Traversal/Operation.hpp"
#include "CCF/IDL2/Traversal/Translation.hpp"
-#include "CCF/IDL2/Traversal/Typedef.hpp"
#include "CCF/IDL2/Traversal/TypeId.hpp"
#endif // CCF_IDL2_TRAVERSAL_HPP
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp
index e83bcb16447..eb339ac4be2 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp
@@ -32,11 +32,10 @@ namespace CCF
map (typeid (SyntaxTree::BuiltInTypeDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::BuiltInTypeDef> ());
- return true;
}
virtual void
@@ -61,11 +60,10 @@ namespace CCF
map (typeid (SyntaxTree::Object), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Object> ());
- return true;
}
virtual void
@@ -90,11 +88,10 @@ namespace CCF
map (typeid (SyntaxTree::ValueBase), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ValueBase> ());
- return true;
}
virtual void
@@ -119,11 +116,10 @@ namespace CCF
map (typeid (SyntaxTree::Any), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Any> ());
- return true;
}
virtual void
@@ -148,11 +144,10 @@ namespace CCF
map (typeid (SyntaxTree::Boolean), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Boolean> ());
- return true;
}
virtual void
@@ -177,11 +172,10 @@ namespace CCF
map (typeid (SyntaxTree::Char), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Char> ());
- return true;
}
virtual void
@@ -206,11 +200,10 @@ namespace CCF
map (typeid (SyntaxTree::Double), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Double> ());
- return true;
}
virtual void
@@ -235,11 +228,10 @@ namespace CCF
map (typeid (SyntaxTree::Float), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Float> ());
- return true;
}
virtual void
@@ -264,11 +256,10 @@ namespace CCF
map (typeid (SyntaxTree::Long), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Long> ());
- return true;
}
virtual void
@@ -293,11 +284,10 @@ namespace CCF
map (typeid (SyntaxTree::LongDouble), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::LongDouble> ());
- return true;
}
virtual void
@@ -322,11 +312,10 @@ namespace CCF
map (typeid (SyntaxTree::LongLong), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::LongLong> ());
- return true;
}
virtual void
@@ -351,11 +340,10 @@ namespace CCF
map (typeid (SyntaxTree::Octet), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Octet> ());
- return true;
}
virtual void
@@ -380,11 +368,10 @@ namespace CCF
map (typeid (SyntaxTree::Short), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Short> ());
- return true;
}
virtual void
@@ -409,11 +396,10 @@ namespace CCF
map (typeid (SyntaxTree::String), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::String> ());
- return true;
}
virtual void
@@ -438,11 +424,10 @@ namespace CCF
map (typeid (SyntaxTree::UnsignedLong), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UnsignedLong> ());
- return true;
}
virtual void
@@ -467,11 +452,10 @@ namespace CCF
map (typeid (SyntaxTree::UnsignedLongLong), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UnsignedLongLong> ());
- return true;
}
virtual void
@@ -496,11 +480,10 @@ namespace CCF
map (typeid (SyntaxTree::UnsignedShort), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UnsignedShort> ());
- return true;
}
virtual void
@@ -525,11 +508,10 @@ namespace CCF
map (typeid (SyntaxTree::Void), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Void> ());
- return true;
}
virtual void
@@ -554,11 +536,10 @@ namespace CCF
map (typeid (SyntaxTree::Wchar), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Wchar> ());
- return true;
}
virtual void
@@ -583,11 +564,10 @@ namespace CCF
map (typeid (SyntaxTree::Wstring), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Wstring> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4 b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4
index 0d4b4d99564..feb9fbdf940 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4
@@ -20,11 +20,10 @@ define(`built_in_type', `
map (typeid (SyntaxTree::$1), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::$1> ());
- return true;
}
virtual void
@@ -71,11 +70,10 @@ namespace CCF
map (typeid (SyntaxTree::BuiltInTypeDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::BuiltInTypeDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp
index f63ecaf3961..eda7416b001 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp
@@ -16,54 +16,52 @@ namespace CCF
// Dispatcher
//
//
- namespace
+
+ struct TypeInfoComparator
{
- struct TypeInfoComparator
+ bool
+ operator () (TypeInfo const& x, TypeInfo const& y) const
{
- bool
- operator () (TypeInfo const& x, TypeInfo const& y) const
- {
- return x.type_id () < y.type_id ();
- }
- };
-
- typedef
- std::map<TypeInfo, unsigned long, TypeInfoComparator>
- LevelMap;
+ return x.type_id () < y.type_id ();
+ }
+ };
- typedef
- std::set<TypeInfo, TypeInfoComparator>
- TypeInfoSet;
+ typedef
+ std::map<TypeInfo, unsigned long, TypeInfoComparator>
+ LevelMap;
- unsigned long
- compute_levels (TypeInfo const& ti, unsigned long cur, LevelMap& map)
- {
- unsigned long ret = cur;
+ typedef
+ std::set<TypeInfo, TypeInfoComparator>
+ TypeInfoSet;
- if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur;
+ unsigned long
+ compute_levels (TypeInfo const& ti, unsigned long cur, LevelMap& map)
+ {
+ unsigned long ret = cur;
- for (TypeInfo::BaseIterator i = ti.begin_base ();
- i != ti.end_base ();
- i++)
- {
- unsigned long t = compute_levels (i->type_info (), cur + 1, map);
- if (t > ret) ret = t;
- }
+ if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur;
- return ret;
+ for (TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ unsigned long t = compute_levels (i->type_info (), cur + 1, map);
+ if (t > ret) ret = t;
}
- void
- flatten_tree (TypeInfo const& ti, TypeInfoSet& set)
- {
- set.insert (ti);
+ return ret;
+ }
- for (TypeInfo::BaseIterator i = ti.begin_base ();
- i != ti.end_base ();
- i++)
- {
- flatten_tree (i->type_info (), set);
- }
+ void
+ flatten_tree (TypeInfo const& ti, TypeInfoSet& set)
+ {
+ set.insert (ti);
+
+ for (TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ flatten_tree (i->type_info (), set);
}
}
@@ -78,15 +76,13 @@ namespace CCF
// << n->type_info ().type_id () << " with "
// << max << " levels" << endl;
- bool match (false);
-
- for (unsigned long l = 0; l < max + 1; ++l)
+ for (unsigned long l = 0; l < max + 1; l++)
{
TypeInfoSet dispatched;
for (LevelMap::const_iterator i = levels.begin ();
i != levels.end ();
- ++i)
+ i++)
{
if (i->second == l)
{
@@ -99,34 +95,20 @@ namespace CCF
// << n->type_info ().type_id () << " as "
// << i->first.type_id () << endl;
- if (v->second.traverser->traverse (n))
- {
- flatten_tree (i->first, dispatched);
- match = true;
- }
+ v->second.traverser->traverse (n);
+ flatten_tree (i->first, dispatched);
}
}
}
// Remove traversed types from level map.
- //
for (TypeInfoSet::const_iterator i = dispatched.begin ();
i != dispatched.end ();
- ++i)
+ i++)
{
levels.erase (*i);
}
}
-
- if (!match)
- {
- // Try virtual type.
- //
-
- SyntaxTree::NodePtr v (n->virtual_type ());
-
- if (v != 0) dispatch (v);
- }
}
// Scope
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp
index a706576f99e..2601d23da5f 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp
@@ -30,7 +30,7 @@ namespace CCF
{
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n) = 0;
friend class Dispatcher;
@@ -219,11 +219,10 @@ namespace CCF
map (typeid (SyntaxTree::Comma), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Comma> ());
- return true;
}
virtual void
@@ -248,11 +247,10 @@ namespace CCF
map (typeid (SyntaxTree::Declaration), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Declaration> ());
- return true;
}
virtual void
@@ -277,11 +275,10 @@ namespace CCF
map (typeid (SyntaxTree::Scope), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Scope> ());
- return true;
}
virtual void
@@ -312,11 +309,10 @@ namespace CCF
map (typeid (SyntaxTree::TypeDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TypeDecl> ());
- return true;
}
virtual void
@@ -341,11 +337,10 @@ namespace CCF
map (typeid (SyntaxTree::TypeDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TypeDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp
index 1b19e263f6e..c8ae18c5bd5 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp
@@ -29,11 +29,10 @@ namespace CCF
map (typeid (SyntaxTree::InterfaceDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::InterfaceDecl> ());
- return true;
}
virtual void
@@ -58,11 +57,10 @@ namespace CCF
map (typeid (SyntaxTree::InterfaceDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::InterfaceDef> ());
- return true;
}
virtual void
@@ -93,11 +91,10 @@ namespace CCF
map (typeid (SyntaxTree::AbstractInterfaceDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::AbstractInterfaceDecl> ());
- return true;
}
virtual void
@@ -122,11 +119,10 @@ namespace CCF
map (typeid (SyntaxTree::AbstractInterfaceDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::AbstractInterfaceDef> ());
- return true;
}
virtual void
@@ -157,11 +153,10 @@ namespace CCF
map (typeid (SyntaxTree::LocalInterfaceDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::LocalInterfaceDecl> ());
- return true;
}
virtual void
@@ -186,11 +181,10 @@ namespace CCF
map (typeid (SyntaxTree::LocalInterfaceDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::LocalInterfaceDef> ());
- return true;
}
virtual void
@@ -221,11 +215,10 @@ namespace CCF
map (typeid (SyntaxTree::UnconstrainedInterfaceDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UnconstrainedInterfaceDecl> ());
- return true;
}
virtual void
@@ -250,11 +243,10 @@ namespace CCF
map (typeid (SyntaxTree::UnconstrainedInterfaceDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UnconstrainedInterfaceDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp
index b7c10ae165b..404895db7fb 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp
@@ -28,11 +28,10 @@ namespace CCF
map (typeid (SyntaxTree::Module), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::Module> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp
index d2683f2e0ac..df94cfcea34 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp
@@ -85,11 +85,10 @@ namespace CCF
map (typeid (SyntaxTree::AttributeDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::AttributeDecl> ());
- return true;
}
virtual void
@@ -132,11 +131,10 @@ namespace CCF
map (typeid (SyntaxTree::OperationParameter), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::OperationParameter> ());
- return true;
}
virtual void
@@ -173,11 +171,10 @@ namespace CCF
map (typeid (SyntaxTree::OperationDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::OperationDecl> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp
index 3a185a0194b..a8b4faf6e75 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp
@@ -77,11 +77,10 @@ namespace CCF
map (typeid (SyntaxTree::FileScope), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::FileScope> ());
- return true;
}
virtual void
@@ -113,11 +112,10 @@ namespace CCF
map (typeid (SyntaxTree::TranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TranslationRegion> ());
- return true;
}
virtual void
@@ -152,11 +150,10 @@ namespace CCF
map (typeid (SyntaxTree::IncludeTranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::IncludeTranslationRegion> ());
- return true;
}
virtual void
@@ -191,12 +188,11 @@ namespace CCF
map (typeid (SyntaxTree::UserIncludeTranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (
n->dynamic_type<SyntaxTree::UserIncludeTranslationRegion> ());
- return true;
}
virtual void
@@ -231,12 +227,11 @@ namespace CCF
map (typeid (SyntaxTree::SysIncludeTranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (
n->dynamic_type<SyntaxTree::SysIncludeTranslationRegion> ());
- return true;
}
virtual void
@@ -271,12 +266,11 @@ namespace CCF
map (typeid (SyntaxTree::ImpliedIncludeTranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (
n->dynamic_type<SyntaxTree::ImpliedIncludeTranslationRegion> ());
- return true;
}
virtual void
@@ -311,11 +305,10 @@ namespace CCF
map (typeid (SyntaxTree::PrincipalTranslationRegion), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::PrincipalTranslationRegion> ());
- return true;
}
virtual void
@@ -349,11 +342,10 @@ namespace CCF
map (typeid (SyntaxTree::TranslationUnit), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TranslationUnit> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp
index c5774cbd25d..49f9d03e535 100644
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp
@@ -28,11 +28,10 @@ namespace CCF
map (typeid (SyntaxTree::TypeId), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TypeId> ());
- return true;
}
virtual void
@@ -57,11 +56,10 @@ namespace CCF
map (typeid (SyntaxTree::TypePrefix), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::TypePrefix> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp
deleted file mode 100644
index ae254c17ae8..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// file : CCF/IDL2/Traversal/Typedef.cpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#include "CCF/IDL2/Traversal/Typedef.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace Traversal
- {
- }
- }
-}
diff --git a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp b/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp
deleted file mode 100644
index 76f00170787..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/Traversal/Typedef.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// file : CCF/IDL2/Traversal/Typedef.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CCF_IDL2_TRAVERSAL_TYPEDEF_HPP
-#define CCF_IDL2_TRAVERSAL_TYPEDEF_HPP
-
-#include "CCF/IDL2/Traversal/Elements.hpp"
-#include "CCF/IDL2/SyntaxTree/Typedef.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace Traversal
- {
- //
- //
- //
- template <typename T>
- struct TypedefDecl : Traverser
- {
- typedef
- SyntaxTree::StrictPtr<T>
- NodePtr;
-
- TypedefDecl ()
- {
- map (typeid (SyntaxTree::TypedefDecl), this);
- }
-
- virtual bool
- traverse (SyntaxTree::NodePtr const& n)
- {
- //@@ gcc bug
- if (n->template is_a<T> ())
- {
- traverse (n->template dynamic_type<T> ());
- return true;
- }
- else
- {
- return false;
- }
- }
-
- virtual void
- traverse (NodePtr const& n)
- {
- delegate (n);
- }
- };
- }
- }
-}
-
-#endif // CCF_IDL2_TRAVERSAL_TYPEDEF_HPP
diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp
index 9e3d30e1f5d..6d0b095aad1 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Component.hpp
@@ -23,11 +23,14 @@ namespace CCF
//
class ComponentDecl : public virtual TypeDecl
{
- protected:
+ public:
virtual
~ComponentDecl () throw () {}
- ComponentDecl ()
+ ComponentDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -66,7 +69,10 @@ namespace CCF
ComponentForwardDecl (SimpleName const& name,
ScopePtr const& scope)
- : Declaration (name, scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ComponentDecl (name, scope),
+ TypeForwardDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -113,7 +119,11 @@ namespace CCF
ScopedName const& inherits,
ScopedNameSet const& supports)
: Declaration (name, scope),
- inherits_ (table (), inherits)
+ TypeDecl (name, scope),
+ TypeDef (name, scope),
+ ComponentDecl (name, scope),
+ Scope (name, scope),
+ inherits_ (scope->table (), inherits)
{
type_info (static_type_info ());
copy_supports_list (supports);
@@ -123,7 +133,11 @@ namespace CCF
ScopePtr const& scope,
ScopedNameSet const& supports)
: Declaration (name, scope),
- inherits_ (table ())
+ TypeDecl (name, scope),
+ TypeDef (name, scope),
+ ComponentDecl (name, scope),
+ Scope (name, scope),
+ inherits_ (scope->table ())
{
type_info (static_type_info ());
copy_supports_list (supports);
@@ -137,7 +151,7 @@ namespace CCF
i != supports.end ();
i++)
{
- supports_.insert (InterfaceDefRef (table (), *i));
+ supports_.insert (InterfaceDefRef (scope ()->table (), *i));
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp
index dd0c3b93736..5327b64d339 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/EventType.hpp
@@ -16,17 +16,21 @@ namespace CCF
// Import nodes from IDL2
using namespace IDL2::SyntaxTree;
-
+
//
//
//
class EventTypeDecl : public virtual ValueTypeDecl
{
- protected:
+ public:
virtual
~EventTypeDecl () throw () {}
- EventTypeDecl ()
+ EventTypeDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -55,11 +59,18 @@ namespace CCF
class EventTypeForwardDecl : public virtual ValueTypeForwardDecl,
public virtual EventTypeDecl
{
- protected:
+ public:
virtual
~EventTypeForwardDecl () throw () {}
- EventTypeForwardDecl ()
+ EventTypeForwardDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ TypeForwardDecl (name, scope),
+ ValueTypeForwardDecl (name, scope),
+ EventTypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -84,11 +95,20 @@ namespace CCF
class EventTypeDef : public virtual EventTypeDecl,
public virtual ValueTypeDef
{
- protected:
+ public:
virtual
~EventTypeDef () throw () {}
- EventTypeDef ()
+ EventTypeDef (SimpleName const& name,
+ ScopePtr const& scope,
+ ScopedNameSet const& inherits)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ EventTypeDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ ValueTypeDef (name, scope, inherits)
{
type_info (static_type_info ());
}
@@ -112,11 +132,16 @@ namespace CCF
//
class ConcreteEventTypeDecl : public virtual EventTypeDecl
{
- protected:
+ public:
virtual
~ConcreteEventTypeDecl () throw () {}
- ConcreteEventTypeDecl ()
+ ConcreteEventTypeDecl (SimpleName const& name,
+ ScopePtr const& scope)
+ : Declaration (name, scope),
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ EventTypeDecl (name, scope)
{
type_info (static_type_info ());
}
@@ -149,7 +174,14 @@ namespace CCF
ScopePtr const& scope,
ScopedNameSet const& inherits)
: Declaration (name, scope),
- ValueTypeDef (inherits)
+ TypeDecl (name, scope),
+ ValueTypeDecl (name, scope),
+ EventTypeDecl (name, scope),
+ ConcreteEventTypeDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ ValueTypeDef (name, scope, inherits),
+ EventTypeDef (name, scope, inherits)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp
index 6bfbc8434a8..47f8901a14e 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Home.hpp
@@ -32,8 +32,7 @@ namespace CCF
DeclarationRef<HomeDef>
HomeDefRef;
- class HomeDef : public virtual TypeDef,
- public virtual Scope
+ class HomeDef : public virtual TypeDef, public virtual Scope
{
public:
virtual
@@ -46,8 +45,11 @@ namespace CCF
ScopedName const& manages)
: Declaration (name, scope),
- inherits_ (table (), inherits),
- manages_ (table (), manages)
+ TypeDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ inherits_ (scope->table (), inherits),
+ manages_ (scope->table (), manages)
{
type_info (static_type_info ());
copy_supports_list (supports);
@@ -59,8 +61,11 @@ namespace CCF
ScopedName const& manages)
: Declaration (name, scope),
- inherits_ (table ()),
- manages_ (table (), manages)
+ TypeDecl (name, scope),
+ TypeDef (name, scope),
+ Scope (name, scope),
+ inherits_ (scope->table ()),
+ manages_ (scope->table (), manages)
{
type_info (static_type_info ());
copy_supports_list (supports);
@@ -74,7 +79,7 @@ namespace CCF
i != supports.end ();
i++)
{
- supports_.insert (InterfaceDefRef (table (), *i));
+ supports_.insert (InterfaceDefRef (scope ()->table (), *i));
}
}
diff --git a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp
index 17b8c46565b..15b7b69a312 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/SyntaxTree/Operation.hpp
@@ -31,7 +31,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
}
@@ -78,7 +78,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
@@ -125,7 +125,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
}
@@ -172,7 +172,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
}
@@ -219,7 +219,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- type_ (table (), type)
+ type_ (scope->table (), type)
{
type_info (static_type_info ());
}
@@ -294,7 +294,7 @@ namespace CCF
ScopedName const& type,
ScopePtr const& scope)
: Declaration (name, scope),
- OperationDecl (type)
+ OperationDecl (name, type, scope)
{
type_info (static_type_info ());
}
diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp
index 751ba4dccae..a078d2c2c96 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp
@@ -29,11 +29,10 @@ namespace CCF
map (typeid (SyntaxTree::ComponentDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ComponentDecl> ());
- return true;
}
virtual void
@@ -58,11 +57,10 @@ namespace CCF
map (typeid (SyntaxTree::ComponentDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ComponentDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp
index e2928bb7439..e8c1c190d88 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp
@@ -28,11 +28,10 @@ namespace CCF
map (typeid (SyntaxTree::ConcreteEventTypeDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ConcreteEventTypeDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp
index 22817fb9cae..6893ed90b80 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp
@@ -28,11 +28,10 @@ namespace CCF
map (typeid (SyntaxTree::HomeDef), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::HomeDef> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp
index 6b6f5820979..dd72be46f7e 100644
--- a/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp
+++ b/TAO/CIAO/CCF/CCF/IDL3/Traversal/Operation.hpp
@@ -29,11 +29,10 @@ namespace CCF
map (typeid (SyntaxTree::ProvidesDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ProvidesDecl> ());
- return true;
}
virtual void
@@ -68,11 +67,10 @@ namespace CCF
map (typeid (SyntaxTree::UsesDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::UsesDecl> ());
- return true;
}
virtual void
@@ -107,11 +105,10 @@ namespace CCF
map (typeid (SyntaxTree::PublishesDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::PublishesDecl> ());
- return true;
}
virtual void
@@ -146,11 +143,10 @@ namespace CCF
map (typeid (SyntaxTree::EmitsDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::EmitsDecl> ());
- return true;
}
virtual void
@@ -185,11 +181,10 @@ namespace CCF
map (typeid (SyntaxTree::ConsumesDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::ConsumesDecl> ());
- return true;
}
virtual void
@@ -224,11 +219,10 @@ namespace CCF
map (typeid (SyntaxTree::HomeFactoryDecl), this);
}
- virtual bool
+ virtual void
traverse (SyntaxTree::NodePtr const& n)
{
traverse (n->dynamic_type<SyntaxTree::HomeFactoryDecl> ());
- return true;
}
virtual void
diff --git a/TAO/CIAO/CCF/Documentation/TODO b/TAO/CIAO/CCF/Documentation/TODO
index e5f72b28805..897be113dc2 100644
--- a/TAO/CIAO/CCF/Documentation/TODO
+++ b/TAO/CIAO/CCF/Documentation/TODO
@@ -14,16 +14,6 @@ Legend:
@@ Write proper build instructions.
-@% Need to do something with this ctor initialization mess.
-
-@@ Can I use C++ templates instead of m4 in BuiltIn stuff?
-
-@@ Typedef.hpp TypeId.hpp: naming inconsistency.
-
-@@ Need ICE mechanism (search for abort ())
-
-@@ Need evolution of semantic action error handling/reporting.
-
@@+ Add Elements to IDL3 and CIDL for consistency.
@@+ Should CIDL syntax tree files have 'using namespace IDL2::SyntaxTree;'
diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
index 2f2c9e0fa0a..8feb988024f 100644
--- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
+++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
@@ -23,6 +23,12 @@ using std::make_pair;
using namespace CCF::CIDL;
using namespace SyntaxTree;
+/*
+
+@@ bad code: i->scope ()->table ()
+
+*/
+
namespace
{
class Declarations
@@ -232,7 +238,7 @@ namespace
ScopedName mapping (orig.scope (), "CCM_" + orig.simple ());
// Check if mapping has already been provided.
- if (i->table ().exist (mapping)) return;
+ if (i->scope ()->table ().exist (mapping)) return;
// Add to the list if it's not already there.
declarations_.add (i);
diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
index 3bf8ad4e33a..9da6e60fac3 100644
--- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
+++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
@@ -146,7 +146,7 @@ int main (int argc, char* argv[])
for (TokenPtr token = lexer.next ();; token = lexer.next ())
{
token_stream.push_back (token);
- // cerr << token << endl;
+ cerr << token << endl;
if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
}
diff --git a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
index 09d5bca0258..15102ef34dd 100644
--- a/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
+++ b/TAO/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
@@ -5,9 +5,6 @@
module M
{
interface I {};
-
- // typedef Internal I;
-
//local interface CCM_I : I {};
};
diff --git a/TAO/CIAO/CIDLC/CIDLC.vcproj b/TAO/CIAO/CIDLC/CIDLC.vcproj
index 2540cdf9ac7..291b9be1b33 100644
--- a/TAO/CIAO/CIDLC/CIDLC.vcproj
+++ b/TAO/CIAO/CIDLC/CIDLC.vcproj
@@ -145,9 +145,6 @@
<File
RelativePath=".\ServantSourceGenerator.cpp">
</File>
- <File
- RelativePath=".\TypeNameEmitter.cpp">
- </File>
</Filter>
<Filter
Name="Header Files"
@@ -177,9 +174,6 @@
<File
RelativePath=".\ServantSourceGenerator.hpp">
</File>
- <File
- RelativePath=".\TypeNameEmitter.hpp">
- </File>
</Filter>
</Files>
<Globals>
diff --git a/TAO/CIAO/CIDLC/Collectors.hpp b/TAO/CIAO/CIDLC/Collectors.hpp
index 4c0bab80143..105d5faf5f5 100644
--- a/TAO/CIAO/CIDLC/Collectors.hpp
+++ b/TAO/CIAO/CIDLC/Collectors.hpp
@@ -1,7 +1,4 @@
-// file : CIDLC/Collectors.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#ifndef COLLECTORS_HPP
#define COLLECTORS_HPP
diff --git a/TAO/CIAO/CIDLC/DescriptorGenerator.cpp b/TAO/CIAO/CIDLC/DescriptorGenerator.cpp
index 610df2c89b7..dd3aca4bcad 100644
--- a/TAO/CIAO/CIDLC/DescriptorGenerator.cpp
+++ b/TAO/CIAO/CIDLC/DescriptorGenerator.cpp
@@ -16,7 +16,6 @@ using std::cout;
using std::endl;
using std::string;
-using namespace StringLiterals;
using namespace CCF::CIDL;
using namespace SyntaxTree;
@@ -33,18 +32,23 @@ namespace
string
compute_repo_id (DeclarationPtr const& d)
{
- if (d->context ().count ( STRS[REPO_ID]))
+ if (d->context ().count (
+ StringLiterals::STRS[StringLiterals::REPO_ID]))
{
- return d->context ().get<string> (STRS[REPO_ID]);
+ return
+ d->context ().get<string> (
+ StringLiterals::STRS[StringLiterals::REPO_ID]);
}
string prefix ("");
TypePrefixPtr tp;
- if (d->context ().count (STRS[TYPE_PREFIX]))
+ if (d->context ().count (
+ StringLiterals::STRS[StringLiterals::TYPE_PREFIX]))
{
tp =
- d->context ().get<TypePrefixPtr> (STRS[TYPE_PREFIX]);
+ d->context ().get<TypePrefixPtr> (
+ StringLiterals::STRS[StringLiterals::TYPE_PREFIX]);
prefix = tp->prefix ().str ();
}
@@ -54,10 +58,12 @@ namespace
while (parent != 0)
{
- if (parent->context ().count (STRS[TYPE_PREFIX]))
+ if (parent->context ().count (
+ StringLiterals::STRS[StringLiterals::TYPE_PREFIX]))
{
tp =
- parent->context ().get<TypePrefixPtr> (STRS[TYPE_PREFIX]);
+ parent->context ().get<TypePrefixPtr> (
+ StringLiterals::STRS[StringLiterals::TYPE_PREFIX]);
prefix = tp->prefix ().str ();
break;
@@ -79,7 +85,7 @@ namespace
string repo_id = "IDL:" + prefix + scope_name + ":1.0";
// Store the repo id for possible future reference.
- d->context ().set<string> (STRS[REPO_ID],
+ d->context ().set<string> (StringLiterals::STRS[StringLiterals::REPO_ID],
repo_id);
return repo_id;
}
diff --git a/TAO/CIAO/CIDLC/DescriptorGenerator.hpp b/TAO/CIAO/CIDLC/DescriptorGenerator.hpp
index d9f0c4ada68..a5d4ce52025 100644
--- a/TAO/CIAO/CIDLC/DescriptorGenerator.hpp
+++ b/TAO/CIAO/CIDLC/DescriptorGenerator.hpp
@@ -1,7 +1,4 @@
-// file : CIDLC/DescriptorGenerator.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#ifndef DESCRIPTOR_GENERATOR_HPP
#define DESCRIPTOR_GENERATOR_HPP
diff --git a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp
index f355de658bb..b7ac8139385 100644
--- a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.cpp
@@ -1,4 +1,4 @@
-// file : CIDLC/ExecutorMappingGenerator.cpp
+// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
// cvs-id : $Id$
@@ -23,6 +23,12 @@ using std::make_pair;
using namespace CCF::CIDL;
using namespace SyntaxTree;
+/*
+
+@@ bad code: i->scope ()->table ()
+
+*/
+
namespace
{
class Declarations
@@ -232,7 +238,7 @@ namespace
ScopedName mapping (orig.scope (), "CCM_" + orig.simple ());
// Check if mapping has already been provided.
- if (i->table ().exist (mapping)) return;
+ if (i->scope ()->table ().exist (mapping)) return;
// Add to the list if it's not already there.
declarations_.add (i);
diff --git a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp
index 768f0fcbd58..10de696e1b3 100644
--- a/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp
+++ b/TAO/CIAO/CIDLC/ExecutorMappingGenerator.hpp
@@ -1,4 +1,4 @@
-// file : CIDLC/ExecutorMappingGenerator.hpp
+// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp
// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
// cvs-id : $Id$
diff --git a/TAO/CIAO/CIDLC/Literals.hpp b/TAO/CIAO/CIDLC/Literals.hpp
index 249ece79fdc..df36b2340cc 100644
--- a/TAO/CIAO/CIDLC/Literals.hpp
+++ b/TAO/CIAO/CIDLC/Literals.hpp
@@ -1,10 +1,4 @@
-// file : CIDLC/Literals.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef LITERALS_HPP
-#define LITERALS_HPP
-
+// $Id$
namespace StringLiterals
{
static const char COPYRIGHT[] =
@@ -104,5 +98,3 @@ namespace StringLiterals
REPO_ID
};
}
-
-#endif // LITERALS_HPP
diff --git a/TAO/CIAO/CIDLC/Makefile.alt b/TAO/CIAO/CIDLC/Makefile.alt
deleted file mode 100644
index b3ea73502a8..00000000000
--- a/TAO/CIAO/CIDLC/Makefile.alt
+++ /dev/null
@@ -1,42 +0,0 @@
-# file : CIDLC/Makefile.alt
-# author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-# cvs-id : $Id$
-
-root = ../CCF
-
-include $(root)/Bootstrap.rules
-
-$(call include, $(root)/Config.rules)
-
-$(call include, $(UTILITY_ROOT)/BuildRules/Executable.pre.rules)
-
-cxx_translation_units := DescriptorGenerator.cpp \
- ExecutorMappingGenerator.cpp \
- RepositoryIdGenerator.cpp \
- ServantGenerator.cpp \
- ServantHeaderGenerator.cpp \
- ServantSourceGenerator.cpp \
- TypeNameEmitter.cpp \
- cidlc.cpp
-
-module_base := cidlc
-module_prefix :=
-module_suffix :=
-
-CXX_PREPROCESS_FLAGS += -I$(root) -I$(UTILITY_ROOT) -I$(BOOST_ROOT)
-
-CXX_LINK_LIBS += -L$(root)/CCF/IDL2 \
- -lIDL2 \
- -L$(root)/CCF/IDL3 \
- -lIDL3 \
- -L$(root)/CCF/CIDL \
- -lCIDL \
- -L$(root)/CCF/CodeGenerationKit \
- -lCodeGenerationKit \
- -L$(root)/CCF/CompilerElements \
- -lCompilerElements \
- -L$(BOOST_ROOT)/lib \
- -lboost_regex \
- -lboost_filesystem
-
-$(call include, $(UTILITY_ROOT)/BuildRules/Executable.post.rules)
diff --git a/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp b/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp
index 408bca2147c..c7409a67a3a 100644
--- a/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp
+++ b/TAO/CIAO/CIDLC/RepositoryIdGenerator.cpp
@@ -41,7 +41,7 @@ namespace
ScopedName decl_name (ti->declaration ());
DeclarationTable::IteratorPair iters (
- ti->table ().lookup (decl_name));
+ ti->scope ()->table ().lookup (decl_name));
for (; iters.first != iters.second; ++iters.first)
{
@@ -99,7 +99,7 @@ namespace
ScopedName decl_name (tp->declaration ());
DeclarationTable::IteratorPair iters (
- tp->table ().lookup (decl_name));
+ tp->scope ()->table ().lookup (decl_name));
for (; iters.first != iters.second; ++iters.first)
{
@@ -112,7 +112,7 @@ namespace
decl->context ().get<TypePrefixPtr> (
StringLiterals::STRS[StringLiterals::TYPE_PREFIX]));
- if ((prev->prefix ()) != (tp->prefix ()))
+ if (prev->prefix () != tp->prefix ())
{
//@@ Seems tp should containt filename and line
@@ -171,6 +171,6 @@ generate (TranslationUnitPtr const& u)
//@@ check errors
}
-
+
return true;
}
diff --git a/TAO/CIAO/CIDLC/ServantGenerator.cpp b/TAO/CIAO/CIDLC/ServantGenerator.cpp
index d1e34450c6c..a5cc3dfd50e 100644
--- a/TAO/CIAO/CIDLC/ServantGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantGenerator.cpp
@@ -1,7 +1,4 @@
-// file : CIDLC/ServantGenerator.cpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#include "ServantGenerator.hpp"
#include "ServantHeaderGenerator.hpp"
#include "ServantSourceGenerator.hpp"
diff --git a/TAO/CIAO/CIDLC/ServantGenerator.hpp b/TAO/CIAO/CIDLC/ServantGenerator.hpp
index f948d89be84..b4de9a024b6 100644
--- a/TAO/CIAO/CIDLC/ServantGenerator.hpp
+++ b/TAO/CIAO/CIDLC/ServantGenerator.hpp
@@ -1,7 +1,4 @@
-// file : CIDLC/ServantGenerator.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#ifndef SERVANT_GENERATOR_HPP
#define SERVANT_GENERATOR_HPP
diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
index df369a5141b..96e5e1f9403 100644
--- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
@@ -1,11 +1,7 @@
-// file : CIDLC/ServantHeaderGenerator.cpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#include "ServantHeaderGenerator.hpp"
#include "Literals.hpp"
-#include "TypeNameEmitter.hpp"
#include "CCF/CodeGenerationKit/Regex.hpp"
@@ -31,6 +27,152 @@ namespace
namespace
{
+ // Generates the name of an operation's return type.
+ //
+ //
+ class ReturnTypeNameEmitter : public HeaderEmitterBase,
+ public Traversal::Void,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String,
+ public Traversal::LocalInterfaceDecl
+ {
+ public:
+ ReturnTypeNameEmitter (ostream& os_)
+ : HeaderEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (VoidPtr const&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "char *";
+ }
+
+ virtual void
+ traverse (LocalInterfaceDeclPtr const& i)
+ {
+ os << i->name () << "_ptr";
+ }
+ };
+
+ // Generates the typename of an IN argument.
+ //
+ //
+ class INArgTypeNameEmitter : public HeaderEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ INArgTypeNameEmitter (ostream& os_)
+ : HeaderEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "const char *";
+ }
+ };
+
+ // Generates the typename of an OUT argument.
+ //
+ //
+ class OUTArgTypeNameEmitter : public HeaderEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ OUTArgTypeNameEmitter (ostream& os_)
+ : HeaderEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean_out";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long_out";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "::CORBA::String_out";
+ }
+ };
+
+ // Generates the typename of an INOUT argument.
+ //
+ //
+ class INOUTArgTypeNameEmitter : public HeaderEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ INOUTArgTypeNameEmitter (ostream& os_)
+ : HeaderEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean &";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long &";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "char *&";
+ }
+ };
+
// Generates parts of the accessor operation for an attribute.
//
//
diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp
index 31ae0e1ed0d..3cafbc6262b 100644
--- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp
+++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.hpp
@@ -1,7 +1,4 @@
-// file : CIDLC/ServantHeaderGenerator.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#ifndef SERVANT_HEADER_GENERATOR_HPP
#define SERVANT_HEADER_GENERATOR_HPP
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
index afcee782c3c..f71e88da7b3 100644
--- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
@@ -1,7 +1,4 @@
-// file : CIDLC/ServantSourceGenerator.cpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#include "ServantSourceGenerator.hpp"
#include "CCF/CIDL/SyntaxTree.hpp"
@@ -10,7 +7,6 @@
#include "CCF/CodeGenerationKit/Regex.hpp"
#include "Literals.hpp"
-#include "TypeNameEmitter.hpp"
#include <ostream>
#include <sstream>
@@ -38,6 +34,152 @@ namespace
return os.str ();
}
+ // Generates the name of an operation's return type.
+ //
+ //
+ class ReturnTypeNameEmitter : public SourceEmitterBase,
+ public Traversal::Void,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String,
+ public Traversal::LocalInterfaceDecl
+ {
+ public:
+ ReturnTypeNameEmitter (ostream& os_)
+ : SourceEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (VoidPtr const&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "char *";
+ }
+
+ virtual void
+ traverse (LocalInterfaceDeclPtr const& i)
+ {
+ os << i->name () << "_ptr";
+ }
+ };
+
+ // Generates the typename of an IN argument.
+ //
+ //
+ class INArgTypeNameEmitter : public SourceEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ INArgTypeNameEmitter (ostream& os_)
+ : SourceEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "const char *";
+ }
+ };
+
+ // Generates the typename of an OUT argument.
+ //
+ //
+ class OUTArgTypeNameEmitter : public SourceEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ OUTArgTypeNameEmitter (ostream& os_)
+ : SourceEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean_out";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long_out";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "::CORBA::String_out";
+ }
+ };
+
+ // Generates the typename of an INOUT argument.
+ //
+ //
+ class INOUTArgTypeNameEmitter : public SourceEmitterBase,
+ public Traversal::Boolean,
+ public Traversal::Long,
+ public Traversal::String
+ {
+ public:
+ INOUTArgTypeNameEmitter (ostream& os_)
+ : SourceEmitterBase (os_)
+ {
+ }
+
+ virtual void
+ traverse (BooleanPtr const&)
+ {
+ os << "::CORBA::Boolean &";
+ }
+
+ virtual void
+ traverse (LongPtr const&)
+ {
+ os << "::CORBA::Long &";
+ }
+
+ virtual void
+ traverse (StringPtr const&)
+ {
+ os << "char *&";
+ }
+ };
+
// Generates an argument's identifier.
//
//
@@ -2550,7 +2692,7 @@ ServantSourceEmitter::generate (TranslationUnitPtr const& u)
component.add_scope_delegate (&publishes_emitter);
Traversal::FileScope fs;
- NamespaceEmitter m (os, declarations_);
+ NamespaceEmitter m (os, declarations_);;
fs.add_scope_delegate (&m);
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp
index 385a5ceb331..a88ad27bcec 100644
--- a/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp
+++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.hpp
@@ -1,7 +1,4 @@
-// file : CIDLC/ServantSourceGenerator.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
+// $Id$
#ifndef SERVANT_SOURCE_GENERATOR_HPP
#define SERVANT_SOURCE_GENERATOR_HPP
diff --git a/TAO/CIAO/CIDLC/TypeNameEmitter.cpp b/TAO/CIAO/CIDLC/TypeNameEmitter.cpp
deleted file mode 100644
index ac742eb11b0..00000000000
--- a/TAO/CIAO/CIDLC/TypeNameEmitter.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-// file : CIDLC/TypeNameEmitter.cpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
-#include "TypeNameEmitter.hpp"
-
-#include <ostream>
-
-using namespace std;
-
-TypeNameEmitter::TypeNameEmitter (ostream& os_)
- : os (os_)
-{
-}
-
-// ====================================================================
-
-ReturnTypeNameEmitter::ReturnTypeNameEmitter (ostream& os_)
- : TypeNameEmitter (os_)
-{
-}
-
-void
-ReturnTypeNameEmitter::traverse (VoidPtr const&)
-{
- os << "void";
-}
-
-void
-ReturnTypeNameEmitter::traverse (BooleanPtr const&)
-{
- os << "::CORBA::Boolean";
-}
-
-void
-ReturnTypeNameEmitter::traverse (OctetPtr const&)
-{
- os << "::CORBA::Octet";
-}
-
-void
-ReturnTypeNameEmitter::traverse (CharPtr const&)
-{
- os << "::CORBA::Char";
-}
-
-void
-ReturnTypeNameEmitter::traverse (WcharPtr const&)
-{
- os << "::CORBA::WChar";
-}
-
-void
-ReturnTypeNameEmitter::traverse (ShortPtr const&)
-{
- os << "::CORBA::Short";
-}
-
-void
-ReturnTypeNameEmitter::traverse (UnsignedShortPtr const&)
-{
- os << "::CORBA::UShort";
-}
-
-void
-ReturnTypeNameEmitter::traverse (LongPtr const&)
-{
- os << "::CORBA::Long";
-}
-
-void
-ReturnTypeNameEmitter::traverse (UnsignedLongPtr const&)
-{
- os << "::CORBA::ULong";
-}
-
-void
-ReturnTypeNameEmitter::traverse (LongLongPtr const&)
-{
- os << "::CORBA::LongLong";
-}
-
-void
-ReturnTypeNameEmitter::traverse (UnsignedLongLongPtr const&)
-{
- os << "::CORBA::ULongLong";
-}
-
-void
-ReturnTypeNameEmitter::traverse (FloatPtr const&)
-{
- os << "::CORBA::Float";
-}
-
-void
-ReturnTypeNameEmitter::traverse (DoublePtr const&)
-{
- os << "::CORBA::Double";
-}
-
-void
-ReturnTypeNameEmitter::traverse (StringPtr const&)
-{
- os << "char *";
-}
-
-void
-ReturnTypeNameEmitter::traverse (WstringPtr const&)
-{
- os << "::CORBA::WChar *";
-}
-
-void
-ReturnTypeNameEmitter::traverse (ObjectPtr const&)
-{
- os << "::CORBA::Object_ptr";
-}
-
-void
-ReturnTypeNameEmitter::traverse (ValueBasePtr const&)
-{
- os << "::CORBA::ValueBase *";
-}
-
-void
-ReturnTypeNameEmitter::traverse (AnyPtr const&)
-{
- os << "::CORBA::Any *";
-}
-
-void
-ReturnTypeNameEmitter::traverse (LocalInterfaceDeclPtr const& i)
-{
- os << i->name () << "_ptr";
-}
-
-// ===============================================================
-
-INArgTypeNameEmitter::INArgTypeNameEmitter (ostream& os_)
- : TypeNameEmitter (os_)
-{
-}
-
-void
-INArgTypeNameEmitter::traverse (BooleanPtr const&)
-{
- os << "::CORBA::Boolean";
-}
-
-void
-INArgTypeNameEmitter::traverse (OctetPtr const&)
-{
- os << "::CORBA::Octet";
-}
-
-void
-INArgTypeNameEmitter::traverse (CharPtr const&)
-{
- os << "::CORBA::Char";
-}
-
-void
-INArgTypeNameEmitter::traverse (WcharPtr const&)
-{
- os << "::CORBA::WChar";
-}
-
-void
-INArgTypeNameEmitter::traverse (ShortPtr const&)
-{
- os << "::CORBA::Short";
-}
-
-void
-INArgTypeNameEmitter::traverse (UnsignedShortPtr const&)
-{
- os << "::CORBA::UShort";
-}
-
-void
-INArgTypeNameEmitter::traverse (LongPtr const&)
-{
- os << "::CORBA::Long";
-}
-
-void
-INArgTypeNameEmitter::traverse (UnsignedLongPtr const&)
-{
- os << "::CORBA::ULong";
-}
-
-void
-INArgTypeNameEmitter::traverse (LongLongPtr const&)
-{
- os << "::CORBA::LongLong";
-}
-
-void
-INArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&)
-{
- os << "::CORBA::ULongLong";
-}
-
-void
-INArgTypeNameEmitter::traverse (FloatPtr const&)
-{
- os << "::CORBA::Float";
-}
-
-void
-INArgTypeNameEmitter::traverse (DoublePtr const&)
-{
- os << "::CORBA::Double";
-}
-
-void
-INArgTypeNameEmitter::traverse (StringPtr const&)
-{
- os << "const char *";
-}
-
-void
-INArgTypeNameEmitter::traverse (WstringPtr const&)
-{
- os << "const ::CORBA::WChar *";
-}
-
-void
-INArgTypeNameEmitter::traverse (ObjectPtr const&)
-{
- os << "::CORBA::Object_ptr";
-}
-
-void
-INArgTypeNameEmitter::traverse (ValueBasePtr const&)
-{
- os << "::CORBA::ValueBase *";
-}
-
-void
-INArgTypeNameEmitter::traverse (AnyPtr const&)
-{
- os << "const ::CORBA::Any &";
-}
-
-// ===============================================================
-
-INOUTArgTypeNameEmitter::INOUTArgTypeNameEmitter (ostream& os_)
- : TypeNameEmitter (os_)
-{
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (BooleanPtr const&)
-{
- os << "::CORBA::Boolean &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (OctetPtr const&)
-{
- os << "::CORBA::Octet &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (CharPtr const&)
-{
- os << "::CORBA::Char &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (WcharPtr const&)
-{
- os << "::CORBA::WChar &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (ShortPtr const&)
-{
- os << "::CORBA::Short &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (UnsignedShortPtr const&)
-{
- os << "::CORBA::UShort &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (LongPtr const&)
-{
- os << "::CORBA::Long &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (UnsignedLongPtr const&)
-{
- os << "::CORBA::ULong &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (LongLongPtr const&)
-{
- os << "::CORBA::LongLong &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&)
-{
- os << "::CORBA::ULongLong &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (FloatPtr const&)
-{
- os << "::CORBA::Float &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (DoublePtr const&)
-{
- os << "::CORBA::Double &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (StringPtr const&)
-{
- os << "char *&";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (WstringPtr const&)
-{
- os << "::CORBA::WChar *&";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (ObjectPtr const&)
-{
- os << "::CORBA::Object_ptr &";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (ValueBasePtr const&)
-{
- os << "::CORBA::ValueBase *&";
-}
-
-void
-INOUTArgTypeNameEmitter::traverse (AnyPtr const&)
-{
- os << "::CORBA::Any &";
-}
-
-// =================================================================
-
-OUTArgTypeNameEmitter::OUTArgTypeNameEmitter (ostream& os_)
- : TypeNameEmitter (os_)
-{
-}
-
-void
-OUTArgTypeNameEmitter::traverse (BooleanPtr const&)
-{
- os << "::CORBA::Boolean_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (OctetPtr const&)
-{
- os << "::CORBA::Octet_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (CharPtr const&)
-{
- os << "::CORBA::Char_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (WcharPtr const&)
-{
- os << "::CORBA::WChar_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (ShortPtr const&)
-{
- os << "::CORBA::Short_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (UnsignedShortPtr const&)
-{
- os << "::CORBA::UShort_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (LongPtr const&)
-{
- os << "::CORBA::Long_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (UnsignedLongPtr const&)
-{
- os << "::CORBA::ULong_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (LongLongPtr const&)
-{
- os << "::CORBA::LongLong_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (UnsignedLongLongPtr const&)
-{
- os << "::CORBA::ULongLong_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (FloatPtr const&)
-{
- os << "::CORBA::Float_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (DoublePtr const&)
-{
- os << "::CORBA::Double_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (StringPtr const&)
-{
- os << "::CORBA::String_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (WstringPtr const&)
-{
- os << "::CORBA::WString_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (ObjectPtr const&)
-{
- os << "::CORBA::Object_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (ValueBasePtr const&)
-{
- os << "::CORBA::ValueBase_out";
-}
-
-void
-OUTArgTypeNameEmitter::traverse (AnyPtr const&)
-{
- os << "::CORBA::Any_out";
-}
-
-
diff --git a/TAO/CIAO/CIDLC/TypeNameEmitter.hpp b/TAO/CIAO/CIDLC/TypeNameEmitter.hpp
deleted file mode 100644
index 6e0eae77e2a..00000000000
--- a/TAO/CIAO/CIDLC/TypeNameEmitter.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-// file : CIDLC/TypeNameEmitter.hpp
-// author : Jeff Parsons <j.parsons@vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef TYPENAME_EMITTER_HPP
-#define TYPENAME_EMITTER_HPP
-
-#include "CCF/CIDL/Traversal.hpp"
-
-using namespace CCF;
-using namespace CIDL;
-using namespace SyntaxTree;
-
-// Base class that holds the ostream member
-// common to every other class in this file,
-// and collects the ancestors in one place.
-//
-class TypeNameEmitter : public Traversal::Void,
- public Traversal::Boolean,
- public Traversal::Octet,
- public Traversal::Char,
- public Traversal::Wchar,
- public Traversal::Short,
- public Traversal::UnsignedShort,
- public Traversal::Long,
- public Traversal::UnsignedLong,
- public Traversal::LongLong,
- public Traversal::UnsignedLongLong,
- public Traversal::Float,
- public Traversal::Double,
- public Traversal::String,
- public Traversal::Wstring,
- public Traversal::Object,
- public Traversal::ValueBase,
- public Traversal::Any,
- public Traversal::LocalInterfaceDecl
-{
-protected:
- TypeNameEmitter (std::ostream&);
-
- std::ostream& os;
-};
-
-// Generates the name of an operation's return type.
-//
-//
-class ReturnTypeNameEmitter : public TypeNameEmitter
-{
-public:
- ReturnTypeNameEmitter (std::ostream&);
-
- virtual void traverse (VoidPtr const&);
- virtual void traverse (BooleanPtr const&);
- virtual void traverse (OctetPtr const&);
- virtual void traverse (CharPtr const&);
- virtual void traverse (WcharPtr const&);
- virtual void traverse (ShortPtr const&);
- virtual void traverse (UnsignedShortPtr const&);
- virtual void traverse (LongPtr const&);
- virtual void traverse (UnsignedLongPtr const&);
- virtual void traverse (LongLongPtr const&);
- virtual void traverse (UnsignedLongLongPtr const&);
- virtual void traverse (FloatPtr const&);
- virtual void traverse (DoublePtr const&);
- virtual void traverse (StringPtr const&);
- virtual void traverse (WstringPtr const&);
- virtual void traverse (ObjectPtr const&);
- virtual void traverse (ValueBasePtr const&);
- virtual void traverse (AnyPtr const&);
- virtual void traverse (LocalInterfaceDeclPtr const&);
-};
-
-// Generates the typename of an IN argument.
-//
-//
-class INArgTypeNameEmitter : public TypeNameEmitter
-{
-public:
- INArgTypeNameEmitter (std::ostream&);
-
- virtual void traverse (BooleanPtr const&);
- virtual void traverse (OctetPtr const&);
- virtual void traverse (CharPtr const&);
- virtual void traverse (WcharPtr const&);
- virtual void traverse (ShortPtr const&);
- virtual void traverse (UnsignedShortPtr const&);
- virtual void traverse (LongPtr const&);
- virtual void traverse (UnsignedLongPtr const&);
- virtual void traverse (LongLongPtr const&);
- virtual void traverse (UnsignedLongLongPtr const&);
- virtual void traverse (FloatPtr const&);
- virtual void traverse (DoublePtr const&);
- virtual void traverse (StringPtr const&);
- virtual void traverse (WstringPtr const&);
- virtual void traverse (ObjectPtr const&);
- virtual void traverse (ValueBasePtr const&);
- virtual void traverse (AnyPtr const&);
-};
-
-// Generates the typename of an INOUT argument.
-//
-//
-class INOUTArgTypeNameEmitter : public TypeNameEmitter
-{
-public:
- INOUTArgTypeNameEmitter (std::ostream&);
-
- virtual void traverse (BooleanPtr const&);
- virtual void traverse (OctetPtr const&);
- virtual void traverse (CharPtr const&);
- virtual void traverse (WcharPtr const&);
- virtual void traverse (ShortPtr const&);
- virtual void traverse (UnsignedShortPtr const&);
- virtual void traverse (LongPtr const&);
- virtual void traverse (UnsignedLongPtr const&);
- virtual void traverse (LongLongPtr const&);
- virtual void traverse (UnsignedLongLongPtr const&);
- virtual void traverse (FloatPtr const&);
- virtual void traverse (DoublePtr const&);
- virtual void traverse (StringPtr const&);
- virtual void traverse (WstringPtr const&);
- virtual void traverse (ObjectPtr const&);
- virtual void traverse (ValueBasePtr const&);
- virtual void traverse (AnyPtr const&);
-};
-
-// Generates the typename of an OUT argument.
-//
-//
-class OUTArgTypeNameEmitter : public TypeNameEmitter
-{
-public:
- OUTArgTypeNameEmitter (std::ostream&);
-
- virtual void traverse (BooleanPtr const&);
- virtual void traverse (OctetPtr const&);
- virtual void traverse (CharPtr const&);
- virtual void traverse (WcharPtr const&);
- virtual void traverse (ShortPtr const&);
- virtual void traverse (UnsignedShortPtr const&);
- virtual void traverse (LongPtr const&);
- virtual void traverse (UnsignedLongPtr const&);
- virtual void traverse (LongLongPtr const&);
- virtual void traverse (UnsignedLongLongPtr const&);
- virtual void traverse (FloatPtr const&);
- virtual void traverse (DoublePtr const&);
- virtual void traverse (StringPtr const&);
- virtual void traverse (WstringPtr const&);
- virtual void traverse (ObjectPtr const&);
- virtual void traverse (ValueBasePtr const&);
- virtual void traverse (AnyPtr const&);
-};
-
-#endif /* TYPENAME_EMITTER_HPP */
-
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index 111dbea9b5e..b42220ab247 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1,173 +1,3 @@
-Tue Oct 14 22:44:43 2003 Nanbor Wang <nanbor@cs.wustl.edu>
-
- * examples/handcrafted/Hello/simple_client.cpp:
- * examples/handcrafted/Hello/client.cpp: Added the missing streams
- header file.
-
-Tue Oct 14 17:18:43 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
-
- * CIDLC/Makefile.alt: added alternative (to mpc) means of
- building CIDL compiler.
-
-Tue Oct 14 16:57:54 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
-
- * CIDLC/ExecutorMappingGenerator.cpp:
- * CIDLC/RepositoryIdGenerator.cpp: some minor clean-up's.
-
-Tue Oct 14 16:41:41 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
-
- * CCF/IDL2/LexicalAnalyzer.cpp:
- * CCF/IDL2/Makefile.archive:
- * CCF/IDL2/Parser.cpp:
- * CCF/IDL2/Parser.hpp:
- * CCF/IDL2/SemanticAction.hpp:
- * CCF/IDL2/SyntaxTree.hpp:
- * CCF/IDL2/Traversal.hpp:
- * CCF/IDL2/SemanticAction/Factory.hpp:
- * CCF/IDL2/SemanticAction/Typedef.hpp:
- * CCF/IDL2/SemanticAction/Impl/Factory.hpp:
- * CCF/IDL2/SemanticAction/Impl/Interface.hpp:
- * CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
- * CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
- * CCF/IDL2/SyntaxTree/BuiltIn.hpp:
- * CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4:
- * CCF/IDL2/SyntaxTree/Elements.cpp:
- * CCF/IDL2/SyntaxTree/Elements.hpp:
- * CCF/IDL2/SyntaxTree/Elements.tpp:
- * CCF/IDL2/SyntaxTree/Interface.hpp:
- * CCF/IDL2/SyntaxTree/Makefile.alt:
- * CCF/IDL2/SyntaxTree/Module.hpp:
- * CCF/IDL2/SyntaxTree/Operation.hpp:
- * CCF/IDL2/SyntaxTree/Translation.cpp:
- * CCF/IDL2/SyntaxTree/Translation.hpp:
- * CCF/IDL2/SyntaxTree/TypeId.cpp:
- * CCF/IDL2/SyntaxTree/Typedef.cpp:
- * CCF/IDL2/SyntaxTree/Typedef.hpp:
- * CCF/IDL2/SyntaxTree/ValueType.hpp:
- * CCF/IDL2/Traversal/BuiltIn.hpp:
- * CCF/IDL2/Traversal/BuiltIn.hpp.m4:
- * CCF/IDL2/Traversal/Elements.cpp:
- * CCF/IDL2/Traversal/Elements.hpp:
- * CCF/IDL2/Traversal/Interface.hpp:
- * CCF/IDL2/Traversal/Module.hpp:
- * CCF/IDL2/Traversal/Operation.hpp:
- * CCF/IDL2/Traversal/Translation.hpp:
- * CCF/IDL2/Traversal/TypeId.hpp:
- * CCF/IDL2/Traversal/Typedef.cpp:
- * CCF/IDL2/Traversal/Typedef.hpp:
- * CCF/IDL3/SyntaxTree/Component.hpp:
- * CCF/IDL3/SyntaxTree/EventType.hpp:
- * CCF/IDL3/SyntaxTree/Home.hpp:
- * CCF/IDL3/SyntaxTree/Operation.hpp:
- * CCF/IDL3/Traversal/Component.hpp:
- * CCF/IDL3/Traversal/EventType.hpp:
- * CCF/IDL3/Traversal/Home.hpp:
- * CCF/IDL3/Traversal/Operation.hpp:
- * CCF/CIDL/SyntaxTree/Composition.hpp:
- * CCF/CIDL/SyntaxTree/HomeExecutor.hpp:
- * CCF/CIDL/Traversal/Composition.hpp:
- * CCF/CIDL/Traversal/HomeExecutor.hpp: First part of
- typedef-related infrastructure.
-
- * CCF/CodeGenerationKit/IndentationIDL.hpp:
- * CCF/CompilerElements/Preprocessor.hpp:
- * Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
- * Example/CIDL/LocalExecutorMapping/cidlc.cpp:
- * Example/CIDL/LocalExecutorMapping/test-0.idl: some minor
- clean-up's.
-
- * Documentation/TODO: added a few more items.
-
-Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
-
- * performance-tests/Benchmark/RoundTrip/svc.conf:
- Changed to load Advanced_Resource_Factory dynamically.
-
- * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
- * performance-tests/Benchmark/RoundTripServer/LatencyTest.h:
- * performance-tests/Benchmark/RoundTripServer/server.cpp:
- Changed to implement the Benchmark::Latency_Test interface
- instead of the Latency_Test interface. Otherwise, we won't be
- able to connect the interface to a receptacle expecting another
- interface type.
-
-Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
-
- * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
- Fixed a minor compilation problem.
-
- * performance-tests/Benchmark/descriptors/Test-ior.cad:
- * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl:
- * performance-tests/Benchmark/RoundTripServer/server.cpp:
-
- Changed to output IOR to a fixed file named "rtserver.ior" and
- refer to the object as file://rtserver.ior in the cad file
-
-Mon Oct 13 23:41:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
-
- * examples/handcrafted/Display/RateGen/controller.cpp:
- * examples/handcrafted/Display/RateGen/client.cpp: Added inclusion
- of "ace/streams.h" to make them compile.
-
-Mon Oct 13 22:31:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
-
- * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp:
- Fixed a fuzz warning.
-
-Mon Oct 13 16:49:00 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * tools/RTComponentServer/RTConfig_Manager.h:
- * tools/RTComponentServer/ComponentServer_Task.h:
- Added /**/ to fix Fuzz errors.
-
-Sun Oct 12 20:44:41 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-
- * CIDLC/Collectors.hpp:
- * CIDLC/DescriptorGenerator.cpp:
- * CIDLC/DescriptorGenerator.hpp:
- * CIDLC/ExecutorMappingGenerator.cpp:
- * CIDLC/ExecutorMappingGenerator.hpp:
- * CIDLC/Literals.hpp:
- * CIDLC/ServantGenerator.cpp:
- * CIDLC/ServantGenerator.hpp:
- * CIDLC/ServantHeaderGenerator.cpp:
- * CIDLC/ServantHeaderGenerator.hpp:
- * CIDLC/ServantSourceGenerator.cpp:
- * CIDLC/ServantSourceGenerator.hpp:
-
- Changed top of files to match the
- title/author/cvs id format for all other
- CCF and CIDLC files.
-
- * CIDLC/TypeNameEmitter.cpp:
- * CIDLC/TypeNameEmitter.hpp:
-
- New files, adding support for all basic IDL
- types, and factoring out the typename emitter
- classes for operation return types and parameters
- into a separate translation unit, to eliminate
- the duplication in ServantHeaderGenerator.cpp and
- ServantSourceGenerator.cpp.
-
- * CIDLC/cidlc.mpc:
- * CIDLC/CIDLC.vcproj:
-
- Updated with the new files above.
-
-Sun Oct 12 18:36:16 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
-
- * performance-tests/Benchmark/Benchmark.mpc:
- * performance-tests/Benchmark/Benchmark.idl:
- * performance-tests/Benchmark/server.cpp:
- * performance-tests/Benchmark/svc.conf:
- * performance-tests/Benchmark/LatencyTest.h:
- * performance-tests/Benchmark/LatencyTest.cpp:
- * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
- * performance-tests/Benchmark/RoundTripClient/client.cpp:
- * performance-tests/Benchmark/RoundTrip/RoundTrip.idl:
- Added test scenario in which a CORBA component interacts with
- a CORBA server.
-
Sat Oct 11 00:18:13 2003 Nanbor Wang <nanbor@cs.wustl.edu>
* bin/generate_component_mpc.pl: My previous change didn't
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp
index 48e13f06e03..0341654a273 100644
--- a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp
@@ -2,7 +2,7 @@
//==============================================================
/**
- * @file RTEventService_exec.cpp
+ * @file RTEventService_exec.h
*
* Source file for the actual RTEventService and RTEventServiceHome
* component implementations.
diff --git a/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp b/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp
index 27523ecbde1..1e894f82d81 100644
--- a/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp
+++ b/TAO/CIAO/examples/handcrafted/Display/RateGen/client.cpp
@@ -10,7 +10,6 @@
*/
#include "RateGenC.h"
-#include "ace/streams.h"
int
main (int argc, char *argv[])
diff --git a/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp b/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp
index 95f566ac95c..b681531fc53 100644
--- a/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp
+++ b/TAO/CIAO/examples/handcrafted/Display/RateGen/controller.cpp
@@ -2,7 +2,6 @@
#include "RateGenC.h"
#include "ace/Get_Opt.h"
-#include "ace/streams.h"
/**
* @file controller.cpp
diff --git a/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini b/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini
index 30e49defa84..7eb0600bad5 100644
--- a/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini
+++ b/TAO/CIAO/examples/handcrafted/Hello/CIAO_Installation_Data.ini
@@ -1,3 +1,3 @@
[ComponentInstallation]
-DCE:05833d92-4783-4b85-ac14-e2575dac26f7=hello_servants
DCE:530a6305-8181-47ca-bd82-0b834016db97=hello_executors
+DCE:05833d92-4783-4b85-ac14-e2575dac26f7=hello_servants
diff --git a/TAO/CIAO/examples/handcrafted/Hello/client.cpp b/TAO/CIAO/examples/handcrafted/Hello/client.cpp
index df7497cd9b9..b85cfda64e5 100644
--- a/TAO/CIAO/examples/handcrafted/Hello/client.cpp
+++ b/TAO/CIAO/examples/handcrafted/Hello/client.cpp
@@ -2,7 +2,6 @@
#include "helloC.h"
#include "ace/Read_Buffer.h"
-#include "ace/streams.h"
int
invoke (CORBA::Object_ptr obj,
diff --git a/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp b/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp
index 89fde740942..39f74cf1f01 100644
--- a/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp
+++ b/TAO/CIAO/examples/handcrafted/Hello/simple_client.cpp
@@ -4,7 +4,6 @@
#include "ace/Get_Opt.h"
#include "ace/Read_Buffer.h"
#include "helloC.h"
-#include "ace/streams.h"
char *ior = 0;
int shutdown_server = 0;
diff --git a/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl b/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl
index d363628c891..867feff4407 100644
--- a/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl
+++ b/TAO/CIAO/performance-tests/Benchmark/Benchmark.idl
@@ -12,6 +12,7 @@
#ifndef CIAO_BENCHMARK_IDL
#define CIAO_BENCHMARK_IDL
+#include <Components.idl>
module Benchmark
{
diff --git a/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc b/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc
index 7d324b28f91..278ca63d665 100644
--- a/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc
+++ b/TAO/CIAO/performance-tests/Benchmark/Benchmark.mpc
@@ -27,10 +27,3 @@ project(Benchmark_svnt) : ciao_server {
BenchmarkS.cpp
}
}
-
-project (server) : taoserver, strategies {
- Source_Files {
- server.cpp
- LatencyTest.cpp
- }
-}
diff --git a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp b/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp
deleted file mode 100644
index fd92c9e99fd..00000000000
--- a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// $Id$
-//
-#include "LatencyTest.h"
-
-LatencyTest::LatencyTest (CORBA::ORB_ptr orb)
- : orb_ (CORBA::ORB::_duplicate (orb))
-{
-}
-
-
-CORBA::Long
-LatencyTest::makeCall (CORBA::Long send_time
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return send_time;
-}
-
-void
-LatencyTest::shutdown (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
-}
diff --git a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h b/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h
deleted file mode 100644
index 54e48eff66b..00000000000
--- a/TAO/CIAO/performance-tests/Benchmark/LatencyTest.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// $Id$
-//
-
-#ifndef LATENCYTEST_H
-#define LATENCYTEST_H
-#include /**/ "ace/pre.h"
-
-#include "BenchmarkS.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::LatencyTest interface
-class LatencyTest
-: public virtual POA_Benchmark::LatencyTest,
- public virtual PortableServer::RefCountServantBase
-{
- public:
- /// Constructor
- LatencyTest (CORBA::ORB_ptr orb);
-
- // = The skeleton methods
- virtual CORBA::Long makeCall (CORBA::Long 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 /* LATENCYTEST_H */
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl
index 73a00422297..4d0dfe1f292 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl
@@ -12,7 +12,6 @@
#define CIAO_ROUNDTRIP_IDL
#include "../Benchmark.idl"
-#include <Components.idl>
module Benchmark
{
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf
index e1706aae4e5..7b8129f5667 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf
@@ -1,6 +1,6 @@
#
# $Id$
#
-dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory () "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null"
+static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null"
static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0"
static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW"
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl
index 396da6e5e7f..8d06c94ecf1 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl
@@ -11,7 +11,6 @@
#ifndef CIAO_ROUNDTRIPCLIENT_IDL
#define CIAO_ROUNDTRIPCLIENT_IDL
-#include <Components.idl>
#include "../Benchmark.idl"
module Benchmark
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
index 90c2bb71eac..98bac8ebcbf 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
@@ -59,7 +59,8 @@ project(RoundTripClient_exec) : ciao_component {
}
-project (*client) : ciao_client {
+
+project (RoundTripClient_client) : ciao_client, valuetype {
exename = client
after += RoundTripClient_stub
libs += RoundTripClient_stub Benchmark_stub
@@ -74,7 +75,7 @@ project (*client) : ciao_client {
}
-//project (RoundTripClient_controller) : ciao_client {
+//project (RoundTripClient_controller) : ciao_client, valuetype {
// exename = controller
// after += RoundTripClient_stub
// libs += RoundTripClient_stub Benchmark_stub
@@ -87,3 +88,4 @@ project (*client) : ciao_client {
// controller.cpp
// }
//}
+
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
index 24fba631f87..c4f6c586c06 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
@@ -66,8 +66,7 @@ MyImpl::RoundTripClient_exec_i::start ()
CORBA::Long test_data = 0L;
//Warm up the system
- int i = 0;
- for (i=0; i < 100; i++)
+ for (int i=0; i < 100; i++)
lt->makeCall (test_data);
ACE_DEBUG ((LM_DEBUG, "MyImpl::start: warmed up the system\n"));
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp
index a5a8a3b02cb..85bf2e1d370 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp
@@ -30,6 +30,19 @@ main (int argc, char *argv[])
CORBA::Object_var obj
= orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
+/*
+ Benchmark::RoundTripClientHome_var home
+ = Benchmark::RoundTripClientHome::_narrow (obj.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (home.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire TestHome objref\n"), -1);
+
+ Benchmark::RoundTripClient_var test
+ = home->create (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+*/
Benchmark::RoundTripClient_var test =
Benchmark::RoundTripClient::_narrow(obj.in());
//Get the RoundTrip reference
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl
index 230d137e1bb..147390a80ee 100755
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl
@@ -24,7 +24,7 @@ unlink $am_ior;
# CIAO Daemon command line arguments
-$daemon_args = "-c $CIAO_ROOT/performance-tests/Benchmark/RoundTrip/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+$daemon_args = "-ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
$assembly_manager_args = "-o $am_ior -c test.dat";
@@ -69,6 +69,5 @@ $DS->Kill ();
#unlink $daemon_ior;
#unlink $am_ior;
-unlink rtserver.ior;
exit $status;
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h
index 75f37982ae5..96a53b24d34 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h
@@ -6,7 +6,7 @@
#define LATENCYTEST_H
#include /**/ "ace/pre.h"
-#include "../BenchmarkS.h"
+#include "TestS.h"
#if defined (_MSC_VER)
# if (_MSC_VER >= 1200)
@@ -17,7 +17,7 @@
/// Implement the Test::LatencyTest interface
class LatencyTest_Impl
-: public virtual POA_Benchmark::LatencyTest
+: public virtual POA_LatencyTest
, public virtual PortableServer::RefCountServantBase
{
public:
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
index a72c145f991..749b8913c82 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
@@ -1,13 +1,6 @@
// $Id$
-project (RoundTripServer) : taoserver, strategies {
- after += Benchmark_svnt
- libs += Benchmark_stub Benchmark_svnt
- libpaths += ..
-
- IDL_Files {
- }
-
- Source_Files {
+project (RoundTripServer) : taoserver, strategies {
+ Source_Files {
server.cpp
LatencyTest.cpp
}
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp
index dda5a49e1d4..2ba3db0ab27 100644
--- a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp
+++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp
@@ -5,7 +5,7 @@
#include "tao/Strategies/advanced_resource.h"
-const char *ior_output_file = "rtserver.ior";
+const char *ior_output_file = "test.ior";
int
main (int argc, char *argv[])
@@ -61,7 +61,7 @@ main (int argc, char *argv[])
1);
PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
- Benchmark::LatencyTest_var roundtrip =
+ LatencyTest_var roundtrip =
roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -70,15 +70,6 @@ main (int argc, char *argv[])
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);
-
ACE_DEBUG ((LM_DEBUG, "%s", ior.in ()));
poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
diff --git a/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad
index a917affec85..061db64d81c 100644
--- a/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad
+++ b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad
@@ -32,7 +32,7 @@
<existinginterface>
<findby>
<!-- One needs to add the correct IOR of the server here -->
- <stringifiedobjectref>file://rtserver.ior</stringifiedobjectref>
+ <stringifiedobjectref></stringifiedobjectref>
</findby>
</existinginterface>
</connectinterface>
diff --git a/TAO/CIAO/performance-tests/Benchmark/server.cpp b/TAO/CIAO/performance-tests/Benchmark/server.cpp
deleted file mode 100644
index 43ecd5c3594..00000000000
--- a/TAO/CIAO/performance-tests/Benchmark/server.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// $Id$
-
-#include "LatencyTest.h"
-#include "ace/Sched_Params.h"
-
-#include "tao/Strategies/advanced_resource.h"
-
-const char *ior_output_file = "test.ior";
-
-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;
-
- LatencyTest *roundtrip_impl;
- ACE_NEW_RETURN (roundtrip_impl,
- LatencyTest (orb.in ()),
- 1);
- PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
-
- //Get the RoundTrip reference
- Benchmark::LatencyTest_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
- ACE_DEBUG ((LM_DEBUG, "%s", ior.in ()));
-
- 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/CIAO/performance-tests/Benchmark/svc.conf b/TAO/CIAO/performance-tests/Benchmark/svc.conf
deleted file mode 100644
index 7b8129f5667..00000000000
--- a/TAO/CIAO/performance-tests/Benchmark/svc.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# $Id$
-#
-static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null"
-static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0"
-static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW"
diff --git a/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h b/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h
index bc4561cbaf2..a4c8c5122dc 100644
--- a/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h
+++ b/TAO/CIAO/tools/RTComponentServer/ComponentServer_Task.h
@@ -16,7 +16,7 @@
#ifndef CIAO_COMPONENTSERVER_TASK_H
#define CIAO_COMPONENTSERVER_TASK_H
-#include /**/ "ace/pre.h"
+#include "ace/pre.h"
#include "tao/ORB_Core.h"
@@ -78,5 +78,5 @@ namespace CIAO
# include "ComponentServer_Task.inl"
#endif /* __ACE_INLINE__ */
-#include /**/ "ace/post.h"
+#include "ace/post.h"
#endif /* CIAO_COMPONENTSERVER_TASK_H */
diff --git a/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h b/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h
index 7c6b2f03057..83beb448686 100644
--- a/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h
+++ b/TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h
@@ -16,7 +16,7 @@
#ifndef CIAO_RTCONFIG_MANAGER_H
#define CIAO_RTCONFIG_MANAGER_H
-#include /**/ "ace/pre.h"
+#include "ace/pre.h"
#include "ace/config-all.h"
@@ -157,5 +157,5 @@ namespace CIAO
# include "RTConfig_Manager.inl"
#endif /* __ACE_INLINE__ */
-#include /**/ "ace/post.h"
+#include "ace/post.h"
#endif /* CIAO_RTCONFIG_MANAGER_H */
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 8c94694bb7b..24bae0b5d2c 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,240 +1,3 @@
-Wed Oct 15 11:23:43 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * orbsvcs/orbsvcs/RTCosScheduling_Static.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp:
- Modified the directory to tao_idl to bin/Release/tao_idl in
- release configuration.
-
-Wed Oct 15 11:22:01 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tao/Transport.cpp (send_connection_closed_notifications_i): The
- while loop could lead to possible crash. Please see
-
- http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1614
-
- for details of the problem and the nature of fixes applied. As
- usual, thanks to Carlos O'Ryan for digging this one up and
- providing patches.
-
-Wed Oct 15 11:15:56 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * orbsvcs/orbsvcs/RTCosScheduling.dsp: Modified the directory to
- tao_idl to bin/Release/tao_idl in release configuration.
-
-Wed Oct 15 15:04:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp:
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h:
- Fixed compile problems in the Cygwin TAO build which is using MPC
- and emulated exceptions.
-
-Wed Oct 15 08:58:43 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp:
- Fixed compile problem when typed events is enabled and having
- emulated exceptions.
-
-Wed Oct 15 08:27:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * orbsvcs/orbsvcs/Makefile.bor:
- Added RTCosScheduling so that it is also build.
-
- * orbsvcs/orbsvcs/RTCosScheduling.bor:
- Fixed error in this BCB makefile
-
- * orbsvcs/orbsvcs/RTCosScheduling.idl:
- * orbsvcs/tests/RTCosScheduling/testSched.idl:
- Fixed fuzz error abount incorrect file tag.
-
-Wed Oct 15 08:21:33 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i:
- Fixed fuzz error about incorrect file tag.
-
-Tue Oct 14 20:01:10 2003 Kevin Bryan <bryank@cs.uri.edu>
-
- * orbsvcs/orbsvcs/Makefile:
- * orbsvcs/orbsvcs/Makefile.RTCosScheduling:
- * orbsvcs/orbsvcs/RTCosScheduling.bor:
- * orbsvcs/orbsvcs/RTCosScheduling.dsp:
- * orbsvcs/orbsvcs/RTCosScheduling.mak:
- * orbsvcs/orbsvcs/RTCosScheduling.mpc:
- * orbsvcs/orbsvcs/RTCosScheduling.pidl:
- * orbsvcs/orbsvcs/RTCosScheduling_Static.dsp:
- * orbsvcs/orbsvcs/RTCosScheduling.vcproj:
- * orbsvcs/orbsvcs/RTCosScheduling/README:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h:
- * orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i:
- * orbsvcs/tests/RTCosScheduling/client.cpp:
- * orbsvcs/tests/RTCosScheduling/Makefile:
- * orbsvcs/tests/RTCosScheduling/Object1_i.cpp:
- * orbsvcs/tests/RTCosScheduling/Object1_i.h:
- * orbsvcs/tests/RTCosScheduling/README:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp:
- * orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp:
- * orbsvcs/tests/RTCosScheduling/run_test.pl:
- * orbsvcs/tests/RTCosScheduling/schedule.cfg:
- * orbsvcs/tests/RTCosScheduling/server.cpp:
- * orbsvcs/tests/RTCosScheduling/svc.conf:
- * orbsvcs/tests/Makefile:
- * tao/PortableServer/PortableServerS.h:
-
- Added the RT Corba 1.0 Scheduling Service.
-
-Tue Oct 14 17:51:14 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tao/Exception.h:
- * tao/Exception.cpp:
- * tao/corbafwd.h: Applied patches to fix compilation errors with
- LynxOS. Thanks to Olli Savia for the patches.
-
-Tue Oct 14 09:32:10 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * orbsvcs/PSS/Makefile.parser: Removed lingTAO_Svc_Utils from the
- link line. Shouldn't be needed.
-
-Tue Oct 15 07:39:39 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp:
- Fixed incorrect trace statement to fix fuzz error
-
-Tue Oct 15 05:58:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * examples/Kokyu_dsrt_schedulers/muf_example/server.cpp:
- Fixed warning in cygwin g++ build about uninitialized variable.
-
-Mon Oct 13 22:10:35 2003 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile:
-
- Do not build the CPU load monitor test if the CosLoadBalancing
- ORB services component hasn't been configured/built. Addresses
- minimum CORBA build problems. Thanks to Venkita for pointing
- out the problem.
-
- * orbsvcs/orbsvcs/Makefile.SSLIOP (ACE_SHLIBS):
-
- Reverted "Fri Jan 19 13:16:10 2001 Priyanka Gontla
- <pgontla@ece.uci.edu>" change that caused ACE_SHLIBS to be
- undefined on HPUX. It's not clear why it was necessary. Allows
- the TAO_SSLIOP library to be linked on HPUX again. Thanks to
- Torsten Kuepper <torsten.kuepper@nokia.com> for reporting the
- problem. [Bug 1590]
-
-Mon Oct 13 16:35:00 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp:
- * orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h:
-
- Added RMS+MLF scheduling strategy, renamed RMS_Reconfig_Strategy
- to RMS_FAIR_Reconfig_Strategy and MUF_Reconfig_Strategy to
- MUF_FAIR_Reconfig_Strategy.
-
- * orbsvcs/Scheduling_Service/Scheduling_Service.cpp:
- * orbsvcs/Scheduling_Service/Scheduling_Service.h:
- * orbsvcs/examples/RtEC/Kokyu/Service.cpp:
- * orbsvcs/examples/RtEC/Schedule/Service.cpp:
- * orbsvcs/orbsvcs/Scheduler_Factory.cpp:
-
- Renamed MUF_Reconfig_Strategy to MUF_FAIR_Reconfig_Strategy.
-
-Mon Oct 13 15:29:09 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client:
- * examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server:
- * examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc:
- * examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client:
- * examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server:
- * examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc:
- * examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client:
- * examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server:
- * examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc:
- * examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc:
- * examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers:
- Removed explicit libraries and includes and used the base
- projects instead. I had done this to generate the .dsp files.
-
- * examples/Kokyu_dsrt_schedulers/utils.h: Modified #include
- "RTScheduler.h" to #include "tao/RTScheduling/RTScheduler.h".
-
-Mon Oct 13 12:49:16 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp:
- * examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp:
- Added ACE_ENV_ARG_PARAMETER to clear Fuzz errors.
-
-Mon Oct 13 11:58:38 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * orbsvcs/PSS/Makefile.parser: Removed the new line which caused
- compilation errors.
-
-Mon Oct 13 10:59:47 2003 Venkita Subramonian <venkita@cs.wustl.edu>
-
- * examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h:
- * examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp:
- * examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h:
- * examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp:
-
- Removed export qualification for the xxx_DT_Creator class. The
- service declaration was changed to use ACE_Local_Service. This
- is to fix problems with MSVC release builds.
-
- * examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp:
- * examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp:
-
- Updated the library paths to get rid of link errors in MSVC
- release build.
-
- * examples/RTScheduling/Starter.dsp:
- Changed the Code Generation option in the release configuration
- to Multithread DLL. This was causing problems in MSVC release
- build.
-
-Mon Oct 13 10:24:46 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp:
- * orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp:
-
- Changed the names of the interceptors. Since these classes are
- memory managed by the TAO_Refcounted_LocalObject, no need to
- delete them.
-
-Mon Oct 13 08:58:16 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * orbsvcs/PSS/Makefile.parser:
- * tests/Objref_Sequence_Test/client.cpp:
-
- Applied patches from Olli Savia to get the above compiling with
- LynxOS.
-
Sun Oct 12 20:53:35 2003 Huang-Ming Huang <hh1@cse.wustl.edu>
* orbsvcs/orbsvcs/FTORB.mpc
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp b/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp
index a37d07595d8..c19f714ca15 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp
+++ b/TAO/examples/Kokyu_dsrt_schedulers/FP_Scheduler.cpp
@@ -60,8 +60,7 @@ Fixed_Priority_Scheduler::Fixed_Priority_Scheduler (CORBA::ORB_ptr orb,
ACE_CHECK;
IOP::CodecFactory_var codec_factory;
- CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory"
- ACE_ENV_ARG_PARAMETER);
+ CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory");
if (CORBA::is_nil(obj.in ()))
{
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc b/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc
index c51ac411302..4a4f0551be9 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc
+++ b/TAO/examples/Kokyu_dsrt_schedulers/Kokyu_DSRT_Schedulers.mpc
@@ -1,6 +1,20 @@
-project(Kokyu_DSRT_Schedulers) : orbsvcslib, kokyu, rtscheduling, rtcorba {
+project(Kokyu_DSRT_Schedulers){
+
sharedname = Kokyu_DSRT_Schedulers
dynamicflags = KOKYU_DSRT_SCHEDULERS_BUILD_DLL
+ includes += $(TAO_ROOT) \
+ $(ACE_ROOT) \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu
+
+ libs += TAO_RTScheduler Kokyu TAO_RTCORBA ACE TAO
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(ACE_ROOT)/Kokyu
Source_Files {
FP_Scheduler.cpp
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp b/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp
index 4f3a8a2e1d9..9c8477c7155 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp
+++ b/TAO/examples/Kokyu_dsrt_schedulers/MIF_Scheduler.cpp
@@ -51,8 +51,7 @@ MIF_Scheduler::MIF_Scheduler (CORBA::ORB_ptr orb,
ACE_CHECK;
IOP::CodecFactory_var codec_factory;
- CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory"
- ACE_ENV_ARG_PARAMETER);
+ CORBA::Object_var obj = orb->resolve_initial_references ("CodecFactory");
if (CORBA::is_nil(obj.in ()))
{
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers b/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers
index f06bbf50dd4..c56bf04dbd8 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers
+++ b/TAO/examples/Kokyu_dsrt_schedulers/Makefile.Kokyu_DSRT_Schedulers
@@ -35,7 +35,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-ACE_SHLIBS = -lTAO_RTScheduler -lTAO_RTCORBA -lKokyu -lTAO -lACE
+ACE_SHLIBS = -lTAO_RTScheduler -lKokyu -lTAO_RTCORBA -lACE -lTAO
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -54,74 +54,40 @@ $(TEMPINCDIR):
endif
-CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq ($(rt_corba),1)
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-ifeq (,$(TAO_ORBSVCS))
-ifeq ($(rt_corba),1)
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-else
-ifeq ($(rt_corba),1)
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-endif
LSRC = $(addsuffix .cpp, $(FILES))
-ifeq (,$(TAO_ORBSVCS))
-else
-endif
include $(ACE_ROOT)/include/makeinclude/macros.GNU
include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-INSTALL_CHECK = $(ACE_ROOT)/lib
-ifeq ($(INSTALL_CHECK),.)
- INSLIB = $(PWD)
-else
- INSLIB = $(INSTALL_CHECK)
-endif
-
+# INSTALL_CHECK = .
+# ifeq ($(INSTALL_CHECK),.)
+# INSLIB = $(PWD)
+# else
+# INSLIB = $(INSTALL_CHECK)
+# endif
+
include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../.. -I../../.. -I../../tao/RTScheduling -I../../tao/RTCORBA -I../../../Kokyu
ifeq ($(shared_libs),1)
ifneq ($(SHLIB),)
CPPFLAGS += -DKOKYU_DSRT_SCHEDULERS_BUILD_DLL
endif
endif
-ifeq ($(static_libs),1)
- ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
- endif
-endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../examples/Kokyu_dsrt_schedulers -L../../tao -L../../../ace -L../../tao/RTCORBA -L../../tao/RTScheduling -L../../../Kokyu
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+.:
+ -@mkdir -p "."
realclean: clean
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client
index 76638ed14e3..6842bf18d23 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client
+++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_client
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.fp_client
DEPENDENCY_FILE = .depend.Makefile.fp_client
-BIN_UNCHECKED = fp_client
+BIN_UNCHECKED = client
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -31,7 +31,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -50,11 +50,7 @@ $(TEMPINCDIR):
endif
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
@@ -74,26 +70,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
+ CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
endif
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+.:
+ -@mkdir -p "."
ADDITIONAL_IDL_TARGETS =
@@ -105,13 +97,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server
index 4e13bbe8a1b..c96092c4db5 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server
+++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/Makefile.fp_server
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.fp_server
DEPENDENCY_FILE = .depend.Makefile.fp_server
-BIN_UNCHECKED = fp_server
+BIN_UNCHECKED = server
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -33,7 +33,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -52,11 +52,7 @@ $(TEMPINCDIR):
endif
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
@@ -76,7 +72,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
@@ -84,18 +80,14 @@ ifeq ($(static_libs),1)
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+../../../../lib:
+ -@mkdir -p "../../../../lib"
ADDITIONAL_IDL_TARGETS =
@@ -107,13 +99,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc
index 73282ad66ea..fec3cea3337 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc
+++ b/TAO/examples/Kokyu_dsrt_schedulers/fp_example/fp_example.mpc
@@ -1,13 +1,43 @@
-project(fp_server): kokyu_dsrt_scheduler_server {
- exename = fp_server
+project(fp_server): taoserver {
+
+ includes += $(TAO_ROOT) \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
+
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(TAO_ROOT)/tao/PortableServer \
+ $(TAO_ROOT)/tao/IORInterceptor \
+ $(TAO_ROOT)/tao/Valuetype \
+ $(TAO_ROOT)/tao/ObjRefTemplate \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
test_i.cpp
server.cpp
}
}
-project(fp_client): kokyu_dsrt_scheduler_client {
- exename = fp_client
+project(fp_client): taoclient {
+
+ includes += $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
testC.cpp
client.cpp
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client
index 1921a91a7ee..8d35cbdd4f2 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client
+++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_client
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.mif_client
DEPENDENCY_FILE = .depend.Makefile.mif_client
-BIN_UNCHECKED = mif_client
+BIN_UNCHECKED = client
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -31,7 +31,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -50,20 +50,13 @@ $(TEMPINCDIR):
endif
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
ifneq ($(BIN),)
all: idl_stubs
-
-# This rule forces make to run the idl_stubs
-# target before building any of the source files.
testC.cpp client.cpp: idl_stubs
endif
@@ -74,26 +67,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
+ CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
endif
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+.:
+ -@mkdir -p "."
ADDITIONAL_IDL_TARGETS =
@@ -105,13 +94,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server
index 0bf1b9de04e..c763a57232f 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server
+++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/Makefile.mif_server
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.mif_server
DEPENDENCY_FILE = .depend.Makefile.mif_server
-BIN_UNCHECKED = mif_server
+BIN_UNCHECKED = server
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -33,7 +33,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -52,20 +52,13 @@ $(TEMPINCDIR):
endif
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
ifneq ($(BIN),)
all: idl_stubs
-
-# This rule forces make to run the idl_stubs
-# target before building any of the source files.
testC.cpp testS.cpp test_i.cpp server.cpp: idl_stubs
endif
@@ -76,7 +69,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
@@ -84,18 +77,14 @@ ifeq ($(static_libs),1)
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+../../../../lib:
+ -@mkdir -p "../../../../lib"
ADDITIONAL_IDL_TARGETS =
@@ -107,13 +96,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc
index 4a8fd295854..5b29a98e63d 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc
+++ b/TAO/examples/Kokyu_dsrt_schedulers/mif_example/mif_example.mpc
@@ -1,13 +1,43 @@
-project(mif_server): kokyu_dsrt_scheduler_server {
- exename = mif_server
+project(mif_server): taoserver {
+
+ includes +=$(TAO_ROOT) \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
+
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(TAO_ROOT)/tao/PortableServer \
+ $(TAO_ROOT)/tao/IORInterceptor \
+ $(TAO_ROOT)/tao/Valuetype \
+ $(TAO_ROOT)/tao/ObjRefTemplate \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
test_i.cpp
server.cpp
}
}
-project(mif_client): kokyu_dsrt_scheduler_client {
- exename = mif_client
+project(mif_client): taoclient {
+
+ includes += $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
testC.cpp
client.cpp
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client
index ea4aff48aaa..061b740c685 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client
+++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_client
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.muf_client
DEPENDENCY_FILE = .depend.Makefile.muf_client
-BIN_UNCHECKED = muf_client
+BIN_UNCHECKED = client
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -31,7 +31,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_Svc_Utils -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -50,12 +50,7 @@ $(TEMPINCDIR):
endif
-CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
@@ -75,26 +70,22 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../examples/Kokyu_dsrt_schedulers -I../../../orbsvcs -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
+ CPPFLAGS += -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
endif
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../orbsvcs/orbsvcs -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+.:
+ -@mkdir -p "."
ADDITIONAL_IDL_TARGETS =
@@ -106,13 +97,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server
index 5c799b9b4e5..711990d0483 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server
+++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/Makefile.muf_server
@@ -11,7 +11,7 @@
#----------------------------------------------------------------------------
MAKEFILE = Makefile.muf_server
DEPENDENCY_FILE = .depend.Makefile.muf_server
-BIN_UNCHECKED = muf_server
+BIN_UNCHECKED = server
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
@@ -20,7 +20,7 @@ ifndef CIAO_ROOT
CIAO_ROOT = $(TAO_ROOT)/CIAO
endif
-TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL = ../../../../bin/tao_idl
IDL_FILES = test
IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
@@ -33,7 +33,7 @@ FILES = \
#----------------------------------------------------------------------------
# Include macros and targets
#----------------------------------------------------------------------------
-LDLIBS = -lKokyu_DSRT_Schedulers -lKokyu -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
+LDLIBS = -lTAO_RTScheduler -lKokyu -lKokyu_DSRT_Schedulers -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
## We don't need the ACELIB setting from wrapper_macros.GNU
ACELIB =
@@ -52,11 +52,7 @@ $(TEMPINCDIR):
endif
-ifeq ($(rt_corba),1)
BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
OBJS = $(addsuffix .o, $(notdir $(FILES)))
SRC = $(addsuffix .cpp, $(FILES))
@@ -76,7 +72,7 @@ include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
include $(TAO_ROOT)/taoconfig.mk
-CPPFLAGS += -I$(TAO_ROOT)/examples/Kokyu_dsrt_schedulers -I$(ACE_ROOT)/Kokyu -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(ACE_ROOT)
+CPPFLAGS += -I../../../tao/RTScheduling -I../../../tao/RTCORBA -I../../../../Kokyu -I../../../orbsvcs -I../../../examples/Kokyu_dsrt_schedulers -I../../.. -I../../../tao -I../../../..
ifeq ($(static_libs),1)
ifneq ($(LIB),)
CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
@@ -84,18 +80,14 @@ ifeq ($(static_libs),1)
endif
-LDFLAGS += -L$(ACE_ROOT)/lib
+LDFLAGS += -L../../../examples/Kokyu_dsrt_schedulers -L../../../tao/RTScheduling -L../../../tao/RTCORBA -L../../../tao/PortableServer -L../../../tao/IORInterceptor -L../../../tao/Valuetype -L../../../tao/ObjRefTemplate -L../../../../Kokyu -L../../../tao -L../../../../ace -L../../../../lib
TAO_IDLFLAGS += -Gv -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
#----------------------------------------------------------------------------
# Local targets
#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-$(ACE_ROOT)/lib:
- -@mkdir -p "$(ACE_ROOT)/lib"
+../../../../lib:
+ -@mkdir -p "../../../../lib"
ADDITIONAL_IDL_TARGETS =
@@ -107,13 +99,8 @@ endif
.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifndef kylix
$(BIN): $(addprefix $(VDIR), $(OBJS))
$(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
realclean: clean
-$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc
index c6256212220..d950a394762 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc
+++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/muf_example.mpc
@@ -1,13 +1,47 @@
-project(muf_server): kokyu_dsrt_scheduler_server {
- exename = muf_server
+project(muf_server): taoserver {
+
+ includes += $(TAO_ROOT) \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/orbsvcs \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
+
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(TAO_ROOT)/tao/PortableServer \
+ $(TAO_ROOT)/tao/IORInterceptor \
+ $(TAO_ROOT)/tao/Valuetype \
+ $(TAO_ROOT)/tao/ObjRefTemplate \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
test_i.cpp
server.cpp
}
}
-project(muf_client): orbsvcsexe, kokyu_dsrt_scheduler_client {
- exename = muf_client
+project(muf_client): taoclient {
+
+ includes += $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/orbsvcs
+
+ libs += TAO_RTScheduler Kokyu Kokyu_DSRT_Schedulers TAO_RTCORBA TAO_Svc_Utils
+ libpaths += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers \
+ $(TAO_ROOT)/tao/RTScheduling \
+ $(TAO_ROOT)/tao/RTCORBA \
+ $(TAO_ROOT)/orbsvcs/orbsvcs \
+ $(ACE_ROOT)/Kokyu \
+ $(TAO_ROOT)/tao \
+ $(ACE_ROOT)/ace
+
Source_Files {
testC.cpp
client.cpp
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp
index f22355074e1..7758d797ab0 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp
+++ b/TAO/examples/Kokyu_dsrt_schedulers/muf_example/server.cpp
@@ -82,7 +82,7 @@ Task_Stats task_stats;
int
main (int argc, char *argv[])
{
- MUF_Scheduler* scheduler = 0;
+ MUF_Scheduler* scheduler;
RTScheduling::Current_var current;
long flags;
int sched_policy = ACE_SCHED_RR;
@@ -90,7 +90,7 @@ main (int argc, char *argv[])
if (sched_policy == ACE_SCHED_RR)
flags = THR_NEW_LWP | THR_BOUND | THR_JOINABLE | THR_SCHED_RR;
- else
+ else
flags = THR_NEW_LWP | THR_BOUND | THR_JOINABLE | THR_SCHED_FIFO;
task_stats.init (100000);
@@ -142,9 +142,9 @@ main (int argc, char *argv[])
{
disp_impl_type = Kokyu::DSRT_OS_BASED;
}
-
+
ACE_NEW_RETURN (scheduler,
- MUF_Scheduler (orb.in (),
+ MUF_Scheduler (orb.in (),
disp_impl_type,
sched_policy,
sched_scope), -1);
@@ -161,9 +161,9 @@ main (int argc, char *argv[])
ACE_TRY_CHECK;
}
- Simple_Server_i server_impl (orb.in (),
- current.in (),
- task_stats,
+ Simple_Server_i server_impl (orb.in (),
+ current.in (),
+ task_stats,
enable_yield);
Simple_Server_var server =
@@ -194,12 +194,12 @@ main (int argc, char *argv[])
Worker worker (orb.in ());
if (worker.activate (flags,
- nthreads,
+ nthreads,
0,
- ACE_Sched_Params::priority_max(sched_policy,
+ ACE_Sched_Params::priority_max(sched_policy,
sched_scope)) != 0)
{
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_ERROR,
"Cannot activate threads in RT class.",
"Trying to activate in non-RT class\n"));
@@ -228,7 +228,7 @@ main (int argc, char *argv[])
ACE_ENDTRY;
ACE_DEBUG ((LM_DEBUG, "Exiting main...\n"));
- task_stats.dump_samples ("timeline.txt",
+ task_stats.dump_samples ("timeline.txt",
"Time\t\tGUID",
ACE_High_Res_Timer::global_scale_factor ());
return 0;
diff --git a/TAO/examples/Kokyu_dsrt_schedulers/utils.h b/TAO/examples/Kokyu_dsrt_schedulers/utils.h
index 87d37a888a2..ea29a7cb754 100644
--- a/TAO/examples/Kokyu_dsrt_schedulers/utils.h
+++ b/TAO/examples/Kokyu_dsrt_schedulers/utils.h
@@ -2,7 +2,7 @@
#include "ace/OS.h"
#include "Kokyu_qosC.h"
-#include "tao/RTScheduling/RTScheduler.h"
+#include "RTScheduler.h"
void guid_copy( Kokyu::GuidType& lhs, const RTScheduling::Current::IdType& rhs);
void guid_copy( RTScheduling::Current::IdType& lhs, const Kokyu::GuidType& rhs);
diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp
index b5da788d9fe..440a9bb9b8b 100644
--- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp
+++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.cpp
@@ -63,6 +63,6 @@ ACE_STATIC_SVC_DEFINE(FP_DT_Creator,
ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
0)
-ACE_FACTORY_DEFINE (ACE_Local_Service, FP_DT_Creator)
+ACE_FACTORY_DEFINE (FP_DT_Creator, FP_DT_Creator)
diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h
index 34a2fbb7e08..0df006bf9bb 100644
--- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h
+++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/FP_DT_Creator.h
@@ -6,7 +6,7 @@
#include "../DT_Creator.h"
#include "fp_dt_creator_export.h"
-class FP_DT_Creator: public DT_Creator
+class FP_DT_Creator_Export FP_DT_Creator: public DT_Creator
{
public:
FP_DT_Creator (void);
@@ -30,7 +30,7 @@ public:
};
-ACE_STATIC_SVC_DECLARE (FP_DT_Creator)
-ACE_FACTORY_DECLARE (ACE_Local_Service, FP_DT_Creator)
+ACE_STATIC_SVC_DECLARE_EXPORT (FP_DT_Creator, FP_DT_Creator)
+ACE_FACTORY_DECLARE (FP_DT_Creator, FP_DT_Creator)
#endif /*FP_DT_CREATOR_H*/
diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp
index 2d8a1b4d818..8d817ebd8fe 100644
--- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp
+++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "FP_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386 /libpath:"$(ACE_ROOT)\ace" /libpath:"../../../tao" /libpath:"../../../tao/RTCORBA" /libpath:"../../../tao/PortableServer" /libpath:"../../../tao/RTScheduling" /libpath:"../../../orbsvcs/orbsvcs/"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "Fixed_Priority_Scheduler - Win32 Debug"
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "FP_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp
index bab97a4c297..42477b8cb29 100644
--- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp
+++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.cpp
@@ -90,4 +90,4 @@ ACE_STATIC_SVC_DEFINE(MIF_DT_Creator,
ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
0)
-ACE_FACTORY_DEFINE (ACE_Local_Service, MIF_DT_Creator)
+ACE_FACTORY_DEFINE (MIF_DT_Creator, MIF_DT_Creator)
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h
index f76202b63f4..a286090d00c 100644
--- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h
+++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_DT_Creator.h
@@ -6,7 +6,7 @@
#include "../DT_Creator.h"
#include "mif_dt_creator_export.h"
-class MIF_DT_Creator: public DT_Creator
+class MIF_DT_Creator_Export MIF_DT_Creator: public DT_Creator
{
public:
MIF_DT_Creator (void);
@@ -29,8 +29,8 @@ public:
};
-ACE_STATIC_SVC_DECLARE (MIF_DT_Creator)
-ACE_FACTORY_DECLARE (ACE_Local_Service, MIF_DT_Creator)
+ACE_STATIC_SVC_DECLARE_EXPORT (MIF_DT_Creator, MIF_DT_Creator)
+ACE_FACTORY_DECLARE (MIF_DT_Creator, MIF_DT_Creator)
#endif /*MIF_DT_CREATOR_H*/
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp
index 781fa39244c..462eefd1263 100644
--- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp
+++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386 /libpath:"$(ACE_ROOT)\ace" /libpath:"../../../tao" /libpath:"../../../tao/RTCORBA" /libpath:"../../../tao/PortableServer" /libpath:"../../../tao/RTScheduling" /libpath:"../../../orbsvcs/orbsvcs/"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ace.lib tao.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_RTScheduler.lib TAO_CosNaming.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "MIF_Scheduler - Win32 Debug"
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../../" /I "../../../" /I "../../../tao/RTScheduling" /I "../../../tao/RTCORBA" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/examples/RTScheduling/Starter.dsp b/TAO/examples/RTScheduling/Starter.dsp
index 2ca25fb0683..df896db8bc1 100644
--- a/TAO/examples/RTScheduling/Starter.dsp
+++ b/TAO/examples/RTScheduling/Starter.dsp
@@ -40,8 +40,8 @@ RSC=rc.exe
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /GR /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /GR /O2 /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -64,8 +64,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Gm /GR /GX /Zi /Od /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /GR /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gm /GX /GR /Zi /Od /I "../../../" /I "../../" /I "../../tao/RTScheduling" /I "../../tao/RTCORBA" /I "../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MIF_DT_CREATOR_BUILD_DLL" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc
new file mode 100644
index 00000000000..ad6d724e165
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FTRT_Event_Service.mpc
@@ -0,0 +1,9 @@
+project(FTRT_Event_Service) : orbsvcsexe, rtschedevent, ftrtevent, ftorbutils {
+ exename = ftrt_eventservice
+ includes += $(TAO_ROOT)/orbsvcs $(TAO_ROOT)/orbsvcs/FtRtEvent/Utils $(TAO_ROOT)/orbsvcs/FtRtEvent/EventChannel
+ after += FTRT_EventChannel
+ libs += TAO_Utils TAO_FTRT_EventChannel
+ specific(gnuace) {
+ lit_libs += TAO_Strategies
+ }
+} \ No newline at end of file
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
new file mode 100644
index 00000000000..d0c04d42f2e
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.cpp
@@ -0,0 +1,295 @@
+// $Id$
+
+#include "FT_EventService.h"
+#include "ace/Argv_Type_Converter.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Get_Opt.h"
+#include "ace/INET_Addr.h"
+#include "ace/SOCK_Connector.h"
+#include "ace/SOCK_Stream.h"
+#include "orbsvcs/Sched/Config_Scheduler.h"
+#include "orbsvcs/Scheduler_Factory.h"
+#include "orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h"
+
+ACE_RCSID (Event_Service,
+ FT_EventService,
+ "$Id$")
+
+
+int ACE_TMAIN (int argc, ACE_TCHAR* argv[])
+{
+ FT_EventService event_service;
+ return event_service.run (argc, argv);
+}
+
+FT_EventService::FT_EventService()
+: global_scheduler_(0)
+, sched_impl_(0)
+, membership_(TAO_FTEC_Event_Channel::NONE)
+, num_threads_(1)
+, task_(orb_)
+{
+}
+
+FT_EventService::~FT_EventService()
+{
+ delete sched_impl_;
+}
+
+int
+FT_EventService::run(int argc, ACE_TCHAR* argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ // Make a copy of command line parameter.
+ ACE_Argv_Type_Converter command(argc, argv);
+
+ // Initialize ORB.
+ orb_ = CORBA::ORB_init (command.get_argc(),
+ command.get_ASCII_argv(),
+ "" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (this->parse_args (command.get_argc(), command.get_TCHAR_argv()) == -1)
+ return 1;
+
+ CORBA::Object_var root_poa_object =
+ orb_->resolve_initial_references("RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ if (CORBA::is_nil (root_poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the root POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (root_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;
+
+ poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var naming_obj =
+ orb_->resolve_initial_references ("NameService" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ if (CORBA::is_nil (naming_obj.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the Naming Service.\n"),
+ 1);
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_obj.in () ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ setup_scheduler(naming_context.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(-1);
+
+
+ poa_manager->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // Activate the Event channel implementation
+
+ TAO_FTEC_Event_Channel ec(orb_, root_poa);
+
+ FtRtecEventChannelAdmin::EventChannel_var ec_ior =
+ ec.activate(membership_
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (report_factory(orb_.in(), ec_ior.in())==-1)
+ return -1;
+
+ orb_->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred.");
+ }
+ ACE_ENDTRY;
+
+ ACE_CHECK_RETURN(-1);
+
+ ACE_Thread_Manager::instance()->wait();
+ return 0;
+}
+
+int
+FT_EventService::parse_args (int argc, ACE_TCHAR* argv [])
+{
+ /// get the membership from the environment variable
+ char* member = ACE_OS::getenv("FTEC_MEMBERSHIP");
+
+ membership_ = TAO_FTEC_Event_Channel::NONE;
+
+ if (member) {
+ if (ACE_OS::strcasecmp(member, "PRIMARY")==0) {
+ membership_ = TAO_FTEC_Event_Channel::PRIMARY;
+ }
+ else if (ACE_OS::strcasecmp(member, "BACKUP")==0) {
+ membership_ = TAO_FTEC_Event_Channel::BACKUP;
+ }
+ }
+
+ char* n_threads = ACE_OS::getenv("FTEC_NUM_THREAD");
+
+ this->num_threads_ = 1;
+ if (n_threads)
+ this->num_threads_ = ACE_OS::atoi(n_threads);
+
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("jn:ps:"));
+ int opt;
+
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 'j':
+ this->membership_ = TAO_FTEC_Event_Channel::BACKUP;
+ break;
+ case 'n':
+ this->num_threads_ = ACE_OS::atoi(get_opt.opt_arg ());
+ break;
+ case 'p':
+ this->membership_ = TAO_FTEC_Event_Channel::PRIMARY;
+ break;
+ case 's':
+ // It could be just a flag (i.e. no "global" or "local"
+ // argument, but this is consistent with the EC_Multiple
+ // test and also allows for a runtime scheduling service.
+
+ if (ACE_OS::strcasecmp (get_opt.opt_arg (), ACE_LIB_TEXT("global")) == 0)
+ {
+ this->global_scheduler_ = 1;
+ }
+ else if (ACE_OS::strcasecmp (get_opt.opt_arg (), ACE_LIB_TEXT("local")) == 0)
+ {
+ this->global_scheduler_ = 0;
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_LIB_TEXT("Unknown scheduling type <%s> ")
+ ACE_LIB_TEXT("defaulting to local\n"),
+ get_opt.opt_arg ()));
+ this->global_scheduler_ = 0;
+ }
+ break;
+
+ case '?':
+ default:
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_LIB_TEXT("Usage: %s \n")
+ ACE_LIB_TEXT(" -j join the object group\n")
+ ACE_LIB_TEXT(" -p set as primary\n")
+ ACE_LIB_TEXT(" -s <global|local> \n")
+ ACE_LIB_TEXT("\n"),
+ argv[0]));
+ return -1;
+ }
+ }
+
+ if (this->num_threads_ < 1)
+ ACE_ERROR_RETURN((LM_ERROR, "Invalid number of threads specified\n"), -1);
+
+ return 0;
+}
+
+void
+FT_EventService::setup_scheduler(CosNaming::NamingContext_ptr naming_context
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ RtecScheduler::Scheduler_var scheduler;
+ if (CORBA::is_nil(naming_context)) {
+ ACE_NEW_THROW_EX (this->sched_impl_,
+ ACE_Config_Scheduler,
+ CORBA::NO_MEMORY());
+
+ scheduler = this->sched_impl_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (ACE_Scheduler_Factory::server(scheduler.in()) == -1)
+ ACE_ERROR((LM_ERROR,"Unable to install scheduler\n"));
+ }
+ else {
+ // This is the name we (potentially) register the Scheduling
+ // Service in the Naming Service.
+ CosNaming::Name schedule_name (1);
+ schedule_name.length (1);
+ schedule_name[0].id = CORBA::string_dup ("ScheduleService");
+
+
+ if (1)
+ {
+ // We must find the scheduler object reference...
+
+ if (this->global_scheduler_ == 0)
+ {
+ ACE_NEW_THROW_EX (this->sched_impl_,
+ ACE_Config_Scheduler,
+ CORBA::NO_MEMORY());
+
+ scheduler = this->sched_impl_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // Register the servant with the Naming Context....
+ naming_context->rebind (schedule_name, scheduler.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ else
+ {
+ CORBA::Object_var tmp =
+ naming_context->resolve (schedule_name ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ scheduler = RtecScheduler::Scheduler::_narrow (tmp.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ }
+ }
+}
+
+int
+FT_EventService::report_factory(CORBA::ORB_ptr orb,
+ FtRtecEventChannelAdmin::EventChannel_ptr ec)
+{
+ char* addr = ACE_OS::getenv("EventChannelFactoryAddr");
+
+ if (addr != NULL) {
+ // instaniated by object factory, report my ior back to the factory
+ ACE_INET_Addr factory_addr(addr);
+ ACE_SOCK_Connector connector;
+ ACE_SOCK_Stream stream;
+
+ ACE_DEBUG((LM_DEBUG,"connecting to %s\n",addr));
+ if (connector.connect(stream, factory_addr) == -1)
+ ACE_ERROR_RETURN((LM_ERROR, "(%P|%t) Invalid Factory Address\n"), -1);
+
+ ACE_DEBUG((LM_DEBUG,"Factory connected\n"));
+ CORBA::String_var my_ior_string = orb->object_to_string(ec
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_TRY_CHECK;
+ int len = strlen(my_ior_string.in()) ;
+
+ if (stream.send_n(my_ior_string.in(), len) != len)
+ ACE_ERROR_RETURN((LM_ERROR, "(%P|%t) IOR Transmission Error\n"), -1);
+
+ stream.close();
+ }
+ return 0;
+}
+
+void FT_EventService::become_primary()
+{
+ if (this->num_threads_ > 1) {
+ task_.activate(THR_NEW_LWP | THR_JOINABLE, num_threads_-1);
+ }
+}
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h
new file mode 100644
index 00000000000..d65b67dc17c
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/FT_EventService.h
@@ -0,0 +1,52 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FT_EventService.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FT_EVENTSERVICE_H
+#define FT_EVENTSERVICE_H
+
+#include "orbsvcs/CosNamingC.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h"
+#include "orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h"
+#include "TP_Task.h"
+
+namespace POA_RtecScheduler
+{
+ class Scheduler;
+};
+
+class FT_EventService : private TAO_FTEC_Become_Primary_Listener
+{
+public:
+ FT_EventService();
+ ~FT_EventService();
+
+ int run(int argc, ACE_TCHAR* argv[]);
+
+private:
+ int parse_args (int argc, ACE_TCHAR* argv []);
+ void setup_scheduler(CosNaming::NamingContext_ptr naming_context
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+ int report_factory(CORBA::ORB_ptr orb,
+ FtRtecEventChannelAdmin::EventChannel_ptr ec);
+ virtual void become_primary();
+
+ int global_scheduler_;
+ // Should we use a global scheduler or a local one?
+ POA_RtecScheduler::Scheduler *sched_impl_;
+ // The Scheduler implementation.
+ TAO_FTEC_Event_Channel::MEMBERSHIP membership_;
+ int num_threads_;
+ CORBA::ORB_var orb_;
+ TP_Task task_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h
new file mode 100644
index 00000000000..f5f2d410cac
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/TP_Task.h
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file TP_Task.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef TP_TASK_H
+#define TP_TASK_H
+
+#include "ace/Task.h"
+#include "tao/corba.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TP_Task : public ACE_Task_Base {
+public:
+ TP_Task(CORBA::ORB_var& orb)
+ : orb_(orb)
+ {
+ }
+
+ ~TP_Task(){}
+ virtual int svc() {
+ this->orb_->run();
+ return 0;
+ }
+private:
+ CORBA::ORB_var& orb_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf
new file mode 100644
index 00000000000..d23c985de19
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Event_Service/svc.conf
@@ -0,0 +1,20 @@
+## $Id$
+
+## The value of FTEC_DETECTOR_TRANSPORT_PROTOCL should be either "sctp" or "tcp".
+## The FTEC_HEART_BEAT is only meanful for stcp. It represents the heart beat in
+## seconds for the connections between replicas.
+
+static FTRTEC_Fault_Detector "$FTEC_DETECTOR_TRANSPORT_PROTOCL -HeartBeat $FTEC_HEART_BEAT"
+
+
+## If FTEC_REPLICATION_STRATEGY is set to AMI, then use AMI for replicating operations;
+## otherwise, two-way CORBA call is used for replication.
+
+static FTRTEC_Replication "$FTEC_REPLICATION_STRATEGY"
+
+## FTEC_EVENT_SERVICE_NAME is used for the event channnel to register to the naming service.
+## FTEC_OBJECT_ID should be a globally unique identifier defined in
+## draft-leach-uuids-guids-01.txt. This value should be the same
+## for the entire object group.
+
+static FTRTEC_Identification "-Name $FTEC_EVENT_SERVICE_NAME -Object_ID $FTEC_OBJECT_ID" \ No newline at end of file
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp
new file mode 100644
index 00000000000..2ec8cf8f842
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.cpp
@@ -0,0 +1,201 @@
+// $Id$
+
+#include "EventChannelFactory_i.h"
+#include "ace/Process.h"
+#include "ace/Read_Buffer.h"
+#include "ace/SOCK_Acceptor.h"
+#include "ace/SOCK_Stream.h"
+#include "orbsvcs/FtRtEvent/Utils/ScopeGuard.h"
+#include "orbsvcs/FtRtEvent/Utils/UUID.h"
+
+ACE_RCSID (Factory_Service,
+ EventChannelFactory_i,
+ "$Id$")
+
+
+const int WAIT_FOR_REGISTRATION_TIME = 10; //sec
+const int MAX_ID_STRING = 10;
+
+EventChannelFactory_i::EventChannelFactory_i(const char* conf_filename, CORBA::ORB_ptr orb_ptr)
+: conf_file(conf_filename), id(0), orb(orb_ptr)
+{
+}
+
+CORBA::Object_ptr EventChannelFactory_i::create_object (
+ const char * type_id,
+ const FT::Criteria & the_criteria,
+ FT::GenericFactory::FactoryCreationId_out factory_creation_id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FT::NoFactory
+ , FT::ObjectNotCreated
+ , FT::InvalidCriteria
+ , FT::InvalidProperty
+ , FT::CannotMeetCriteria
+ ))
+{
+
+ ACE_DEBUG((LM_DEBUG,"EventChannelFactory_i::create_object\n"));
+
+ FILE* file = fopen(conf_file, "r");
+ if (file == NULL)
+ ACE_THROW_RETURN(FT::NoFactory(), CORBA::Object::_nil());
+
+ ScopeGuard file_guard = MakeGuard(fclose, file);
+ ACE_UNUSED_ARG(file_guard);
+
+ char *id=0, *prog=0;
+ ACE_Read_Buffer read_buf(file);
+ ScopeGuard id_guard = MakeObjGuard(* ACE_Allocator::instance(),
+ &ACE_Allocator::free, id);
+ ACE_UNUSED_ARG(id_guard);
+
+ ScopeGuard prog_guard = MakeObjGuard(* ACE_Allocator::instance(),
+ &ACE_Allocator::free, prog);
+ ACE_UNUSED_ARG(prog_guard);
+
+ while ((id = read_buf.read(' ')) != NULL &&
+ (prog = read_buf.read('\n')) != NULL) {
+ id[strlen(id)-1] = '\0';
+ if (strcmp(id, type_id) == 0) {
+ return create_process(prog, the_criteria, factory_creation_id);
+ }
+ }
+
+ ACE_THROW_RETURN(FT::ObjectNotCreated(), CORBA::Object::_nil());
+}
+
+void EventChannelFactory_i::delete_object (
+ const FT::GenericFactory::FactoryCreationId & factory_creation_id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FT::ObjectNotFound
+ ))
+{
+ ACE_TRACE("EventChannelFactory_i::delete_object");
+ CORBA::ULong object_id;
+ factory_creation_id >>= object_id;
+ CORBA::Object_var obj;
+ if (objects.find(object_id, obj) == 0) {
+ objects.unbind(object_id);
+ //obj->shutdown(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+}
+
+CORBA::Object_ptr EventChannelFactory_i::create_process (
+ char * process_str,
+ const FT::Criteria & the_criteria,
+ FT::GenericFactory::FactoryCreationId_out factory_creation_id)
+{
+ ACE_TRACE("EventChannelFactory_i::create_prcess");
+
+ CORBA::Object_ptr result = CORBA::Object::_nil();
+
+ // fill the factory_creation_id
+
+ ACE_NEW_RETURN(factory_creation_id,
+ FT::GenericFactory::FactoryCreationId,
+ CORBA::Object::_nil());
+ *factory_creation_id <<= (CORBA::ULong) ++id;
+
+ // create an acceptor and get the listen address
+
+ ACE_SOCK_Acceptor acceptor;
+ ACE_INET_Addr server_addr;
+ acceptor.open(server_addr);
+ acceptor.get_local_addr(server_addr);
+
+ ACE_Process_Options options;
+ ACE_CString str;
+
+ char* pos = ACE_OS::strrchr(process_str, '/');
+ if (pos !=0) { //
+ *pos = '\0';
+ options.working_directory(process_str);
+ *pos = '/';
+ }
+ str = process_str;
+
+ const int ENV_BUF_LEN = 512;
+ char buf[ENV_BUF_LEN];
+ server_addr.addr_to_string(buf,ENV_BUF_LEN,0);
+ options.setenv("EventChannelFactoryAddr", buf);
+
+ // extract the object ID from the criteria
+ for (size_t i = 0; i < the_criteria.length(); ++i)
+ {
+ const CosNaming::Name& name = the_criteria[i].nam;
+ if (name.length() > 0) {
+ const char* val;
+ const char* id = name[0].id.in();
+ the_criteria[i].val >>= val;
+ if (id[0] != '-') // environment variable
+ options.setenv(id, "%s", val);
+ else {// command line option
+ ACE_OS::sprintf(buf, " %s %s", id, val);
+ str += buf;
+ }
+ }
+ }
+
+ ACE_DEBUG((LM_DEBUG, "Command Line : %s\n", str.c_str()));
+
+ options.command_line(str.c_str());
+
+ // Try to create a new process running date.
+ ACE_Process new_process;
+
+ ACE_Time_Value timeout(WAIT_FOR_REGISTRATION_TIME);
+ timeout += ACE_OS::gettimeofday();
+ if (new_process.spawn (options) == -1)
+ {
+ int error = ACE_OS::last_error ();
+ ACE_ERROR ((LM_ERROR,
+ "%p errno = %d.\n",
+ str.c_str(),
+ error));
+ return result;
+ }
+
+ ACE_INET_Addr client_addr;
+ ACE_SOCK_Stream stream;
+
+ ACE_DEBUG((LM_DEBUG, "accepting connection from event channel\n"));
+ if (acceptor.accept(stream, &client_addr, &timeout) != -1)
+ {
+ ACE_DEBUG((LM_DEBUG, "Factory Connect established with %s:%d\n",
+ client_addr.get_host_name(), client_addr.get_port_number() ));
+
+ // receive the ior string from the created object
+
+ char ior[5000] = {'0'};
+ int n = 0;
+ int byteRead=0;
+ while ((n = stream.recv(ior+byteRead, 5000-byteRead))) {
+ byteRead += n;
+ }
+
+ if (strlen(ior) ==0)
+ return result;
+
+
+ CORBA::Object_var result = orb->string_to_object(ior
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(result);
+
+ if (objects.bind(id, result) ==0){
+ return result._retn();
+ }
+ }
+ else {
+ ACE_DEBUG((LM_DEBUG,"accept fail\n"));
+ }
+
+ return result;
+}
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h
new file mode 100644
index 00000000000..9ceba6abc3b
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/EventChannelFactory_i.h
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file EventChannelFactory_i.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef EVENTCHANNELFACTORY_I_H
+#define EVENTCHANNELFACTORY_I_H
+
+#include "orbsvcs/FT_CORBAS.h"
+#include "ace/Synch.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class EventChannelFactory_i : public POA_FT::GenericFactory {
+public:
+ EventChannelFactory_i(const char* conf_filename, CORBA::ORB_ptr);
+
+ virtual CORBA::Object_ptr create_object (
+ const char * type_id,
+ const FT::Criteria & the_criteria,
+ FT::GenericFactory::FactoryCreationId_out factory_creation_id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FT::NoFactory
+ , FT::ObjectNotCreated
+ , FT::InvalidCriteria
+ , FT::InvalidProperty
+ , FT::CannotMeetCriteria
+ )) ;
+
+ virtual void delete_object (
+ const FT::GenericFactory::FactoryCreationId & factory_creation_id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FT::ObjectNotFound
+ ));
+
+private:
+ CORBA::Object_ptr create_process (
+ char * process,
+ const FT::Criteria & the_criteria,
+ FT::GenericFactory::FactoryCreationId_out factory_creation_id);
+
+ const char* conf_file;
+ int id;
+ CORBA::ORB_ptr orb;
+ typedef ACE_Hash_Map_Manager<int, CORBA::Object_var, ACE_Null_Mutex> Objects;
+ Objects objects;
+};
+#endif
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp
new file mode 100644
index 00000000000..0a68d5fcdf5
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.cpp
@@ -0,0 +1,157 @@
+// $Id$
+
+#include "EventChannelFactory_i.h"
+#include "ace/Task.h"
+#include "ace/SString.h"
+#include "ace/Get_Opt.h"
+
+ACE_RCSID (Factory_Service,
+ FTRTEC_Factory_Service,
+ "$Id$")
+
+namespace {
+ ACE_CString id, kind, output;
+}
+
+int parse_args(int argc, char* argv[])
+{
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("i:k:o:"));
+ int opt;
+
+ int result = 0;
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 'i':
+ id = get_opt.opt_arg ();
+ break;
+ case 'k':
+ kind = get_opt.opt_arg ();
+ break;
+ case 'o':
+ output = get_opt.opt_arg ();
+ break;
+ default:
+ result = -1;
+ break;
+ }
+ }
+
+ if (result == -1 || (id.length() == 0 && output.length() == 0))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_LIB_TEXT("Usage: %s \n")
+ ACE_LIB_TEXT(" [-i id] set the id that is used to register to the naming service\n")
+ ACE_LIB_TEXT(" [-k kind] set the kind that is used to register to the naming service\n")
+ ACE_LIB_TEXT(" [-o filename] set the output file name for the IOR\n")
+ ACE_LIB_TEXT("\n"),
+ argv[0]));
+ return -1;
+ }
+ return 0;
+}
+
+int main(int argc, ACE_TCHAR* argv[])
+{
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY {
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ if (parse_args(argc, argv) == -1)
+ return -1;
+
+ CORBA::Object_var obj =
+ orb->resolve_initial_references("RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var poa =
+ PortableServer::POA::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ EventChannelFactory_i servant("factory.cfg", orb.in());
+
+ FT::GenericFactory_var event_channel_factory =
+ servant._this(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // register to the Event Service
+
+ if (id.length()) {
+ CORBA::Object_var namng_contex_object =
+ orb->resolve_initial_references("NameService"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow(namng_contex_object.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // register to naming service
+ CosNaming::Name name(1);
+ name.length(1);
+ name[0].id = CORBA::string_dup(id.c_str());
+ if (kind.length())
+ name[0].kind = CORBA::string_dup(kind.c_str());
+
+ naming_context->bind(name, event_channel_factory.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG((LM_DEBUG, "Register to naming service with %s", id.c_str()));
+ if (kind.length())
+ ACE_DEBUG((LM_DEBUG, ", %s", kind.c_str()));
+ ACE_DEBUG((LM_DEBUG,"\n"));
+ }
+
+ if (output.length()) {
+ // get the IOR of factory
+ CORBA::String_var str = orb->object_to_string(event_channel_factory.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (ACE_OS::strcmp(output.c_str(), "") != 0)
+ {
+ FILE *output_file=
+ ACE_OS::fopen (ACE_TEXT_CHAR_TO_TCHAR(output.c_str()),
+ ACE_LIB_TEXT("w"));
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ output.c_str()),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", str.in ());
+ ACE_OS::fclose (output_file);
+ }
+ }
+
+ ACE_TRY_CHECK;
+
+ orb->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred.");
+ }
+ ACE_ENDTRY;
+
+
+ ACE_CHECK_RETURN(1);
+
+ return 0;
+}
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc
new file mode 100644
index 00000000000..55b7f390558
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpc
@@ -0,0 +1,11 @@
+project(FTRTEC_Factory_Service): orbsvcsexe, ftorbutils, notify {
+ after += FaultTolerance
+ exename = ftrtec_factory_service
+ includes += $(TAO_ROOT)/orbsvcs
+ libs += TAO_FaultTolerance
+
+ specific(gnuace) {
+ lit_libs += TAO_Strategies
+ }
+}
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg
new file mode 100644
index 00000000000..021110f6781
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Factory_Service/factory.cfg
@@ -0,0 +1,2 @@
+IDL:FtRtecEventChannelAdmin/EventChannel:1.0 ../FTRT_Event_Service/ftrt_eventservice
+IDL:RtecEventChannelAdmin/EventChannel:1.0 ../FTRT_Event_Service/ftrt_eventservice \ No newline at end of file
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp
new file mode 100644
index 00000000000..9178b08b0be
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.cpp
@@ -0,0 +1,134 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h"
+#include "orbsvcs/FtRtEvent/Utils/resolve_init.h"
+/// include this file to statically linked with FT ORB
+#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h"
+
+/// include this file to statically linked with Transaction Depth
+#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h"
+
+ACE_RCSID (Gateway_Service,
+ FTRTEC_Gateway_Service,
+ "$Id$")
+
+
+namespace {
+ CORBA::ORB_var orb;
+ FtRtecEventChannelAdmin::EventChannel_var ftec;
+ ACE_CString ior_file_name;
+}
+
+int parse_args(int argc, ACE_TCHAR** argv)
+{
+ ACE_TRY_NEW_ENV {
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("i:n:o:"));
+ int opt;
+ CosNaming::Name name(1);
+ name.length(1);
+ name[0].id = CORBA::string_dup("FT_EventService");
+
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 'i':
+ {
+ CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ ftec = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ break;
+ case 'n':
+ name[0].id = CORBA::string_dup(get_opt.opt_arg ());
+ break;
+ case 'o':
+ ior_file_name = get_opt.opt_arg ();
+ break;
+ }
+ }
+
+ if (CORBA::is_nil(ftec.in())) {
+ /// we should get the ftec from Naming Service
+
+ CosNaming::NamingContext_var naming_context =
+ resolve_init<CosNaming::NamingContext>(orb.in(), "NameService"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ftec = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(),
+ name
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil(ftec.in()))
+ ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1);
+ }
+ }
+ ACE_CATCHANY {
+ ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1);
+ }
+ ACE_ENDTRY;
+ return 0;
+}
+
+int main(int argc, ACE_TCHAR** argv)
+{
+ ACE_TRY_NEW_ENV
+ {
+ orb = CORBA::ORB_init (argc, argv ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (parse_args(argc, argv)==-1)
+ return 1;
+
+ PortableServer::POA_var
+ root_poa = resolve_init<PortableServer::POA>(orb.in(), "RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // create POAManager
+ PortableServer::POAManager_var
+ mgr = root_poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ TAO_FTRTEC::FTEC_Gateway gateway_servant(orb.in(), ftec.in());
+
+ RtecEventChannelAdmin::EventChannel_var gateway =
+ gateway_servant.activate(root_poa.in() ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (ior_file_name.length())
+ {
+ CORBA::String_var str = orb->object_to_string(gateway.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ FILE *output_file=
+ ACE_OS::fopen (ACE_TEXT_CHAR_TO_TCHAR(ior_file_name.c_str()),
+ ACE_LIB_TEXT("w"));
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ ior_file_name.c_str()),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", str.in ());
+ ACE_OS::fclose (output_file);
+ }
+
+ orb->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ ACE_CATCHANY {
+ return 1;
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc
new file mode 100644
index 00000000000..7c21a4791f3
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.mpc
@@ -0,0 +1,9 @@
+ project(FTRTEC_Gateway_Service): orbsvcsexe, ftrteventclient {
+ exename = ftrtec_gateway_service
+ includes += $(TAO_ROOT)/orbsvcs $(TAO_ROOT)/orbsvcs/FtRtEvent/Utils
+
+ specific(gnuace) {
+ lit_libs += TAO_Strategies
+ }
+}
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj
new file mode 100644
index 00000000000..6118f0e5269
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Gateway_Service/FTRTEC_Gateway_Service.vcproj
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="FTRTEC_Gateway_Service"
+ ProjectGUID="{D8031178-FECA-1BAD-5E2D-9A151D7DAA67}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release/FTRTEC_Gateway_Service"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."
+ PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FTRT_ClientORB.lib TAO_FtRtEvent.lib TAO_CosNaming.lib TAO_IORTable.lib TAO_RTEvent.lib TAO_Svc_Utils.lib TAO_Messaging.lib TAO_FT_ClientORB.lib TAO_FTORB_Utils.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO_IORManip.lib TAO.lib ACE.lib"
+ OutputFile="$(OutDir)/ftrtec_gateway_service.exe"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\..\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="."
+ IntermediateDirectory="Debug/FTRTEC_Gateway_Service"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."
+ PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FTRT_ClientORBd.lib TAO_FtRtEventd.lib TAO_CosNamingd.lib TAO_IORTabled.lib TAO_RTEventd.lib TAO_Svc_Utilsd.lib TAO_Messagingd.lib TAO_FT_ClientORBd.lib TAO_FTORB_Utilsd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAO_IORManipd.lib TAOd.lib ACEd.lib"
+ OutputFile="$(OutDir)/ftrtec_gateway_service.exe"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\..\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Static Release|Win32"
+ OutputDirectory="Static_Release"
+ IntermediateDirectory="Static_Release/FTRTEC_Gateway_Service"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."
+ PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;NDEBUG;WIN32;_CONSOLE"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FTRT_ClientORBs.lib TAO_FtRtEvents.lib TAO_CosNamings.lib TAO_IORTables.lib TAO_RTEvents.lib TAO_Svc_Utilss.lib TAO_Messagings.lib TAO_FT_ClientORBs.lib TAO_FTORB_Utilss.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAO_IORManips.lib TAOs.lib ACEs.lib"
+ OutputFile="$(OutDir)/ftrtec_gateway_service.exe"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\..\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Static Debug|Win32"
+ OutputDirectory="Static_Debug"
+ IntermediateDirectory="Static_Debug/FTRTEC_Gateway_Service"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."
+ PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;_DEBUG;WIN32;_CONSOLE"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FTRT_ClientORBsd.lib TAO_FtRtEventsd.lib TAO_CosNamingsd.lib TAO_IORTablesd.lib TAO_RTEventsd.lib TAO_Svc_Utilssd.lib TAO_Messagingsd.lib TAO_FT_ClientORBsd.lib TAO_FTORB_Utilssd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAO_IORManipsd.lib TAOsd.lib ACEsd.lib"
+ OutputFile="$(OutDir)/ftrtec_gateway_service.exe"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\..\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ftrtec_gateway_service.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="..\..\..\orbsvcs\FtRtEvent\Utils,..\..\..\orbsvcs,..\..\..,..\..\..\tao,..\..\..\.."/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;cxx;cc;C;c">
+ <File
+ RelativePath=".\FTRTEC_Gateway_Service.cpp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/TAO/orbsvcs/FTRT_Event_Service/NameService b/TAO/orbsvcs/FTRT_Event_Service/NameService
new file mode 100755
index 00000000000..4e599cf9a44
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/NameService
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+case $# in
+ 0) ARG="-multicast";;
+ 1) ARG=$1
+esac
+
+case "$ARG" in
+ -multicast) PARAM="-m 1";;
+ -iiop) PARAM=iiop://`hostname`:${ORBNameServicePort=10000};;
+ -sciop) PARAM=sciop://`hostname`:${ORBNameServicePort=10000};;
+ *)
+ @echo Usage : NameService [-iiop | -sciop] 2&>1 ; exit 2
+
+esac
+
+$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -d -d -d -ORBEndPoint "$PARAM"
diff --git a/TAO/orbsvcs/FTRT_Event_Service/Readme b/TAO/orbsvcs/FTRT_Event_Service/Readme
new file mode 100644
index 00000000000..90d8280b3a0
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/Readme
@@ -0,0 +1,147 @@
+
+This directory contains the following programs:
+
+ ftrt_eventservice : Implements the functionality of fault tolerant event channel.
+ It can be started directly or be started by the ft_factory.
+
+ ftrtec_factory_service : A program used to spawn the ftrt_eventservice process. The process it
+ create can be controled through "test.cfg" whose contents should begin with the
+ repository id of EventChannel followed by the executable path of
+ ftrt_eventservice.
+
+ ftrtec_gateway_service : An intermediator program between the ftrt_eventservice and the clients which do not support FT CORBA.
+
+ consumer : A shell script to start the consumer test program. The actual consumer pragram is in orbsvcs/tests/FtRtEvent.
+
+ supplier : A shell script to start the supplier test program. The actual supplier pragram is in orbsvcs/tests/FtRtEvent.
+
+ ftec : a shell script to start ftrt_eventservice.
+
+Quick start:
+
+ Run the applications as follows:
+
+
+ 1. Start Naming_Service
+ $ $TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -m 1
+ or you can use the shell script NameService in this directory to start it.
+
+ 2. Start the ftrt_eventservice. Use the "-p" option to start it as a primary and
+ use the "-j" option to start it as a backup.
+
+ $ ./ftec -p
+ $ ./ftec -j
+ $ ./ftec -j
+
+
+ 3. Start the consumer and supplier.
+ $ ./consumer
+ $ ./supplier
+
+How do we add a new FTRTEC to the system?
+
+ Just use
+
+ ./ftec -j
+
+ The newly created process will contact to the naming service and then join to
+ the existing object group.
+
+Is there any adjustable options for FTRTEC?
+
+ Here is the list of options for the ftec script
+
+ -sciop Use SCIOP for CORBA communication
+ -sctp Use SCTP for fault detection
+ -hb n Specify the heart beat interval in sec
+ for SCTP connection, this option also activate sctp option.
+ -ami Use AMI call for replication messages (The default is
+ two-way CORBA call for replication)
+ -p activate as a primary replica.
+ -j activate as a backup replica.
+
+
+ Below are some options that are used for the consumer and supplier
+ test scripts.
+
+ -sciop Use SCIOP for CORBA communication. This requires that the Naming
+ Service and ftec are also started using SCIOP transport protocol.
+
+ -d n Specify the transaction depth. The transaction depth indicates the
+ number of replicas that must complete the subscription request before
+ the request can return.
+
+ -t f.f For supplier only. Specify the time interval between event sending
+ in seconds, this value should be a float point.
+
+ If you the naming service are not running at the same machine with above programs,
+ you can always set the environmental variables NameServiceIOR before starting the
+ ftec, consumer or supplier.
+
+
+ How do I start the FTRTEC using ftrtec_factory_service?
+
+ The ftrtec_factory_service is a small program that can instaniate a ftrt_eventservice on demand.
+ It exports the FT::GenericFactory interface to its client. There are two ways that
+ you can get the IOR for the factory object. 1) specify the name you want the factory
+ register to the naming service and then get the IOR from the naming service by
+ the name. 2) output the IOR to a file when the factory starts. Here are the options
+
+ ftrtec_factory_service :
+
+ -i id_string The id field of the name that is used to register to the naming service
+ -k kind_string The kind field of the name that is used to register to the naming service
+ -o output_filename The output file name for the factory IOR.
+
+Once you get the IOR for the factory, you can use create_object to intantiate the ftrt_eventservice.
+Here are the parameters in create_object() to control how ftrt_eventservice is created.
+
+ type_id : this value should be "IDL:FtRtecEventChannelAdmin/EventChannel:1.0"
+ the_criteria : the_criteria is a sequence of Property which in term consists of
+ "nam" and "value". Below a a list of possible nam and values.
+
+ nam value
+ ==========================================================================
+ FTEC_MEMBERSHIP PRIMARY
+ BACKUP
+ NONE
+ ----------------------------------------------------------------------
+ FTEC_DETECTOR_TRANSPORT_PROTOCL TCP
+ SCTP
+ -----------------------------------------------------------------------
+ FTEC_HEART_BEAT the heart beat value in sec.
+ (Note, you have to specify it using string, i.e.
+ the_criteria[0].value <<= "5");
+ ---------------------------------------------------------------------------------
+ FTEC_REPLICATION_STRATEGY AMI
+
+ (If not specified, the ftrt_eventservice use default
+ two-way call for replication)
+ ----------------------------------------------------------------------------------
+ NameServieIOR the corbaloc representation for the
+ naming service
+ =======================================================================================
+
+ Any nam string started with "-" will be used as a command line option to start ftrt_eventservice.
+ For example, if you specfiy the name as "-ORBEndpoint" and value as "sciop://" then the
+ ftrt_eventservice can be started using sciop.
+
+How do I use the ftrtec_gateway_service program ?
+
+ The FTRTEC uses some features in FT CORBA that requires every client to use FT ORB to work. If your
+ client is written based other ORBs other than TAO. You cannot get the desired fault tolerance feature.
+ In this case you can have the ftec_gateway as an intermediator between the FTRTEC and you client program.
+ For example, if you have an existing client called my_supplier.
+
+ # setting up the event channel group as previously stated.
+
+ $ftrtec_gateway_service -o gateway.ior ## start the gateway and output the IOR of the gateway to a file
+ $my_supplier -i file://gateway.ior ## start the supplier using the gateway
+
+
+
+
+
+
+
+
diff --git a/TAO/orbsvcs/FTRT_Event_Service/consumer b/TAO/orbsvcs/FTRT_Event_Service/consumer
new file mode 100755
index 00000000000..eec89bc5e69
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/consumer
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+HOSTNAME=`hostname`
+EndpintParam=
+FTEC_TransactionDepth=${FTEC_TransactionDepth=1}
+
+
+while test "$1" != ""
+do
+ case "$1" in
+ -sciop) ORBNameServicePort=${ORBNameServicePort=10000}
+ export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService}
+ EndpointParam="-ORBEndpoint sciop://";;
+ -d) $FTEC_TransactionDepth=$2
+ shift;;
+ esac
+ shift
+done
+
+cd $TAO_ROOT/orbsvcs/tests/FtRtEvent
+export FTEC_TransactionDepth
+./consumer $EndpointParam
diff --git a/TAO/orbsvcs/FTRT_Event_Service/ftec b/TAO/orbsvcs/FTRT_Event_Service/ftec
new file mode 100755
index 00000000000..390c1af594a
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/ftec
@@ -0,0 +1,25 @@
+#!/bin/sh
+HOSTNAME=`hostname`
+ARGS=
+
+while test "$1" != ""
+do
+ case "$1" in
+ -sciop) ORBNameServicePort=${ORBNameServicePort=10000}
+ export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService}
+ ARGS="$ARGS -ORBEndpoint sciop:// ";;
+ -sctp) export FTEC_DETECTOR_TRANSPORT_PROTOCOL=sctp ;;
+ -hb) export FTEC_DETECTOR_TRANSPORT_PROTOCOL=sctp
+ export FTEC_HEART_BEAT=$2
+ shift;;
+ -ami) export FTEC_REPLCATION_STRATEGY=AMI;;
+ -p) ARGS="$ARGS -p";;
+ -j) ARGS="$ARGS -j";;
+ -ns) ORBNameServicePort=${ORBNameServicePort=10000}
+ export NameServiceIOR=${NameServiceIOR=corbaloc:iiop:$2:$ORBNameServicePort/NameService};
+ shift;;
+ esac
+ shift
+done
+cd ./Event_Service
+./ftrt_eventservice $ARGS
diff --git a/TAO/orbsvcs/FTRT_Event_Service/supplier b/TAO/orbsvcs/FTRT_Event_Service/supplier
new file mode 100755
index 00000000000..96c63a29e90
--- /dev/null
+++ b/TAO/orbsvcs/FTRT_Event_Service/supplier
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+HOSTNAME=`hostname`
+EndpintParam=
+FTEC_TransactionDepth=${FTEC_TransactionDepth=1}
+
+while test "$1" != ""
+do
+ case "$1" in
+ -sciop) ORBNameServicePort=${ORBNameServicePort=10000}
+ export NameServiceIOR=${NameServiceIOR=corbaloc:sciop:$HOSTNAME:$ORBNameServicePort/NameService}
+ EndpointParam="-ORBEndpoint sciop://";;
+ -d) $FTEC_TransactionDepth=$2
+ shift;;
+ esac
+ shift
+done
+
+cd $TAO_ROOT/orbsvcs/tests/FtRtEvent
+export FTEC_TransactionDepth
+./supplier $EndpointParam
diff --git a/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp b/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp
index 45a1685ec94..79c705426db 100644
--- a/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp
+++ b/TAO/orbsvcs/LoadBalancer/LoadMonitor.cpp
@@ -2,7 +2,6 @@
#include "Monitor_Signal_Handler.h"
#include "orbsvcs/LoadBalancing/LB_CPU_Monitor.h"
-#include "orbsvcs/LoadBalancing/LB_conf.h"
#include "tao/ORB_Core.h"
@@ -19,10 +18,7 @@ static const char * location_kind = 0;
static const char * mtype = "CPU";
static const char * mstyle = "PUSH";
static const char * custom_monitor_ior = 0;
-
-// For the sake of consistency, make default push monitoring interval
-// the same as the pull monitoring interval.
-static long push_interval = TAO_LB_PULL_HANDLER_INTERVAL;
+static long push_interval = 15;
void
usage (const ACE_TCHAR * cmd)
@@ -38,6 +34,7 @@ usage (const ACE_TCHAR * cmd)
ACE_TEXT (" and requires \"PUSH\" style monitoring)\n")
ACE_TEXT (" -m <custom_monitor_ior>")
ACE_TEXT (" (overrides \"-t\", \"-l\" and \"-k\")\n")
+ ACE_TEXT (" -o <ior_output_file>\n")
ACE_TEXT (" -h\n")
ACE_TEXT ("\n"),
cmd));
@@ -281,6 +278,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
+
CosLoadBalancing::LoadMonitor_var load_monitor =
::get_load_monitor (orb.in (),
root_poa.in ()
diff --git a/TAO/orbsvcs/PSS/Makefile.parser b/TAO/orbsvcs/PSS/Makefile.parser
index 0322e1acc2b..0c0786c15a1 100644
--- a/TAO/orbsvcs/PSS/Makefile.parser
+++ b/TAO/orbsvcs/PSS/Makefile.parser
@@ -10,7 +10,7 @@ endif # ! TAO_ROOT
MAKEFILE = Makefile.parser
SRC = Dump_Visitor.cpp psdl_tao.cpp
-LDLIBS = -lTAO_PSDL -lTAO_PortableServer -lTAO_ObjRefTemplate -lTAO_Valuetype -lTAO_IORInterceptor -lTAO -lACE
+LDLIBS = -lTAO_PSDL -lTAO_PortableServer -lTAO -lACE
BIN = psdl_tao
diff --git a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
index bfe7bbc8d9f..39e96a45d3b 100644
--- a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
+++ b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
@@ -337,15 +337,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>;
template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
-template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>;
-template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>;
+template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
# endif /* __GNUC__ */
#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#if (! defined (__GNUC__)) || (__GNUC__ > 2) || \
@@ -386,14 +386,14 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN
#pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>
-#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>
+#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
# endif /* __GNUC__ */
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h
index e76f5c63b15..d0abe1c26fd 100644
--- a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h
+++ b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.h
@@ -66,7 +66,7 @@ private:
#if (! defined (__GNUC__)) || (__GNUC__ > 2) || \
(__GNUC__ == 2 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 8)
- typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy,
+ typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy,
TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE;
#endif /* __GNUC__ */
diff --git a/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp b/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp
index c0f6314a1b3..80162528463 100644
--- a/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp
+++ b/TAO/orbsvcs/examples/RtEC/Kokyu/Service.cpp
@@ -35,9 +35,9 @@ inline RtecScheduler::Period_t time_val_to_period (const ACE_Time_Value &tv)
int parse_args (int argc, char *argv[]);
-typedef TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_RMS_SCHED_TYPE;
+typedef TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_RMS_SCHED_TYPE;
-typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_MUF_SCHED_TYPE;
+typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_MUF_SCHED_TYPE;
int
main (int argc, char* argv[])
@@ -574,24 +574,24 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>;
template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
-template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>;
-template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Dependency_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_DFS_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Priority_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Tuple_Admission_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy>;
-template class TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>;
+template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Dependency_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_DFS_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Priority_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Tuple_Admission_Visitor<TAO_RMS_Reconfig_Sched_Strategy>;
+template class TAO_RSE_SCC_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
# endif /* __GNUC__ */
#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#if (! defined (__GNUC__)) || (__GNUC__ > 2) || \
@@ -632,24 +632,24 @@ template class TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYN
#pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>
-#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Reconfig_Scheduler<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_DFS_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Priority_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy>
-#pragma instantiate TAO_RSE_SCC_Visitor<TAO_RMS_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>
+#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Reconfig_Scheduler<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_DFS_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Priority_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_RMS_Reconfig_Sched_Strategy>
+#pragma instantiate TAO_RSE_SCC_Visitor<TAO_RMS_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
# endif /* __GNUC__ */
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp b/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp
index 9567a44a984..a2999d22f50 100644
--- a/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp
+++ b/TAO/orbsvcs/examples/RtEC/Schedule/Service.cpp
@@ -23,7 +23,7 @@ int config_run = 0;
int parse_args (int argc, char *argv[]);
-typedef TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE;
+typedef TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX> RECONFIG_SCHED_TYPE;
int
main (int argc, char* argv[])
@@ -464,15 +464,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>;
template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
-template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>;
-template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>;
+template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
# endif /* __GNUC__ */
#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#if (! defined (__GNUC__)) || (__GNUC__ > 2) || \
@@ -513,14 +513,14 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN
#pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>
-#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>
+#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
# endif /* __GNUC__ */
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp
index 14855d5de9a..f6153df1220 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp
@@ -142,10 +142,10 @@ TAO_CEC_ProxyPushSupplier::shutdown (ACE_ENV_SINGLE_ARG_DECL)
if (CORBA::is_nil (typed_consumer.in ()))
return;
- ACE_TRY_EX (typed)
+ ACE_TRY
{
typed_consumer->disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK_EX (typed);
+ ACE_TRY_CHECK;
}
ACE_CATCHANY
{
@@ -154,7 +154,7 @@ TAO_CEC_ProxyPushSupplier::shutdown (ACE_ENV_SINGLE_ARG_DECL)
}
ACE_ENDTRY;
} /* this->is_typed_ec */
- else
+ else
{
#endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
@@ -355,13 +355,13 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer (
// declared and obtained before the Guard to avoid deadlock during the
// _is_a (during _narrow) and get_typed_consumer invocations.
// They are eventually assigned onto this object inside the Guard.
- CosTypedEventComm::TypedPushConsumer_var local_typed_consumer =
+ CosTypedEventComm::TypedPushConsumer_var local_typed_consumer =
CosTypedEventComm::TypedPushConsumer::_narrow (push_consumer
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
// Obtain the typed object interface from the consumer
- CORBA::Object_var local_typed_consumer_obj =
+ CORBA::Object_var local_typed_consumer_obj =
CORBA::Object::_duplicate (local_typed_consumer->get_typed_consumer (
ACE_ENV_SINGLE_ARG_PARAMETER) );
ACE_CHECK;
@@ -373,7 +373,7 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer (
// @@ CosEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ());
ACE_CHECK;
- if (this->is_connected_i ())
+ if (this->is_connected_i ())
{
if (this->typed_event_channel_->consumer_reconnect () == 0)
ACE_THROW (CosEventChannelAdmin::AlreadyConnected ());
@@ -401,12 +401,12 @@ TAO_CEC_ProxyPushSupplier::connect_push_consumer (
}
- this->typed_consumer_ =
+ this->typed_consumer_ =
CosTypedEventComm::TypedPushConsumer::_duplicate (local_typed_consumer.in () );
ACE_CHECK;
// Store the typed object interface from the consumer
- this->typed_consumer_obj_ =
+ this->typed_consumer_obj_ =
CORBA::Object::_duplicate (local_typed_consumer_obj.in () );
ACE_CHECK;
}
@@ -530,10 +530,10 @@ TAO_CEC_ProxyPushSupplier::disconnect_push_supplier (
{
if (this->typed_event_channel_->disconnect_callbacks ())
{
- ACE_TRY_EX (typed)
+ ACE_TRY
{
typed_consumer->disconnect_push_consumer (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK_EX (typed);
+ ACE_TRY_CHECK;
}
ACE_CATCHANY
{
@@ -689,7 +689,7 @@ TAO_CEC_ProxyPushSupplier::invoke_to_consumer (const TAO_CEC_TypedEvent &typed_e
CORBA::Object::_duplicate (this->typed_consumer_obj_.in ());
}
- // Create the DII request
+ // Create the DII request
ACE_TRY
{
typed_consumer_obj_->_create_request (0, // ctx
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp
index caba8ab004f..01c2f4fd1e9 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp
@@ -18,7 +18,7 @@ TAO_CEC_TypedConsumerAdmin::TAO_CEC_TypedConsumerAdmin (TAO_CEC_TypedEventChanne
this->default_POA_ =
this->typed_event_channel_->typed_consumer_poa ();
}
-
+
// Implementation skeleton destructor
TAO_CEC_TypedConsumerAdmin::~TAO_CEC_TypedConsumerAdmin (void)
{
@@ -67,7 +67,6 @@ TAO_CEC_TypedConsumerAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL)
CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr
TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier (
const char * /*supported_interface*/
- ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
@@ -77,11 +76,10 @@ TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier (
{
ACE_THROW (CosTypedEventChannelAdmin::InterfaceNotSupported ());
}
-
+
CosEventChannelAdmin::ProxyPushSupplier_ptr
TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier (
const char * uses_interface
- ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
@@ -90,7 +88,7 @@ TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier (
{
// Register the consumer uses_interface with the EC
- int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface ACE_ENV_ARG_PARAMETER);
+ int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface ACE_ENV_ARG_DECL);
if (result == -1)
{
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h
index 5c943a8d301..1b933ea3d1d 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h
@@ -63,11 +63,11 @@ public:
// = The CosTypedEventChannelAdmin::TypedConsumerAdmin methods...
virtual CosEventChannelAdmin::ProxyPushSupplier_ptr
- obtain_typed_push_supplier (const char * uses_interface ACE_ENV_ARG_DECL)
+ obtain_typed_push_supplier (const char * uses_interface)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTypedEventChannelAdmin::NoSuchImplementation));
virtual CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr
- obtain_typed_pull_supplier (const char * supported_interface ACE_ENV_ARG_DECL)
+ obtain_typed_pull_supplier (const char * supported_interface)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTypedEventChannelAdmin::InterfaceNotSupported));
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp
index 05feab2c306..240946f5b75 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.cpp
@@ -112,17 +112,17 @@ TAO_CEC_TypedEventChannel::shutdown (ACE_ENV_SINGLE_ARG_DECL)
// Deactivate the Typed EC
PortableServer::POA_var t_poa =
this->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_CHECK;
-
+ ACE_TRY_CHECK;
+
PortableServer::ObjectId_var t_id =
t_poa->servant_to_id (this ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
+ ACE_TRY_CHECK;
t_poa->deactivate_object (t_id.in () ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
+ ACE_TRY_CHECK;
this->orb_->shutdown(0);
- ACE_CHECK;
+ ACE_TRY_CHECK;
}
}
@@ -252,12 +252,12 @@ TAO_CEC_TypedEventChannel::cache_interface_description (const char *interface_
// Lookup the Interface Name in the IFR
CORBA::Contained_var contained =
this->interface_repository_->lookup_id (interface_ ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ ACE_CHECK;
// Narrow the interface
CORBA::InterfaceDef_var interface =
CORBA::InterfaceDef::_narrow (contained.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ ACE_CHECK;
if (CORBA::is_nil (interface.in () ))
{
@@ -272,7 +272,7 @@ TAO_CEC_TypedEventChannel::cache_interface_description (const char *interface_
// Obtain the full interface description
CORBA::InterfaceDef::FullInterfaceDescription_var fid =
interface->describe_interface (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ ACE_CHECK;
// Obtain the base interfaces
this->base_interfaces_ = fid->base_interfaces;
@@ -416,9 +416,7 @@ TAO_CEC_TypedEventChannel::consumer_register_uses_interace (const char *uses_int
else
{
// Neither a consumer nor a supplier has connected yet
- int result = cache_interface_description (uses_interface_ ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (-1);
-
+ int result = cache_interface_description (uses_interface_);
if (result == 0)
{
this->uses_interface_ = uses_interface_;
@@ -480,9 +478,7 @@ TAO_CEC_TypedEventChannel::supplier_register_supported_interface (const char *su
else
{
// Neither a consumer nor a supplier has connected yet
- int result = cache_interface_description (supported_interface_ ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (-1);
-
+ int result = cache_interface_description (supported_interface_);
if (result == 0)
{
this->supported_interface_ = supported_interface_;
@@ -533,14 +529,14 @@ TAO_CEC_TypedEventChannel::for_consumers (ACE_ENV_SINGLE_ARG_DECL)
{
return this->typed_consumer_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
}
-
+
CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr
TAO_CEC_TypedEventChannel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->typed_supplier_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
}
-
+
void
TAO_CEC_TypedEventChannel::destroy (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h
index d9aefc5817d..3e07e5e198e 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h
@@ -107,16 +107,17 @@ class TAO_Event_Export TAO_CEC_TypedEventChannel : public virtual POA_CosTypedEv
public:
/**
- * Constructor
+ * constructor
* If <own_factory> is not 0 it assumes ownership of the factory.
* If the factory is <nil> it uses the Service_Configurator to load
* the Factory, if not found it uses TAO_CEC_Default_Resource_Factory
*/
+ //Constructor
TAO_CEC_TypedEventChannel (const TAO_CEC_TypedEventChannel_Attributes& attributes,
TAO_CEC_Factory* factory = 0,
int own_factory = 0);
- /// Destructor
+ //Destructor
virtual ~TAO_CEC_TypedEventChannel (void);
/// Start the internal threads (if any), etc.
@@ -204,7 +205,7 @@ public:
typedef ACE_Hash_Map_Manager_Ex<const char *, TAO_CEC_Operation_Params *, ACE_Hash<const char *>, ACE_Equal_To<const char *>, ACE_Null_Mutex> InterfaceDescription;
typedef InterfaceDescription::iterator Iterator;
- /// Finds a operation/parameter from the IFR cache
+ // Finds a operation/parameter from the IFR cache
TAO_CEC_Operation_Params * find_from_ifr_cache (const char *operation);
/// Function allows consumer admin to register the uses interface
@@ -245,13 +246,13 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
protected:
- /// Function caches the full interface description from the IFR
+ // Function caches the full interface description from the IFR
int cache_interface_description (const char *interface ACE_ENV_ARG_DECL);
- /// Insert a operation/parameter into the IFR cache
+ // Insert a operation/parameter into the IFR cache
int insert_into_ifr_cache (const char *operation, TAO_CEC_Operation_Params *parameters);
- /// Function clears the IFR cache
+ // Function clears the IFR cache
int clear_ifr_cache (void);
private:
@@ -320,10 +321,10 @@ private:
class TAO_Event_Export TAO_CEC_Param
{
public:
- /// Constructor
+ /// constructor
TAO_CEC_Param (void);
- /// Destructor
+ /// destructor
~TAO_CEC_Param (void);
private:
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h
index 224e687c698..95a54d4cc0d 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedProxyPushConsumer.h
@@ -116,7 +116,7 @@ private:
/// The typed supplier....
CosEventComm::PushSupplier_var typed_supplier_;
- /// The DSI impl
+ // The DSI impl
TAO_CEC_DynamicImplementationServer* dsi_impl_;
/// The DSI Portable Server OID
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp
index 9f488611cae..69ff0cc5ff1 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.cpp
@@ -18,7 +18,7 @@ TAO_CEC_TypedSupplierAdmin::TAO_CEC_TypedSupplierAdmin (TAO_CEC_TypedEventChanne
this->default_POA_ =
this->typed_event_channel_->typed_supplier_poa ();
}
-
+
// Implementation skeleton destructor
TAO_CEC_TypedSupplierAdmin::~TAO_CEC_TypedSupplierAdmin (void)
{
@@ -61,7 +61,6 @@ TAO_CEC_TypedSupplierAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL)
CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr
TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer (
const char * supported_interface
- ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
@@ -69,7 +68,7 @@ TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer (
))
{
- int result = this->typed_event_channel_->supplier_register_supported_interface (supported_interface ACE_ENV_ARG_PARAMETER);
+ int result = this->typed_event_channel_->supplier_register_supported_interface (supported_interface);
if (result == -1)
{
@@ -78,11 +77,10 @@ TAO_CEC_TypedSupplierAdmin::obtain_typed_push_consumer (
return this->typed_push_admin_.obtain (ACE_ENV_SINGLE_ARG_PARAMETER);
}
-
+
CosEventChannelAdmin::ProxyPullConsumer_ptr
TAO_CEC_TypedSupplierAdmin::obtain_typed_pull_consumer (
const char * /* uses_interface */
- ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException,
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h
index b987261b037..b04010c2cdd 100644
--- a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h
+++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h
@@ -57,14 +57,12 @@ public:
// = The CosTypedEventChannelAdmin::TypedSupplierAdmin methods...
virtual CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr
- obtain_typed_push_consumer (const char * supported_interface
- ACE_ENV_ARG_DECL)
+ obtain_typed_push_consumer (const char * supported_interface)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTypedEventChannelAdmin::InterfaceNotSupported));
virtual CosEventChannelAdmin::ProxyPullConsumer_ptr
- obtain_typed_pull_consumer (const char * uses_interface
- ACE_ENV_ARG_DECL)
+ obtain_typed_pull_consumer (const char * uses_interface)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTypedEventChannelAdmin::NoSuchImplementation));
diff --git a/TAO/orbsvcs/orbsvcs/FTRT.idl b/TAO/orbsvcs/orbsvcs/FTRT.idl
new file mode 100644
index 00000000000..4ae2530a225
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FTRT.idl
@@ -0,0 +1,82 @@
+// -*- IDL -*-
+
+//=============================================================================
+/**
+ * @file FTRT.idl
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang
+ */
+//=============================================================================
+
+#ifndef FTRT_H
+#define FTRT_H
+
+#include "tao/IOP.pidl"
+
+module FTRT
+{
+
+ typedef long TransactionDepth;
+ typedef unsigned long SequenceNumber;
+
+ const IOP::ServiceId FT_TRANSACTION_DEPTH = 30;
+ const IOP::ServiceId FT_SEQUENCE_NUMBER = 31;
+ const IOP::ServiceId FT_FORWARD = 32;
+
+ /// this service context is used by FTRT client
+ /// to information the server the depth of replication
+ /// which has to be complete before the request returns.
+ struct FTTransactionDepthServiceContext {
+ TransactionDepth transaction_depth;
+ };
+
+ /// this service context is used by replicas for detecting
+ /// the loss of replication messages in soft-replication.
+ struct FTSequenceNumberServiceContext {
+ SequenceNumber sequence_number;
+ };
+
+ /// In the FTCORBA standard, if the server receive a request
+ /// from a client with an object_group_ref_version less than
+ /// the one known to the server. The server should reply a
+ /// LOCATION_FORARD_PERM exception. However, if the server is
+ /// also the primary, the server have to wait until the client
+ /// issue a new request with the new object_group_ref_version
+ /// before it can return the result. This will cause unnecessary
+ /// delay for processing the request. The service context is used
+ /// by the primary to inform the client the lastest version of
+ /// IOGR known to the primary in the reply. The client can thus
+ /// upates the object reference in the next method invocation without
+ /// extra round trip delay.
+ struct FTForwardServiceContext {
+ Object forward;
+ };
+
+ exception OutOfSequence
+ {
+ SequenceNumber current;
+ };
+
+ exception TransactionDepthTooHigh
+ {
+ };
+
+ typedef sequence<octet> State;
+
+ exception InvalidUpdate {};
+
+ interface Updateable
+ {
+ /// used for assured replication
+ void set_update(in State s)
+ raises(InvalidUpdate, OutOfSequence, TransactionDepthTooHigh);
+
+ /// used for soft replication
+ oneway void oneway_set_update(in State s);
+ };
+};
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl b/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl
new file mode 100644
index 00000000000..3290d1f2225
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FTRT_GroupManager.idl
@@ -0,0 +1,71 @@
+// -*- IDL -*-
+
+//=============================================================================
+/**
+ * @file FTRT_GroupManager.idl
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang
+ */
+//=============================================================================
+
+#ifndef TAO_FTRT_GROUPMANAGER_IDL
+#define TAO_FTRT_GROUPMANAGER_IDL
+
+#include "orbsvcs/RtecEventChannelAdmin.idl"
+#include "orb.idl"
+#include "orbsvcs/CosNaming.idl"
+#include "FTRT.idl"
+
+module FTRT
+{
+ typedef CosNaming::Name Location;
+
+ interface FaultListener {
+ /// called by the replica which detect the loss of connection with its
+ /// predecessor to the primary
+ oneway void replica_crashed(in Location location);
+ };
+
+ interface ObjectGroupManager;
+
+ struct ManagerInfo {
+ Location the_location;
+ ObjectGroupManager ior;
+ };
+
+ exception PredecessorUnreachable {};
+
+ typedef sequence<ManagerInfo> ManagerInfoList;
+ exception InvalidState{};
+
+ interface ObjectGroupManager : FaultListener {
+ boolean start(in FaultListener listener,
+ out Location the_location);
+
+ void create_group(in ManagerInfoList info_list,
+ in unsigned long object_group_ref_version)
+ raises(PredecessorUnreachable);
+
+ /// called by a newly created replica to the primary
+ // for requesting for joining a object group
+ oneway void join_group(in ManagerInfo info);
+
+ /// called by primary to replicas
+ /// for adding a new member to the group
+ void add_member(in ManagerInfo info,
+ in unsigned long object_group_ref_version);
+
+ /// called by the primary to backups for deleting a member from
+ /// the group
+ oneway void remove_member(in Location crashed_location,
+ in unsigned long object_group_ref_version);
+
+ void set_state(in State stat)
+ raises (InvalidState);
+
+ };
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp
index 48386226378..24ede03819a 100644
--- a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp
+++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp
@@ -55,6 +55,7 @@ namespace TAO
FT_ClientRequest_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
+ delete this;
}
void
@@ -100,7 +101,7 @@ namespace TAO
ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- this->tss_resources ()->clean_flag_ = true;
+ this->tss_resources ()->clean_flag_ = false;
}
void
@@ -223,9 +224,9 @@ namespace TAO
cdr.reset_byte_order (ACE_static_cast (int,byte_order));
- FT::FTGroupVersionServiceContext gvsc;
+ FT::TagFTGroupTaggedComponent gtc;
- if ((cdr >> gvsc) == 0)
+ if ((cdr >> gtc) == 0)
ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28,
CORBA::COMPLETED_NO));
@@ -236,7 +237,7 @@ namespace TAO
if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)))
ACE_THROW (CORBA::MARSHAL ());
- if (!(ocdr << gvsc))
+ if (!(ocdr << gtc.object_group_ref_version))
ACE_THROW (CORBA::MARSHAL ());
CORBA::ULong length =
@@ -322,10 +323,6 @@ namespace TAO
ftrsc.retention_id = ++this->retention_id_;
tss->retention_id_ = ftrsc.retention_id;
-
- // Generated one already. We don't generate another
- // till we get a rely for this.
- tss->clean_flag_ = false;
}
else
{
diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp
index d5de621e2df..e86f798dbf1 100644
--- a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp
+++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ServerRequest_Interceptor.cpp
@@ -27,13 +27,14 @@ namespace TAO
FT_ServerRequest_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- return CORBA::string_dup ("TAO_FT_ServerRequest_Interceptor");
+ return CORBA::string_dup ("FT_ServerRequest_Interceptor");
}
void
FT_ServerRequest_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
+ delete this;
}
void
@@ -123,7 +124,7 @@ namespace TAO
const IOP::ServiceContext &svc
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
+ PortableInterceptor::ForwardRequest))
{
TAO_InputCDR cdr (ACE_reinterpret_cast (const char*,
svc.context_data.get_buffer ()
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc b/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc
new file mode 100644
index 00000000000..5c4c2aae53a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent.mpc
@@ -0,0 +1,80 @@
+project (FtRtEvent) : orbsvcslib, core, ftorbutils, rtevent, naming {
+
+ Define_Custom(AMI_IDL) {
+ automatic = 0;
+ libpath = $(ACE_ROOT)/lib
+ command = $(ACE_ROOT)/bin/tao_idl
+ commandflags += -GC -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
+ inputext = .idl
+ header_outputext = C.h,S.h
+ }
+
+ sharedname = TAO_FtRtEvent
+ idlflags += -Wb,export_macro=TAO_FtRtEvent_Export -Wb,export_include=FtRtEvent/Utils/ftrtevent_export.h
+ dynamicflags = TAO_FTRTEVENT_BUILD_DLL
+ tagchecks = FtRtEvent
+ includes += $(TAO_ROOT)/orbsvcs/orbsvcs
+
+ AMI_IDL_Files {
+ commandflags += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs -Wb,export_macro=TAO_FtRtEvent_Export -Wb,export_include=FtRtEvent/Utils/ftrtevent_export.h
+ FTRT.idl
+ FtRtecEventComm.idl
+ }
+
+ IDL_Files {
+ FtRtecEventChannelAdmin.idl
+ FTRT_GroupManager.idl
+ }
+
+ Source_Files (ORBSVCS_COMPONENTS) {
+ FtRtEvent {
+ FTRTC.cpp
+ FTRTS.cpp
+ FtRtecEventCommC.cpp
+ FtRtecEventCommS.cpp
+ FTRT_GroupManagerC.cpp
+ FTRT_GroupManagerS.cpp
+ FtRtecEventChannelAdminC.cpp
+ FtRtecEventChannelAdminS.cpp
+ FtRtEvent/Utils
+ }
+ }
+}
+
+project (FTRT_ClientORB) : messaging, orbsvcslib, core {
+ sharedname = TAO_FTRT_ClientORB
+ dynamicflags = TAO_FTRT_BUILD_DLL
+ tagchecks = FTRT_ClientORB
+ includes += $(TAO_ROOT)/orbsvcs/orbsvcs/FtRtEvent/ClientORB
+ IDL_Files {
+ }
+ Source_Files (ORBSVCS_COMPONENTS) {
+ FTRT_ClientORB {
+ FtRtEvent/ClientORB
+ }
+ }
+}
+
+project (FTRT_EventChannel) : orbsvcslib, ftrtevent {
+ sharedname = TAO_FTRT_EventChannel
+ dynamicflags = TAO_FTRTEC_BUILD_DLL
+ tagchecks = FTRT_EventChannel
+ includes += $(TAO_ROOT)/orbsvcs/orbsvcs/FtRtEvent/EventChannel
+ after += Utils
+ libs += TAO_Utils
+ IDL_Files {
+ }
+
+ Source_Files (ORBSVCS_COMPONENTS) {
+ FTRT_EventChannel {
+ FtRtEvent/EventChannel
+ }
+ }
+ Template_Files {
+ default {
+ FtRtEvent/EventChannel/ConnectionHandler_T.cpp
+ FtRtEvent/EventChannel/Fault_Detector_T.cpp
+ FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp
+ }
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp
new file mode 100644
index 00000000000..6c7191ebbd8
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.cpp
@@ -0,0 +1,36 @@
+// $Id$
+
+#include "FTRT_ClientORB_Initializer.h"
+#include "FTRT_ClientORB_Interceptor.h"
+
+ACE_RCSID (ClientORB,
+ FTRT_ClientORB_Initializer,
+ "$Id$")
+
+#include "tao/debug.h"
+
+
+FTRT_ClientORB_Initializer::FTRT_ClientORB_Initializer (int transaction_depth)
+: client_interceptor_ ( new FTRT_ClientORB_Interceptor(transaction_depth) )
+{
+}
+
+void
+FTRT_ClientORB_Initializer::pre_init (
+ PortableInterceptor::ORBInitInfo_ptr
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void
+FTRT_ClientORB_Initializer::post_init (
+ PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ info->add_client_request_interceptor (client_interceptor_.in()
+ ACE_ENV_ARG_PARAMETER);
+}
+
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h
new file mode 100644
index 00000000000..f980e9a973a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Initializer.h
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTRT_ClientORB_Initializer.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+
+#ifndef FTRT_CLIENTORB_INITIALIZER_H
+#define FTRT_CLIENTORB_INITIALIZER_H
+
+#include /**/ "ace/pre.h"
+
+#include "tao/corbafwd.h"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableInterceptorC.h"
+#include "tao/LocalObject.h"
+
+// This is to remove "inherits via dominance" warnings from MSVC.
+// MSVC is being a little too paranoid.
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+/// RTCORBA ORB initializer.
+class FTRT_ClientORB_Initializer :
+ public virtual PortableInterceptor::ORBInitializer,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ /// Priority mapping types
+ FTRT_ClientORB_Initializer (int transaction_depth);
+
+ virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void post_init (PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+private:
+ PortableInterceptor::ClientRequestInterceptor_var client_interceptor_;
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+
+#include /**/ "ace/post.h"
+
+#endif /* FTRT_CLIENTORB_INITIALIZER_H */
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp
new file mode 100644
index 00000000000..f6820db4526
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.cpp
@@ -0,0 +1,146 @@
+// $Id$
+
+#include "FTRT_ClientORB_Interceptor.h"
+#include "tao/MProfile.h"
+#include "tao/Stub.h"
+
+ACE_RCSID (ClientORB,
+ FTRT_ClientORB_Interceptor,
+ "$Id$")
+
+namespace FTRT {
+ const unsigned FT_TRANSACTION_DEPTH = 30;
+ const unsigned FT_FORWARD = 32;
+};
+
+FTRT_ClientORB_Interceptor::
+FTRT_ClientORB_Interceptor (CORBA::Long transaction_depth)
+ : myname_ ("FTRT_ClientORB_Interceptor")
+ , transaction_depth_(transaction_depth)
+{
+}
+
+FTRT_ClientORB_Interceptor::~FTRT_ClientORB_Interceptor (void)
+{
+}
+
+char *
+FTRT_ClientORB_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+FTRT_ClientORB_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void
+FTRT_ClientORB_Interceptor::send_poll (
+ PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Do Nothing
+}
+
+void
+FTRT_ClientORB_Interceptor::send_request (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ ACE_TRACE("FTRT_ClientORB_Interceptor::send_request");
+ ACE_TRY
+ {
+ IOP::ServiceContext_var sc =
+ ri->get_request_service_context (FTRT::FT_TRANSACTION_DEPTH
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCH (CORBA::BAD_PARAM, ex)
+ {
+ // Add FT_REQUEST context
+ IOP::ServiceContext sc;
+ TAO_OutputCDR cdr;
+
+ if ((cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)) ==0)
+ ACE_THROW (CORBA::MARSHAL ());
+
+ // Add Transaction Depth Context
+ if ((cdr << transaction_depth_) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+ sc.context_id = FTRT::FT_TRANSACTION_DEPTH;
+
+ ACE_Message_Block mb;
+ ACE_CDR::consolidate(&mb, cdr.begin());
+ sc.context_data.replace(mb.length(), &mb);
+
+ ri->add_request_service_context (sc, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ ACE_ENDTRY;
+}
+
+void
+FTRT_ClientORB_Interceptor::receive_reply (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_TRACE("FTRT_ClientORB_Interceptor::receive_reply");
+
+
+ IOP::ServiceContext_var service_context;
+ ACE_TRY {
+ service_context =
+ ri->get_reply_service_context(FTRT::FT_FORWARD
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY {
+ return;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK;
+
+
+ const char * buf =
+ ACE_reinterpret_cast (const char *,
+ service_context->context_data.get_buffer ());
+
+ TAO_InputCDR cdr (buf,
+ service_context->context_data.length ());
+
+
+ CORBA::Object_var obj;
+
+ if (cdr >> obj) {
+ // update the target
+ CORBA::Object_var target = ri->target(ACE_ENV_SINGLE_ARG_PARAMETER);
+ target->_stubobj ()->base_profiles ( obj->_stubobj()->base_profiles() );
+ ACE_DEBUG((LM_DEBUG, "target object updated\n"));
+ }
+}
+
+void
+FTRT_ClientORB_Interceptor::receive_other (
+ PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
+
+void
+FTRT_ClientORB_Interceptor::receive_exception (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ ACE_UNUSED_ARG(ri);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h
new file mode 100644
index 00000000000..d4075109c96
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Interceptor.h
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTRT_ClientORB_Interceptor.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+
+#ifndef TAO_FTRT_CLIENTORB_INTERCEPTOR_H
+#define TAO_FTRT_CLIENTORB_INTERCEPTOR_H
+
+#include /**/ "ace/pre.h"
+
+#include "tao/corbafwd.h"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableInterceptorC.h"
+#include "tao/LocalObject.h"
+
+// This is to remove "inherits via dominance" warnings from MSVC.
+// MSVC is being a little too paranoid.
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+
+class FTRT_ClientORB_Interceptor
+ : public virtual PortableInterceptor::ClientRequestInterceptor,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ FTRT_ClientORB_Interceptor (CORBA::Long transaction_depth);
+ // ctor.
+
+ virtual ~FTRT_ClientORB_Interceptor ();
+ // dtor.
+
+ virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+private:
+ const char *myname_;
+ CORBA::Long transaction_depth_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp
new file mode 100644
index 00000000000..053c1f1832c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.cpp
@@ -0,0 +1,96 @@
+// $Id$
+
+#include "FTRT_ClientORB_Loader.h"
+
+#include "FTRT_ClientORB_Initializer.h"
+
+#include "tao/debug.h"
+
+ACE_RCSID (ClientORB,
+ FTRT_ClientORB_Loader,
+ "$Id$")
+
+
+namespace TAO_FTRT {
+ FTRT_ClientORB_Loader::FTRT_ClientORB_Loader (void)
+ {
+ }
+
+ FTRT_ClientORB_Loader::~FTRT_ClientORB_Loader (void)
+ {
+ }
+
+ int FTRT_ClientORB_Loader::init (int argc,
+ ACE_TCHAR* argv[])
+ {
+ ACE_TRACE ("FTRT_ClientORB_Loader::init");
+
+ static int initialized = 0;
+
+ // Only allow initialization once.
+ if (initialized)
+ return 0;
+
+ initialized = 1;
+
+ // Set defaults.
+ int transaction_depth = 1;
+ int curarg = 0;
+
+ // Parse any service configurator parameters.
+ for (curarg = 0; curarg < argc; curarg++)
+ if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBTransactionDepth")) == 0)
+ {
+ curarg++;
+ if (curarg < argc)
+ transaction_depth = atoi(argv[curarg]);
+ }
+
+
+ // Register the ORB initializer.
+ ACE_TRY_NEW_ENV
+ {
+ PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
+ PortableInterceptor::ORBInitializer::_nil ();
+ PortableInterceptor::ORBInitializer_var orb_initializer;
+
+ /// Register the RTCORBA ORBInitializer.
+ ACE_NEW_THROW_EX (temp_orb_initializer,
+ FTRT_ClientORB_Initializer(transaction_depth),
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ 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
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Unexpected exception caught while "
+ "initializing the TransactionDepth");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+ }
+
+ /////////////////////////////////////////////////////////////////////
+
+ ACE_FACTORY_DEFINE (TAO_FTRT, FTRT_ClientORB_Loader);
+ ACE_STATIC_SVC_DEFINE (FTRT_ClientORB_Loader,
+ ACE_TEXT ("FTRT_ClientORB_Service"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (FTRT_ClientORB_Loader),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0);
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h
new file mode 100644
index 00000000000..ed3162b5e96
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTRT_ClientORB_Loader.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef FTRT_CLIENTORB_LOADER_H
+#define FTRT_CLIENTORB_LOADER_H
+
+#include "ace/pre.h"
+
+#include "ftrt_clientorb_export.h"
+
+#include "tao/orbconf.h"
+
+#include "ace/Service_Object.h"
+#include "ace/Service_Config.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_ORB_Core;
+
+namespace TAO_FTRT {
+
+ class TAO_FTRT_Export FTRT_ClientORB_Loader : public ACE_Service_Object
+ {
+ public:
+ /// Constructor.
+ FTRT_ClientORB_Loader (void);
+
+ /// Destructor.
+ virtual ~FTRT_ClientORB_Loader (void);
+
+ /// Initialize the TransactionDepth loader hooks.
+ virtual int init (int argc,
+ ACE_TCHAR* []);
+ };
+
+
+ ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRT, FTRT_ClientORB_Loader)
+ ACE_STATIC_SVC_REQUIRE(FTRT_ClientORB_Loader);
+ ACE_FACTORY_DECLARE (TAO_FTRT, FTRT_ClientORB_Loader)
+}
+
+#include "ace/post.h"
+#endif //FTRT_CLIENTORB_LOADER_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h
new file mode 100644
index 00000000000..18701dc1277
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/ClientORB/ftrt_clientorb_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TAO_FTRT
+// ------------------------------
+#ifndef TAO_FTRT_EXPORT_H
+#define TAO_FTRT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TAO_FTRT_HAS_DLL)
+# define TAO_FTRT_HAS_DLL 1
+#endif /* ! TAO_FTRT_HAS_DLL */
+
+#if defined (TAO_FTRT_HAS_DLL) && (TAO_FTRT_HAS_DLL == 1)
+# if defined (TAO_FTRT_BUILD_DLL)
+# define TAO_FTRT_Export ACE_Proper_Export_Flag
+# define TAO_FTRT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TAO_FTRT_BUILD_DLL */
+# define TAO_FTRT_Export ACE_Proper_Import_Flag
+# define TAO_FTRT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TAO_FTRT_BUILD_DLL */
+#else /* TAO_FTRT_HAS_DLL == 1 */
+# define TAO_FTRT_Export
+# define TAO_FTRT_SINGLETON_DECLARATION(T)
+# define TAO_FTRT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TAO_FTRT_HAS_DLL == 1 */
+
+// Set TAO_FTRT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TAO_FTRT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TAO_FTRT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TAO_FTRT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TAO_FTRT_NTRACE */
+
+#if (TAO_FTRT_NTRACE == 1)
+# define TAO_FTRT_TRACE(X)
+#else /* (TAO_FTRT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define TAO_FTRT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (TAO_FTRT_NTRACE == 1) */
+
+#endif /* TAO_FTRT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp
new file mode 100644
index 00000000000..07aad98ce30
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.cpp
@@ -0,0 +1,172 @@
+// $Id$
+
+#include "AMI_Primary_Replication_Strategy.h"
+#include "ace/Synch_T.h"
+#include "GroupInfoPublisher.h"
+#include "../Utils/ScopeGuard.h"
+#include "Request_Context_Repository.h"
+#include "../Utils/resolve_init.h"
+#include "create_persistent_poa.h"
+#include "Update_Manager.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+
+ACE_RCSID (EventChannel,
+ AMI_Primary_Replication_Strategy,
+ "$Id$")
+
+AMI_Primary_Replication_Strategy::AMI_Primary_Replication_Strategy()
+: handler_(this)
+{
+}
+
+AMI_Primary_Replication_Strategy::~AMI_Primary_Replication_Strategy()
+{
+ running_= false;
+ this->wait();
+}
+
+int AMI_Primary_Replication_Strategy::acquire_read (void)
+{
+ return mutex_.acquire_read();
+}
+
+int AMI_Primary_Replication_Strategy::acquire_write (void)
+{
+ return mutex_.acquire_write();
+}
+
+int AMI_Primary_Replication_Strategy::release (void)
+{
+ return mutex_.release();
+}
+
+
+int AMI_Primary_Replication_Strategy::init(ACE_ENV_SINGLE_ARG_DECL)
+{
+ return this->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+int AMI_Primary_Replication_Strategy::svc()
+{
+ ACE_TRY_NEW_ENV {
+ int argc = 0;
+ char** argv = 0;
+ orb_ = CORBA::ORB_init (argc, argv ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var
+ root_poa = resolve_init<PortableServer::POA>(orb_.in(), "RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // create POAManager
+ mgr_ = root_poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ mgr_->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::IdUniquenessPolicy_var id_uniqueness_policy =
+ root_poa->create_id_uniqueness_policy(PortableServer::MULTIPLE_ID
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK
+
+ TAO::Utils::PolicyList_Destroyer policy_list(3);
+ policy_list.length(1);
+ policy_list[0] = PortableServer::IdUniquenessPolicy::_duplicate(
+ id_uniqueness_policy.in()
+ );
+ poa_ = create_persistent_poa(root_poa, mgr_, "AMI_Update", policy_list
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ id_uniqueness_policy->destroy();
+
+ running_ = true;
+ while (running_) {
+ if (orb_->work_pending())
+ orb_->perform_work();
+ }
+ orb_->destroy();
+ }
+ ACE_CATCHANY {
+ ACE_PRINT_EXCEPTION(ex, "AMI_Primary_Replication_Strategy::svc");
+ running_ = false;
+ return -1;
+ }
+ ACE_ENDTRY;
+ running_ = false;
+ return 0;
+}
+
+void
+AMI_Primary_Replication_Strategy::replicate_request(
+ const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL)
+{
+ ACE_Auto_Event event;
+ Update_Manager* manager;
+ bool success;
+
+ FTRT::TransactionDepth transaction_depth =
+ Request_Context_Repository().get_transaction_depth();
+
+ const FtRtecEventChannelAdmin::EventChannelList& backups =
+ GroupInfoPublisher::instance()->backups();
+
+ size_t num_backups = backups.length();
+
+ if ((size_t)transaction_depth > num_backups)
+ ACE_THROW(FTRT::TransactionDepthTooHigh());
+
+ ACE_NEW_THROW_EX(manager,
+ Update_Manager(event, backups.length(), transaction_depth-1, success),
+ CORBA::NO_MEMORY());
+
+
+ Request_Context_Repository().set_transaction_depth(0);
+ for (size_t i = 0; i < num_backups; ++i) {
+ ACE_TRY_NEW_ENV {
+ PortableServer::ObjectId oid;
+ FTRT::AMI_UpdateableHandler_ptr handler = handler_.activate(manager, i, oid
+ ACE_ENV_ARG_PARAMETER);
+
+ ScopeGuard guard = MakeObjGuard(*poa_.in(),
+ &PortableServer::POA::deactivate_object,
+ oid)
+ ACE_TRY_CHECK;
+ FtRtecEventChannelAdmin::EventChannel_ptr obj = backups[i];
+ // send set_update request to all the backup replicas
+
+ obj->sendc_set_update(handler, state
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ guard.Dismiss();
+ }
+ ACE_CATCHANY {
+ ACE_PRINT_EXCEPTION(ex, "AMI_Primary_Replication_Strategy::replicate_request : ");
+ manager->handle_exception(i);
+ }
+ ACE_ENDTRY;
+ }
+ // wait until the first transaction_depth replicas replied.
+ event.wait();
+
+ if (!success) { // replication failed, transaction depth too high
+ for (size_t i =0; i < num_backups; ++i) {
+ ACE_TRY_NEW_ENV {
+ (backups[i]->*rollback)(oid ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHALL {
+ }
+ ACE_ENDTRY;
+ }
+
+ ACE_THROW(FTRT::TransactionDepthTooHigh());
+ }
+
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h
new file mode 100644
index 00000000000..38dd300ad1a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Primary_Replication_Strategy.h
@@ -0,0 +1,51 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file AMI_Primary_Replication_Strategy.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef AMI_PRIMARY_REPLICATION_STRATEGY_H
+#define AMI_PRIMARY_REPLICATION_STRATEGY_H
+
+#include "UpdateableHandler.h"
+#include "Replication_Strategy.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "ace/Task.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class AMI_Primary_Replication_Strategy : public Replication_Strategy
+ , public ACE_Task_Base
+{
+public:
+ AMI_Primary_Replication_Strategy();
+ virtual ~AMI_Primary_Replication_Strategy();
+ virtual int init();
+ virtual void replicate_request(const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL);
+ virtual int acquire_read (void);
+ virtual int acquire_write (void);
+ virtual int release (void);
+ PortableServer::POA_ptr poa() { return poa_.in(); }
+ CORBA::ORB_ptr orb() { return orb_.in();}
+private:
+ virtual int svc (void);
+ CORBA::ORB_var orb_;
+ PortableServer::POA_var poa_;
+ PortableServer::POAManager_var mgr_;
+ bool running_;
+ ACE_RW_Thread_Mutex mutex_;
+ UpdateableHandler handler_;
+};
+
+#endif // AMI_PRIMARY_REPLICATION_STRATEGY_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp
new file mode 100644
index 00000000000..b024636d962
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.cpp
@@ -0,0 +1,52 @@
+// $Id$
+
+#include "AMI_Replication_Strategy.h"
+#include "AMI_Primary_Replication_Strategy.h"
+
+ACE_RCSID (EventChannel,
+ AMI_Replication_Strategy,
+ "$Id$")
+
+AMI_Replication_Strategy::AMI_Replication_Strategy()
+{
+}
+
+void
+AMI_Replication_Strategy::replicate_request(
+ const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL)
+{
+ ACE_UNUSED_ARG(state);
+ ACE_UNUSED_ARG(rollback);
+ ACE_UNUSED_ARG(oid);
+}
+
+
+Replication_Strategy*
+AMI_Replication_Strategy::make_primary_strategy()
+{
+ AMI_Primary_Replication_Strategy* result;
+ ACE_NEW_RETURN(result, AMI_Primary_Replication_Strategy, 0);
+ auto_ptr<AMI_Primary_Replication_Strategy> holder(result);
+ if (result->activate() == 0)
+ return holder.release();
+ return 0;
+}
+
+int AMI_Replication_Strategy::acquire_read (void)
+{
+ return 0;
+}
+
+int AMI_Replication_Strategy::acquire_write (void)
+{
+ return 0;
+}
+
+int AMI_Replication_Strategy::release (void)
+{
+ return 0;
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h
new file mode 100644
index 00000000000..da132b47708
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/AMI_Replication_Strategy.h
@@ -0,0 +1,43 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file AMI_Replication_Strategy.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef AMI_REPLICATION_STRATEGY_H
+#define AMI_REPLICATION_STRATEGY_H
+
+#include "ace/Task.h"
+#include "tao/PortableServer/PortableServerC.h"
+#include "orbsvcs/FTRT_GroupManagerC.h"
+#include "Replication_Strategy.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class AMI_Replication_Strategy: public Replication_Strategy
+{
+public:
+ AMI_Replication_Strategy();
+ virtual void replicate_request(
+ const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL);
+ virtual Replication_Strategy* make_primary_strategy();
+
+ virtual int acquire_read (void);
+ virtual int acquire_write (void);
+ virtual int release (void);
+
+};
+
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp
new file mode 100644
index 00000000000..edc5424edbc
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.cpp
@@ -0,0 +1,100 @@
+// $Id$
+
+#include "Basic_Replication_Strategy.h"
+#include "GroupInfoPublisher.h"
+#include "FTEC_Event_Channel.h"
+#include "Request_Context_Repository.h"
+
+ACE_RCSID (EventChannel,
+ Basic_Replication_Strategy,
+ "$Id$")
+
+Basic_Replication_Strategy::Basic_Replication_Strategy()
+: sequence_num_(0)
+{
+}
+
+void
+Basic_Replication_Strategy::check_validity(ACE_ENV_SINGLE_ARG_DECL)
+{
+ FTRT::SequenceNumber seq_no = Request_Context_Repository().get_sequence_number();
+ ACE_DEBUG((LM_DEBUG, "check_validity : sequence no = %d\n", sequence_num_));
+
+ if (this->sequence_num_ == 0) {
+ // this is the first set_update received from the primary
+ // sync the sequence number with the primary
+ this->sequence_num_ = seq_no;
+ }
+ else if (seq_no != this->sequence_num_+1) {
+ // out of sync, we missed some set_update() request already
+ // throw exception
+ // client_interceptor_->sequence_num_--;
+ FTRT::OutOfSequence exception;
+ exception.current = this->sequence_num_;
+ ACE_THROW(FTRT::OutOfSequence(exception));
+ }
+ else
+ this->sequence_num_++;
+}
+
+
+void
+Basic_Replication_Strategy::replicate_request(
+ const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL)
+{
+ ACE_UNUSED_ARG(rollback);
+ ACE_UNUSED_ARG(oid);
+
+ FTRT::TransactionDepth transaction_depth =
+ Request_Context_Repository().get_transaction_depth();
+
+ GroupInfoPublisherBase * info_publisher = GroupInfoPublisher::instance();
+ FtRtecEventChannelAdmin::EventChannel_var successor = info_publisher->successor();
+ if (!CORBA::is_nil(successor.in())) {
+ if (info_publisher->is_primary())
+ this->sequence_num_++;
+
+ ACE_DEBUG((LM_DEBUG, "replicate_request : sequence no = %d\n", sequence_num_));
+ Request_Context_Repository().set_sequence_number(sequence_num_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ Request_Context_Repository().set_transaction_depth(transaction_depth-1);
+
+ if (transaction_depth > 1) {
+ successor->set_update(state
+ ACE_ENV_ARG_PARAMETER);
+ }
+ else {
+ ACE_TRY {
+ successor->oneway_set_update(state
+ ACE_ENV_ARG_PARAMETER);
+ }
+ ACE_CATCHANY {
+ }
+ ACE_ENDTRY;
+ }
+ }
+ else if (transaction_depth > 1)
+ ACE_THROW(FTRT::TransactionDepthTooHigh());
+}
+
+
+int Basic_Replication_Strategy::acquire_read (void)
+{
+ return mutex_.acquire_read();
+}
+
+int Basic_Replication_Strategy::acquire_write (void)
+{
+ return mutex_.acquire_write();
+}
+
+int Basic_Replication_Strategy::release (void)
+{
+ return mutex_.release();
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h
new file mode 100644
index 00000000000..282f4b97d56
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Basic_Replication_Strategy.h
@@ -0,0 +1,43 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Basic_Replication_Strategy.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef BASIC_REPLICATION_STRATEGY_H
+#define BASIC_REPLICATION_STRATEGY_H
+#include "Replication_Strategy.h"
+#include "ace/Synch.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class Basic_Replication_Strategy : public Replication_Strategy
+{
+public:
+ Basic_Replication_Strategy();
+
+ virtual void check_validity(ACE_ENV_SINGLE_ARG_DECL);
+
+ virtual void replicate_request(
+ const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL);
+
+ virtual int acquire_read (void);
+ virtual int acquire_write (void);
+ virtual int release (void);
+
+private:
+ FTRT::SequenceNumber sequence_num_;
+ ACE_Thread_Mutex mutex_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp
new file mode 100644
index 00000000000..71c6ee1169e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.cpp
@@ -0,0 +1,93 @@
+// $Id$
+
+template <ACE_PEER_STREAM_1>
+int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::open (void * acceptor)
+{
+
+ ACE_TRACE("ConnectionAcceptHandler::open\n");
+ ACE_INET_Addr addr;
+
+ if (this->peer ().get_remote_addr (addr) == -1)
+ return -1;
+
+ reactor_ = static_cast<ACE_Service_Object*>(acceptor)->reactor();
+
+ if (reactor_->register_handler (this,
+ ACE_Event_Handler::READ_MASK) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) can't register with reactor\n"),
+ -1);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) connected with %s\n",
+ addr.get_host_name ()));
+
+ return 0;
+}
+
+template <ACE_PEER_STREAM_1>
+void ConnectionAcceptHandler<ACE_PEER_STREAM_2>::destroy (void)
+{
+ // Remove ourselves from the reactor
+ reactor_->remove_handler
+ (this,
+ ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL);
+
+ // Shut down the connection to the client.
+ this->peer ().close ();
+
+ // Free our memory.
+ delete this;
+}
+
+// If somebody doesn't like us, they will close() us. Actually, if
+// our open() method returns -1, the Acceptor<> will invoke close()
+// on us for cleanup.
+template <ACE_PEER_STREAM_1>
+int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::close (u_long flags)
+{
+ ACE_UNUSED_ARG (flags);
+
+ this->destroy ();
+ return 0;
+}
+
+
+template <ACE_PEER_STREAM_1>
+int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::handle_input (ACE_HANDLE)
+{
+ char buf[8];
+ if (this->peer().recv(buf, sizeof(buf)))
+ return -1;
+ return 0;
+}
+
+// Clean ourselves up when handle_input() (or handle_timer()) returns -1
+
+template <ACE_PEER_STREAM_1>
+int ConnectionAcceptHandler<ACE_PEER_STREAM_2>::handle_close (ACE_HANDLE,
+ ACE_Reactor_Mask)
+{
+ this->destroy ();
+ return 0;
+}
+
+
+template <ACE_PEER_STREAM_1>
+int ConnectionDetectHandler<ACE_PEER_STREAM_2>::handle_close (ACE_HANDLE,
+ ACE_Reactor_Mask)
+{
+ ACE_TRACE("ConnectionDetectHandler::handle_close\n");
+ close();
+ return 0;
+}
+
+template <ACE_PEER_STREAM_1>
+int ConnectionDetectHandler<ACE_PEER_STREAM_2>::close (u_long )
+{
+ if (listener_)
+ listener_->connection_closed();
+ delete this;
+ return 0;
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h
new file mode 100644
index 00000000000..580cfe57a94
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ConnectionHandler_T.h
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ConnectionAcceptHandler.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef CONNECTIONACCEPTHANDLER_H
+#define CONNECTIONACCEPTHANDLER_H
+
+#include "ace/Event_Handler.h"
+#include "ace/Svc_Handler.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+template <ACE_PEER_STREAM_1>
+class ConnectionAcceptHandler : public ACE_Svc_Handler <ACE_PEER_STREAM_2, ACE_NULL_SYNCH>
+{
+public:
+ virtual int open (void *);
+ virtual void destroy (void);
+ virtual int close (u_long flags = 0);
+protected:
+
+ virtual int handle_input (ACE_HANDLE);
+ virtual int handle_close (ACE_HANDLE,
+ ACE_Reactor_Mask);
+ ~ConnectionAcceptHandler(){}
+private:
+ ACE_Reactor* reactor_;
+};
+
+class TAO_FTEC_Fault_Listener;
+
+template <ACE_PEER_STREAM_1>
+class ConnectionDetectHandler : public ACE_Svc_Handler <ACE_PEER_STREAM_2, ACE_NULL_SYNCH>
+{
+public:
+ ConnectionDetectHandler(TAO_FTEC_Fault_Listener* listener = NULL)
+ : listener_(listener){}
+
+ virtual int close (u_long flags = 0);
+
+ virtual int handle_close (ACE_HANDLE,
+ ACE_Reactor_Mask);
+private:
+ TAO_FTEC_Fault_Listener* listener_;
+};
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "ConnectionHandler_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("ConnectionHandler_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp
new file mode 100644
index 00000000000..f90a2287765
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.cpp
@@ -0,0 +1,118 @@
+// $Id$
+
+#include "Dynamic_Bitset.h"
+#include <assert.h>
+#include <algorithm>
+
+
+inline unsigned ceil(unsigned numerator, unsigned denominator)
+{
+ return numerator/denominator+ (numerator%denominator ? 1 : 0);
+}
+
+Dynamic_Bitset::Dynamic_Bitset(Dynamic_Bitset::size_type size)
+: buffer_(new block[buffer_size_])
+, buffer_size_(ceil(size,BITS_PER_BLOCK))
+, bit_size_(size)
+{
+ memset(buffer_, 0, buffer_size_*BYTES_PER_BLOCK);
+}
+
+
+Dynamic_Bitset& Dynamic_Bitset::operator = (const Dynamic_Bitset& other)
+{
+ Dynamic_Bitset temp(other);
+ // swap buffer
+ block* tmp_blk = temp.buffer_;
+ temp.buffer_ = this->buffer_;
+ this->buffer_= tmp_blk;
+
+ this->buffer_size_ = other.buffer_size_;
+ this->bit_size_ = other.bit_size_;
+ return *this;
+}
+
+Dynamic_Bitset& Dynamic_Bitset::operator &=(const Dynamic_Bitset& other)
+{
+ assert(other.bit_size_ == this->bit_size_);
+ size_type len = ceil(bit_size_,BITS_PER_BLOCK);
+ for (size_type i = 0; i < len; ++i)
+ buffer_[i] &= other.buffer_[i];
+ return *this;
+}
+
+bool Dynamic_Bitset::test(Dynamic_Bitset::size_type bit) const
+{
+ size_type block_pos = bit/BITS_PER_BLOCK;
+ size_type bit_pos = bit%BITS_PER_BLOCK;
+ block mask = 1 << bit_pos;
+ return (buffer_[block_pos] & mask) !=0;
+}
+
+void Dynamic_Bitset::set(Dynamic_Bitset::size_type bit, bool val)
+{
+ size_type block_pos = bit/BITS_PER_BLOCK;
+ size_type bit_pos = bit%BITS_PER_BLOCK;
+ block mask = 1 << bit_pos;
+ if (val == false)
+ mask ^= static_cast<block>(-1);
+ buffer_[block_pos] |= mask;
+}
+
+void Dynamic_Bitset::flip()
+{
+ size_type len = ceil(bit_size_,BITS_PER_BLOCK);
+ block mask = static_cast<block>(-1);
+ for (size_type i = 0; i < len; ++i)
+ buffer_[i] ^= mask;
+}
+
+void Dynamic_Bitset::resize(Dynamic_Bitset::size_type num_bits, bool value)
+{
+ size_type len = ceil(num_bits, BITS_PER_BLOCK);
+ if (len > this->buffer_size_) {
+ Dynamic_Bitset tmp(num_bits);
+ memcpy(tmp.buffer_, this->buffer_, this->buffer_size_*BYTES_PER_BLOCK);
+ block mask = static_cast<block>(-1);
+
+ size_type block_pos = this->bit_size_/BITS_PER_BLOCK;
+ size_type bit_pos = this->bit_size_%BITS_PER_BLOCK;
+
+ if (value) {
+ mask <<= bit_pos;
+ tmp.buffer_[block_pos] |= mask;
+ }
+ else {
+ mask >>= (BITS_PER_BLOCK-bit_pos);
+ tmp.buffer_[block_pos] &= mask;
+ }
+
+
+ for (size_type i = block_pos +1; i < len; ++i) {
+ mask = value ? static_cast<block>(-1) : 0;
+ tmp.buffer_[i] = mask;
+ }
+
+ std::swap(tmp.buffer_, this->buffer_);
+ this->buffer_size_ = tmp.buffer_size_;
+ this->bit_size_ = tmp.bit_size_;
+ }
+ else
+ bit_size_ = num_bits;
+}
+
+bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs)
+{
+ Dynamic_Bitset::size_type bit_size = lhs.size();
+ if (bit_size != rhs.size())
+ return false;
+ Dynamic_Bitset::size_type block_pos = bit_size/Dynamic_Bitset::BITS_PER_BLOCK;
+ Dynamic_Bitset::size_type bit_pos = bit_size%Dynamic_Bitset::BITS_PER_BLOCK;
+ Dynamic_Bitset::size_type i;
+ for (i = 0; i < block_pos; ++i)
+ if (lhs.buffer_[i] != rhs.buffer_[i])
+ return false;
+ Dynamic_Bitset::block mask = static_cast<Dynamic_Bitset::block>(-1);
+ mask >>= (Dynamic_Bitset::BITS_PER_BLOCK-bit_pos);
+ return ((lhs.buffer_[i] ^ rhs.buffer_[i]) & mask ) == 0;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h
new file mode 100644
index 00000000000..cc7a0410df6
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.h
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Bitset.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef DYNAMIC_BITSET_H
+#define DYNAMIC_BITSET_H
+
+#include <memory.h>
+
+/**
+ *
+ */
+
+class Dynamic_Bitset
+{
+ typedef unsigned block;
+ typedef unsigned size_type;
+ enum {
+ BYTES_PER_BLOCK = sizeof(block),
+ BITS_PER_BLOCK = sizeof(block)*8
+ };
+public:
+ class reference {
+ public:
+ reference(Dynamic_Bitset* bitset, size_type bit);
+ reference operator = (bool val);
+ operator bool () const;
+ private:
+ Dynamic_Bitset* bitset_;
+ size_type bit_;
+ };
+
+ Dynamic_Bitset(size_type size=0);
+ ~Dynamic_Bitset();
+ Dynamic_Bitset(const Dynamic_Bitset& other);
+ Dynamic_Bitset& operator = (const Dynamic_Bitset& other);
+ Dynamic_Bitset& operator &=(const Dynamic_Bitset& other);
+
+ reference operator[](size_type bit);
+
+ size_type size() const;
+ bool test(size_type bit) const;
+
+ void set(size_type bit, bool val = true);
+ void flip();
+ void resize(size_type num_bits, bool value = false);
+ friend bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs);
+private:
+ block* buffer_;
+ size_type buffer_size_;
+ size_type bit_size_;
+};
+
+bool operator == (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs);
+
+inline Dynamic_Bitset operator & (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs)
+{
+ Dynamic_Bitset tmp(lhs);
+ tmp &= rhs;
+ return tmp;
+}
+
+
+
+inline Dynamic_Bitset::reference::reference(Dynamic_Bitset* bitset, size_type bit)
+: bitset_(bitset), bit_(bit)
+{
+}
+
+inline Dynamic_Bitset::reference Dynamic_Bitset::reference::operator = (bool val)
+{
+ bitset_->set(bit_, val);
+ return *this;
+}
+
+inline Dynamic_Bitset::reference::operator bool () const
+{
+ return bitset_->test(bit_);
+}
+
+
+
+inline Dynamic_Bitset::~Dynamic_Bitset()
+{
+ delete[] buffer_;
+}
+
+inline Dynamic_Bitset::Dynamic_Bitset(const Dynamic_Bitset& other)
+: buffer_(new block[other.buffer_size_])
+, buffer_size_(other.buffer_size_)
+, bit_size_(other.bit_size_)
+{
+ memcpy(buffer_, other.buffer_, buffer_size_*BYTES_PER_BLOCK);
+}
+
+
+
+
+inline Dynamic_Bitset::size_type Dynamic_Bitset::size() const
+{
+ return bit_size_;
+}
+
+inline Dynamic_Bitset::reference Dynamic_Bitset::operator[](size_type bit)
+{
+ return Dynamic_Bitset::reference(this, bit);
+}
+
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp
new file mode 100644
index 00000000000..b378fb7d71c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.cpp
@@ -0,0 +1,8 @@
+// $Id$
+
+#include "FTEC_Become_Primary_Listener.h"
+
+
+TAO_FTEC_Become_Primary_Listener::~TAO_FTEC_Become_Primary_Listener()
+{
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h
new file mode 100644
index 00000000000..87f4f8cb889
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Become_Primary_Listener.h
@@ -0,0 +1,25 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Become_Primary_Listener.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_BECOME_PRIMARY_LISTENER_H
+#define TAO_FTEC_BECOME_PRIMARY_LISTENER_H
+
+#include "ftrtec_export.h"
+
+class TAO_FTRTEC_Export TAO_FTEC_Become_Primary_Listener
+{
+public:
+ virtual ~TAO_FTEC_Become_Primary_Listener();
+ virtual void become_primary()=0;
+};
+
+#endif // TAO_FTEC_BECOME_PRIMARY_LISTENER_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp
new file mode 100644
index 00000000000..c601355e0ed
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.cpp
@@ -0,0 +1,47 @@
+// $Id$
+
+#include "orbsvcs/Event/EC_ProxyConsumer.h"
+#include "orbsvcs/Event/EC_Event_Channel_Base.h"
+#include "FTEC_ConsumerAdmin.h"
+#include "FTEC_ProxySupplier.h"
+#include "ProxySupplierStateWorker.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_ConsumerAdmin,
+ "$Id$")
+
+const FtRtecEventChannelAdmin::OperationType
+TAO_FTEC_ConsumerAdmin::OBTAIN_ID = FtRtecEventChannelAdmin::OBTAIN_PUSH_SUPPLIER;
+
+
+TAO_FTEC_ConsumerAdmin::TAO_FTEC_ConsumerAdmin (TAO_EC_Event_Channel_Base *ec)
+ : TAO_EC_ConsumerAdmin (ec)
+ , FT_Aspect(this, this->event_channel_->consumer_poa ())
+{
+}
+
+TAO_FTEC_ConsumerAdmin::~TAO_FTEC_ConsumerAdmin (void)
+{
+}
+
+
+
+RtecEventChannelAdmin::ProxyPushSupplier_ptr
+TAO_FTEC_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_DEBUG((LM_DEBUG,"obtain_push_supplier\n" ));
+ return obtain_proxy(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_ConsumerAdmin::disconnect(RtecEventChannelAdmin::ProxyPushSupplier_ptr obj)
+{
+ ACE_TRY_NEW_ENV {
+ obj->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ ACE_CATCHALL {
+ }
+ ACE_ENDTRY;
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h
new file mode 100644
index 00000000000..25da063586a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ConsumerAdmin.h
@@ -0,0 +1,69 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_ConsumerAdmin.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef TAO_FTEC_CONSUMERADMIN_H
+#define TAO_FTEC_CONSUMERADMIN_H
+#include "ace/pre.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "orbsvcs/Event/EC_ConsumerAdmin.h"
+#include "FT_ProxyAdmin_T.h"
+#include "ProxySupplierStateWorker.h"
+
+namespace FtRtecEventChannelAdmin {
+ struct ConsumerAdminState;
+};
+
+
+class TAO_FTEC_Event_Channel_Impl;
+class TAO_FTEC_ProxyPushSupplier;
+/**
+ * @class TAO_FTEC_ConsumerAdmin
+ *
+ * @brief Implements the ConsumerAdmin interface, i.e. the factory for
+ * TAO_FTEC_ProxyPushSupplier objects.
+ *
+ */
+class TAO_FTEC_ConsumerAdmin
+ : public TAO_EC_ConsumerAdmin
+ , public FT_ProxyAdmin<TAO_FTEC_ConsumerAdmin,
+ TAO_FTEC_ProxyPushSupplier,
+ RtecEventChannelAdmin::ProxyPushSupplier,
+ FtRtecEventChannelAdmin::ConsumerAdminState>
+{
+public:
+ static const FtRtecEventChannelAdmin::OperationType OBTAIN_ID ;
+
+ typedef FT_ProxyAdmin<TAO_FTEC_ConsumerAdmin,
+ TAO_FTEC_ProxyPushSupplier,
+ RtecEventChannelAdmin::ProxyPushSupplier,
+ FtRtecEventChannelAdmin::ConsumerAdminState>
+ FT_Aspect;
+
+ typedef ProxySupplierStateWorker StateWorker;
+ TAO_FTEC_ConsumerAdmin (TAO_EC_Event_Channel_Base* event_channel);
+
+ /// destructor...
+ virtual ~TAO_FTEC_ConsumerAdmin (void);
+
+ // = The RtecEventChannelAdmin::ConsumerAdmin methods...
+ virtual RtecEventChannelAdmin::ProxyPushSupplier_ptr
+ obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void disconnect(RtecEventChannelAdmin::ProxyPushSupplier_ptr obj);
+};
+
+#include "ace/post.h"
+#endif /* TAO_EC_CONSUMERADMIN_H */
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp
new file mode 100644
index 00000000000..f10dcae7493
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.cpp
@@ -0,0 +1,427 @@
+// $Id$
+
+#include "ace/Dynamic_Service.h"
+#include "FTEC_Event_Channel.h"
+#include "FTEC_Event_Channel_Impl.h"
+#include "../Utils/activate_with_id.h"
+#include "../Utils/resolve_init.h"
+#include "../Utils/UUID.h"
+#include "Fault_Detector_Loader.h"
+#include "Fault_Detector.h"
+#include "Request_Context_Repository.h"
+#include "Replication_Service.h"
+#include "Identification_Service.h"
+#include "create_persistent_poa.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+#include "GroupInfoPublisher.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_Event_Channel,
+ "$Id$")
+
+TAO_FTEC_Event_Channel::TAO_FTEC_Event_Channel(CORBA::ORB_var orb,
+ PortableServer::POA_var poa)
+: orb_(orb)
+, poa_(poa)
+, ec_impl_(NULL)
+{
+}
+
+TAO_FTEC_Event_Channel::~TAO_FTEC_Event_Channel()
+{
+ delete ec_impl_;
+}
+
+
+void setup_object_group(TAO_FTEC_Event_Channel* es,
+ CosNaming::NamingContext_ptr naming_context,
+ TAO_FTEC_Event_Channel::MEMBERSHIP membership,
+ FtRtecEventChannelAdmin::EventChannel_ptr ec
+ ACE_ENV_ARG_DECL)
+{
+ if (membership != TAO_FTEC_Event_Channel::NONE) {// register to naming service
+ FTRT::ManagerInfoList member_list;
+ member_list.length(1);
+ member_list[0].the_location = Fault_Detector::instance()->my_location();
+ member_list[0].ior = FTRT::ObjectGroupManager::_duplicate(ec);
+
+ if (membership == TAO_FTEC_Event_Channel::PRIMARY)
+ es->create_group(member_list, 0
+ ACE_ENV_ARG_PARAMETER);
+
+ else { // BACKUP
+ FtRtecEventChannelAdmin::EventChannel_var primary =
+ resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context,
+ FTRTEC::Identification_Service::instance()->name()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_DEBUG((LM_DEBUG, "Got Primary address from Naming Service\n"));
+
+ primary->join_group(member_list[0] ACE_ENV_ARG_PARAMETER);
+ }
+ ACE_CHECK;
+ }
+}
+
+
+FtRtecEventChannelAdmin::EventChannel_ptr
+TAO_FTEC_Event_Channel::activate(TAO_FTEC_Event_Channel::MEMBERSHIP membership
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+{
+ FTRTEC::Fault_Detector_Loader* detector_loader =
+ ACE_Dynamic_Service<FTRTEC::Fault_Detector_Loader>::instance("FTRTEC_Fault_Detector");
+
+ detector_loader->init(0, 0);
+
+ if (FTRTEC::Identification_Service::instance() == 0)
+ ACE_ERROR_RETURN((LM_ERROR, "No Identification\n"), 0);
+
+ // initialize naming_contex
+ CosNaming::NamingContext_var naming_context
+ = resolve_init<CosNaming::NamingContext>(orb_.in(), "NameService"
+ ACE_ENV_ARG_PARAMETER);
+ // initialize group info publisher
+ GroupInfoPublisher::instance()->set_naming_context(naming_context);
+
+ if (FTRTEC::Replication_Service::instance()->init(0,0) == -1)
+ return 0;
+
+ GroupInfoPublisher::instance()->subscribe(FTRTEC::Replication_Service::instance());
+
+ Request_Context_Repository().init(orb_.in());
+
+ // get POAManager
+ PortableServer::POAManager_var mgr = poa_->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ TAO::Utils::PolicyList_Destroyer policy_list(2);
+
+ persistent_poa_ =
+ create_persistent_poa(poa_, mgr, "FTEC_Persistant_POA", policy_list ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ // Activate the Event channel implementation
+
+ TAO_EC_Event_Channel_Attributes attr (persistent_poa_.in (),
+ persistent_poa_.in ());
+
+
+ TAO_FTEC_Event_Channel_Impl* ec;
+ ACE_NEW_THROW_EX (ec,
+ TAO_FTEC_Event_Channel_Impl (attr),
+ CORBA::NO_MEMORY());
+
+ this->ec_impl_ = ec;
+
+ const PortableServer::ObjectId& object_id
+ = FTRTEC::Identification_Service::instance()->object_id();
+
+ PortableServer::ObjectId consumer_admin_object_id(object_id);
+ consumer_admin_object_id[9]++;
+
+ PortableServer::ObjectId supplier_admin_object_id(consumer_admin_object_id);
+ supplier_admin_object_id[9]++;
+
+ ec->activate(orb_,
+ supplier_admin_object_id,
+ consumer_admin_object_id
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ FtRtecEventChannelAdmin::EventChannel_var result;
+ activate_object_with_id(result.out(), persistent_poa_, this, object_id
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+
+ setup_object_group(this,
+ naming_context.in(),
+ membership,
+ result.in()
+ ACE_ENV_ARG_PARAMETER);
+ return result._retn();
+}
+
+
+void TAO_FTEC_Event_Channel::set_listener(TAO_FTEC_Become_Primary_Listener* listener)
+{
+ GroupInfoPublisher::instance()->subscribe(listener);
+}
+
+void TAO_FTEC_Event_Channel::set_update (
+ const FTRT::State & s
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FTRT::InvalidUpdate
+ , FTRT::OutOfSequence
+ ))
+{
+ ec_impl_->set_update(s ACE_ENV_ARG_PARAMETER);
+}
+
+void TAO_FTEC_Event_Channel::oneway_set_update (
+ const FTRT::State & s
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->set_update(s ACE_ENV_ARG_PARAMETER);
+}
+
+
+RtecEventChannelAdmin::ConsumerAdmin_ptr
+TAO_FTEC_Event_Channel::for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ec_impl_->for_consumers(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+RtecEventChannelAdmin::SupplierAdmin_ptr
+TAO_FTEC_Event_Channel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ec_impl_->for_suppliers(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+
+void
+TAO_FTEC_Event_Channel::set_state (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidState))
+{
+ ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Event_Channel::set_state\n"));
+ ec_impl_->set_state(s ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::destroy (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (Fault_Detector::instance())
+ Fault_Detector::instance()->stop();
+
+ ec_impl_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ this->orb_->shutdown ();
+}
+
+RtecEventChannelAdmin::Observer_Handle
+TAO_FTEC_Event_Channel::append_observer (RtecEventChannelAdmin::Observer_ptr observer
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER))
+{
+ /// we have yet to implement the replication of observers
+ /// throw an exception for the moment
+ ACE_THROW(RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER());
+ ACE_CHECK;
+
+ return this->ec_impl_->append_observer (observer ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::remove_observer (RtecEventChannelAdmin::Observer_Handle handle
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER))
+{
+ /// we have yet to implement the replication of observers
+ /// throw an exception for the moment
+ ACE_THROW(RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER());
+ ACE_CHECK;
+
+ ec_impl_->remove_observer (handle ACE_ENV_ARG_PARAMETER);
+}
+
+
+
+CORBA::Boolean
+TAO_FTEC_Event_Channel::start (
+ FTRT::FaultListener_ptr listener,
+ FTRT::Location_out location
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ return ec_impl_->start(listener, location);
+}
+
+void
+TAO_FTEC_Event_Channel::create_group (
+ const FTRT::ManagerInfoList & info_list,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FTRT::PredecessorUnreachable
+ ))
+{
+ ec_impl_->create_group(info_list, object_group_ref_version ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::join_group (
+ const FTRT::ManagerInfo & info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->join_group(info ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::add_member (
+ const FTRT::ManagerInfo & info,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->add_member(info, object_group_ref_version ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::remove_member (
+ const FTRT::Location & crashed_location,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->remove_member(crashed_location,
+ object_group_ref_version
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::replica_crashed (
+ const FTRT::Location & location
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->replica_crashed(location ACE_ENV_ARG_PARAMETER);
+}
+
+
+ /// EventChannelFacade Interface
+
+::FtRtecEventChannelAdmin::ObjectId *
+TAO_FTEC_Event_Channel::connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , RtecEventChannelAdmin::TypeError
+ ))
+{
+ return ec_impl_->connect_push_consumer(push_consumer, qos
+ ACE_ENV_ARG_PARAMETER);
+}
+
+
+::FtRtecEventChannelAdmin::ObjectId *
+TAO_FTEC_Event_Channel::connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ return ec_impl_->connect_push_supplier(push_supplier, qos
+ ACE_ENV_ARG_PARAMETER);
+
+}
+
+void
+TAO_FTEC_Event_Channel::disconnect_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->disconnect_push_supplier(oid
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::disconnect_push_consumer (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ec_impl_->disconnect_push_consumer(oid
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::suspend_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FtRtecEventComm::InvalidObjectID
+ ))
+{
+ ec_impl_->suspend_push_supplier(oid
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::resume_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FtRtecEventComm::InvalidObjectID
+ ))
+{
+ ec_impl_->resume_push_supplier(oid
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_Event_Channel::push (
+ const FtRtecEventChannelAdmin::ObjectId & oid,
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ , FtRtecEventComm::InvalidObjectID
+ ))
+{
+ ec_impl_->push(oid, data
+ ACE_ENV_ARG_PARAMETER);
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h
new file mode 100644
index 00000000000..52971b9304e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel.h
@@ -0,0 +1,180 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Event_Channel.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FTEC_EVENT_CHANNEL_H
+#define FTEC_EVENT_CHANNEL_H
+
+#include "ftrtec_export.h"
+#include "orbsvcs/FtRtecEventChannelAdminS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Event_Channel_Impl;
+class TAO_FTEC_Become_Primary_Listener;
+
+class TAO_FTRTEC_Export TAO_FTEC_Event_Channel
+ : public POA_FtRtecEventChannelAdmin::EventChannel
+{
+public:
+
+
+ TAO_FTEC_Event_Channel(CORBA::ORB_var orb,
+ PortableServer::POA_var poa);
+
+ ~TAO_FTEC_Event_Channel();
+
+ enum MEMBERSHIP {
+ NONE,
+ PRIMARY,
+ BACKUP
+ };
+
+ /**
+ * Activates the FT Event Channel.
+ *
+ * If the FT EC is activated as a primary, the EC will register itself to the NameService.
+ * If it is activated as a backup, it will try to look up the primary from the NameService
+ * and then join the object group.
+ *
+ * @param membership Specify the role the activated event channel in an object group.
+ *
+ */
+ FtRtecEventChannelAdmin::EventChannel_ptr
+ activate(MEMBERSHIP membership ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Registers a listener to accept the notication when this object
+ * becomes the primary of the object group.
+ */
+ void set_listener(TAO_FTEC_Become_Primary_Listener* listener);
+
+
+ /// RtecEventChannelAdmin::EventChannel Interface
+
+ virtual RtecEventChannelAdmin::ConsumerAdmin_ptr
+ for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::SupplierAdmin_ptr
+ for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::Observer_Handle
+ append_observer (RtecEventChannelAdmin::Observer_ptr observer ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER));
+
+ virtual void remove_observer (RtecEventChannelAdmin::Observer_Handle ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER));
+
+ /// EventChannelFacade Interface, used by FTEC gateway
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC (( CORBA::SystemException, RtecEventChannelAdmin::TypeError)) ;
+
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void disconnect_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void disconnect_push_consumer (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void suspend_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID));
+
+ virtual void resume_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID)) ;
+
+ virtual void push (
+ const FtRtecEventChannelAdmin::ObjectId & oid,
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FtRtecEventComm::InvalidObjectID));
+
+ /// FTRT::GroupManager Interfaces
+ /// These are used for inter-replica communications
+
+ void set_state (
+ const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidState));
+
+ virtual void set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate, FTRT::OutOfSequence));
+
+ virtual void oneway_set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ virtual CORBA::Boolean start (
+ FTRT::FaultListener_ptr listener,
+ FTRT::Location_out cur
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void create_group (
+ const FTRT::ManagerInfoList & info_list,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::PredecessorUnreachable)) ;
+
+ virtual void join_group (
+ const FTRT::ManagerInfo & info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void add_member (
+ const FTRT::ManagerInfo & info,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ virtual void remove_member (
+ const FTRT::Location & crashed_location,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void replica_crashed (
+ const FTRT::Location & location
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+
+private:
+ CORBA::ORB_var orb_;
+ PortableServer::POA_var poa_, persistent_poa_;
+ TAO_FTEC_Event_Channel_Impl* ec_impl_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp
new file mode 100644
index 00000000000..6b35312b2aa
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.cpp
@@ -0,0 +1,571 @@
+// $Id$
+
+#include "FTEC_Event_Channel_Impl.h"
+#include "FTEC_Factory.h"
+#include "FTEC_SupplierAdmin.h"
+#include "FTEC_ConsumerAdmin.h"
+#include "FTEC_ProxyConsumer.h"
+#include "FTEC_ProxySupplier.h"
+#include "../Utils/ScopeGuard.h"
+#include "FtEventServiceInterceptor.h"
+#include "FT_ProxyAdmin_Base.h"
+#include "IOGR_Maker.h"
+#include "Replication_Service.h"
+
+ACE_RCSID (EventChannel,
+ FTEC_Event_Channel_Impl,
+ "$Id$")
+
+void obtain_push_supplier(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ec->consumer_admin()->obtain_proxy(op ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void obtain_push_consumer(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ec->supplier_admin()->obtain_proxy(op ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void obtain_push_consumer_and_connect(TAO_FTEC_Event_Channel_Impl* ec,
+ const FtRtecEventChannelAdmin::ObjectId& oid,
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ Request_Context_Repository().set_object_id(oid);
+
+ RtecEventChannelAdmin::ProxyPushConsumer_var consumer =
+ ec->supplier_admin()->obtain(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(0);
+
+ ScopeGuard guard = MakeObjGuard(*ec->supplier_admin(),
+ &TAO_FTEC_SupplierAdmin::disconnect,
+ consumer.in());
+
+ consumer->connect_push_supplier(push_supplier, qos
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ guard.Dismiss();
+}
+
+
+void connect_push_supplier(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ FtRtecEventChannelAdmin::Connect_push_supplier_param& param
+ = op.param.connect_supplier_param();
+
+ TAO_FTEC_ProxyPushConsumer* proxy
+ = ec->find_proxy_push_consumer(op.object_id);
+
+ if (proxy == NULL) {
+ obtain_push_consumer_and_connect(ec,
+ op.object_id,
+ param.push_supplier.in(),
+ param.qos
+ ACE_ENV_ARG_PARAMETER);
+ }
+ else {
+ proxy->connect_push_supplier(param.push_supplier.in(),
+ param.qos
+ ACE_ENV_ARG_PARAMETER);
+ }
+ ACE_CHECK;
+}
+
+void obtain_push_supplier_and_connect(TAO_FTEC_Event_Channel_Impl* ec,
+ const FtRtecEventChannelAdmin::ObjectId& oid,
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ Request_Context_Repository().set_object_id(oid);
+
+ RtecEventChannelAdmin::ProxyPushSupplier_var supplier =
+ ec->consumer_admin()->obtain(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(0);
+
+ ScopeGuard guard = MakeObjGuard(*ec->consumer_admin(),
+ &TAO_FTEC_ConsumerAdmin::disconnect,
+ supplier.in());
+
+ supplier->connect_push_consumer(push_consumer, qos
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ guard.Dismiss();
+}
+
+
+void connect_push_consumer(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ FtRtecEventChannelAdmin::Connect_push_consumer_param& param
+ = op.param.connect_consumer_param();
+
+ TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id);
+
+ if (proxy == NULL){
+ obtain_push_supplier_and_connect(ec,
+ op.object_id,
+ param.push_consumer.in(),
+ param.qos
+ ACE_ENV_ARG_PARAMETER);
+ }
+ else {
+ proxy->connect_push_consumer(param.push_consumer.in(),
+ param.qos
+ ACE_ENV_ARG_PARAMETER);
+ }
+ ACE_CHECK;
+}
+
+void disconnect_push_supplier(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id);
+
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FTRT::InvalidUpdate());
+
+ ACE_CHECK;
+ proxy->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void disconnect_push_consumer(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TAO_FTEC_ProxyPushConsumer* proxy = ec->find_proxy_push_consumer(op.object_id);
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FTRT::InvalidUpdate());
+
+ ACE_CHECK;
+ proxy->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+void suspend_connection (TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id);
+
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FTRT::InvalidUpdate());
+
+ ACE_CHECK;
+ proxy->suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void resume_connection(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var poa= ec->consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = ec->find_proxy_push_supplier(op.object_id);
+
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FTRT::InvalidUpdate());
+
+ ACE_CHECK;
+ proxy->resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+typedef void (*Set_update_fun)(TAO_FTEC_Event_Channel_Impl* ec,
+ FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+Set_update_fun update_table[] = {
+ &obtain_push_supplier,
+ &obtain_push_consumer,
+ &disconnect_push_supplier,
+ &disconnect_push_consumer,
+ &suspend_connection,
+ &resume_connection,
+ &connect_push_supplier,
+ &connect_push_consumer
+};
+
+TAO_FTEC_Event_Channel_Impl::TAO_FTEC_Event_Channel_Impl(
+ const TAO_EC_Event_Channel_Attributes& attributes)
+ : TAO_EC_Event_Channel_Base(attributes, new TAO_FTEC_Basic_Factory, false)
+{
+ this->scheduler_ =
+ CORBA::Object::_duplicate (attributes.scheduler);
+
+ this->create_strategies ();
+
+}
+
+TAO_FTEC_Event_Channel_Impl::~TAO_FTEC_Event_Channel_Impl()
+{
+}
+
+
+TAO_FTEC_Basic_Factory*
+TAO_FTEC_Event_Channel_Impl::factory()
+{
+ return static_cast<TAO_FTEC_Basic_Factory*>(TAO_EC_Event_Channel_Base::factory());
+}
+
+
+/// Start the internal threads (if any), etc.
+/// After this call the EC can be used.
+void
+TAO_FTEC_Event_Channel_Impl::activate (
+ CORBA::ORB_var orb,
+ const PortableServer::ObjectId& supplier_admin_oid,
+ const PortableServer::ObjectId& consumer_admin_oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+
+ iogr_maker_.init(orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ TAO_EC_Event_Channel_Base::activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ supplier_admin()->activate(supplier_admin_oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ consumer_admin()->activate(consumer_admin_oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+
+// = The RtecEventChannelAdmin::EventChannel methods...
+/// The default implementation is:
+/// this->consumer_admin ()->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+RtecEventChannelAdmin::ConsumerAdmin_ptr
+TAO_FTEC_Event_Channel_Impl::for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CORBA::Object_var obj = consumer_admin()->reference(ACE_ENV_SINGLE_ARG_PARAMETER);
+ obj = IOGR_Maker::instance()->forge_iogr(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ return RtecEventChannelAdmin::ConsumerAdmin::_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
+}
+
+
+/// The default implementation is:
+/// this->supplier_admin ()->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
+RtecEventChannelAdmin::SupplierAdmin_ptr
+TAO_FTEC_Event_Channel_Impl::for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CORBA::Object_var obj = supplier_admin()->reference(ACE_ENV_SINGLE_ARG_PARAMETER);
+ obj = IOGR_Maker::instance()->forge_iogr(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ return RtecEventChannelAdmin::SupplierAdmin::_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
+}
+
+
+::FtRtecEventChannelAdmin::ObjectId *
+TAO_FTEC_Event_Channel_Impl::connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ CORBA::Any_var any
+ = Request_Context_Repository().get_cached_result();
+
+ FtRtecEventChannelAdmin::ObjectId *oid;
+
+ if (*any >>= oid) {
+ FtRtecEventChannelAdmin::ObjectId* result;
+ ACE_NEW_THROW_EX(result,
+ FtRtecEventChannelAdmin::ObjectId(*oid),
+ CORBA::NO_MEMORY());
+ return result;
+ }
+
+
+ ACE_NEW_THROW_EX(oid, FtRtecEventChannelAdmin::ObjectId, CORBA::NO_MEMORY());
+
+ FtRtecEventChannelAdmin::ObjectId_var object_id = oid;
+
+ Request_Context_Repository().generate_object_id(*oid);
+
+ obtain_push_supplier_and_connect(this,
+ object_id.in(),
+ push_consumer,
+ qos
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(0);
+
+ return object_id._retn();
+}
+
+
+::FtRtecEventChannelAdmin::ObjectId *
+TAO_FTEC_Event_Channel_Impl::connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ CORBA::Any_var any
+ = Request_Context_Repository().get_cached_result();
+
+ FtRtecEventChannelAdmin::ObjectId *oid;
+
+ if (*any >>= oid) {
+ FtRtecEventChannelAdmin::ObjectId* result;
+ ACE_NEW_THROW_EX(result,
+ FtRtecEventChannelAdmin::ObjectId(*oid),
+ CORBA::NO_MEMORY());
+ return result;
+ }
+
+
+ ACE_NEW_THROW_EX(oid, FtRtecEventChannelAdmin::ObjectId, CORBA::NO_MEMORY());
+ FtRtecEventChannelAdmin::ObjectId_var object_id = oid;
+
+ Request_Context_Repository().generate_object_id(*oid);
+
+ obtain_push_consumer_and_connect(this,
+ object_id.in(),
+ push_supplier,
+ qos
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(0);
+
+ return object_id._retn();
+
+}
+
+void TAO_FTEC_Event_Channel_Impl::disconnect_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid);
+
+ if (proxy == NULL) // proxy not found
+ return;
+
+ ACE_CHECK;
+ proxy->disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void TAO_FTEC_Event_Channel_Impl::disconnect_push_consumer (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ TAO_FTEC_ProxyPushConsumer* proxy = this->find_proxy_push_consumer(oid);
+
+ if (proxy == NULL) // proxy not found
+ return;
+
+ ACE_CHECK;
+ proxy->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void TAO_FTEC_Event_Channel_Impl::suspend_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid);
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FtRtecEventComm::InvalidObjectID());
+
+ ACE_CHECK;
+ proxy->suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+void TAO_FTEC_Event_Channel_Impl::resume_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ TAO_FTEC_ProxyPushSupplier* proxy = this->find_proxy_push_supplier(oid);
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FtRtecEventComm::InvalidObjectID());
+
+ ACE_CHECK;
+ proxy->resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void TAO_FTEC_Event_Channel_Impl::push (
+ const FtRtecEventChannelAdmin::ObjectId & oid,
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ TAO_FTEC_ProxyPushConsumer* proxy = this->find_proxy_push_consumer(oid);
+
+ if (proxy == NULL) // proxy not found
+ ACE_THROW(FtRtecEventComm::InvalidObjectID());
+
+ proxy->push(data ACE_ENV_ARG_PARAMETER);
+}
+
+
+
+
+void TAO_FTEC_Event_Channel_Impl::get_state (
+ FtRtecEventChannelAdmin::EventChannelState & state
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+{
+ FtEventServiceInterceptor::instance()->get_state(state.cached_operation_results);
+ this->supplier_admin()->get_state(state.supplier_admin_state);
+ this->consumer_admin()->get_state(state.consumer_admin_state);
+}
+
+
+
+void TAO_FTEC_Event_Channel_Impl::set_state (const FTRT::State & stat
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+
+{
+ FtRtecEventChannelAdmin::EventChannelState state;
+
+ TAO_InputCDR cdr((const char*)stat.get_buffer(), stat.length());
+ cdr >> state;
+
+ FtEventServiceInterceptor::instance()->set_state(state.cached_operation_results);
+ this->supplier_admin()->set_state(state.supplier_admin_state);
+ this->consumer_admin()->set_state(state.consumer_admin_state);
+}
+
+
+void TAO_FTEC_Event_Channel_Impl::set_update (const FTRT::State & s
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate))
+{
+ FTRTEC::Replication_Service::instance()->check_validity(ACE_ENV_ARG_PARAMETER);
+
+ if (!Request_Context_Repository().is_executed_request()) {
+ TAO_InputCDR cdr((const char*)s.get_buffer(), s.length());
+
+ FtRtecEventChannelAdmin::Operation_var op(new FtRtecEventChannelAdmin::Operation);
+ if (!(cdr >> *op)) {
+ ACE_THROW(FTRT::InvalidUpdate() );
+ }
+
+ (update_table[op->param._d()])(this, *op ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ }
+}
+
+
+TAO_FTEC_ConsumerAdmin* TAO_FTEC_Event_Channel_Impl::consumer_admin (void) const
+{
+ return static_cast<TAO_FTEC_ConsumerAdmin*>(TAO_EC_Event_Channel_Base::consumer_admin());
+}
+
+/// Access the supplier admin implementation, useful for controlling
+/// the activation...
+TAO_FTEC_SupplierAdmin* TAO_FTEC_Event_Channel_Impl::supplier_admin (void) const
+{
+ return static_cast<TAO_FTEC_SupplierAdmin*>(TAO_EC_Event_Channel_Base::supplier_admin());
+}
+
+
+TAO_FTEC_ProxyPushSupplier*
+TAO_FTEC_Event_Channel_Impl::find_proxy_push_supplier(const PortableServer::ObjectId& id)
+{
+ ACE_TRY_NEW_ENV {
+ PortableServer::POA_var poa= consumer_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ PortableServer::Servant servant = poa->id_to_servant(id
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr obj =
+ ACE_reinterpret_cast (
+ POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr,
+ servant->_downcast ("IDL:RtecEventChannelAdmin/ProxyPushSupplier:1.0")
+ );
+
+ return ACE_static_cast(TAO_FTEC_ProxyPushSupplier*, obj);
+ }
+ ACE_CATCHALL {
+ }
+ ACE_ENDTRY;
+ return 0;
+}
+
+TAO_FTEC_ProxyPushConsumer*
+TAO_FTEC_Event_Channel_Impl::find_proxy_push_consumer(const PortableServer::ObjectId& id)
+{
+ ACE_TRY_NEW_ENV {
+ PortableServer::POA_var poa= supplier_poa(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ PortableServer::Servant servant = poa->id_to_servant(id
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr obj =
+ ACE_reinterpret_cast (
+ POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr,
+ servant->_downcast ("IDL:RtecEventChannelAdmin/ProxyPushConsumer:1.0")
+ );
+
+ return ACE_static_cast(TAO_FTEC_ProxyPushConsumer*, obj);
+ }
+ ACE_CATCHALL {
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h
new file mode 100644
index 00000000000..7f23a208cad
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Event_Channel_Impl.h
@@ -0,0 +1,131 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Event_Channel_Impl.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef TAO_FTEC_EVENT_CHANNEL_H
+#define TAO_FTEC_EVENT_CHANNEL_H
+
+#include "ace/Synch_T.h"
+#include "orbsvcs/Event/EC_Event_Channel_Base.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "FTEC_Factory.h"
+#include "FTEC_Group_Manager.h"
+#include "IOGR_Maker.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_ProxyPushSupplier;
+class TAO_FTEC_ProxyPushConsumer;
+class TAO_FTEC_SupplierAdmin;
+class TAO_FTEC_ConsumerAdmin;
+class FT_ProxyAdmin_Base;
+
+class TAO_FTEC_Event_Channel_Impl : public TAO_EC_Event_Channel_Base
+ , public TAO_FTEC_Group_Manager
+{
+public:
+ TAO_FTEC_Event_Channel_Impl(const TAO_EC_Event_Channel_Attributes& attributes);
+
+ ~TAO_FTEC_Event_Channel_Impl();
+
+ /// Start the internal threads (if any), etc.
+ /// After this call the EC can be used.
+ virtual void activate (
+ CORBA::ORB_var orb,
+ const PortableServer::ObjectId& supplier_admin_oid,
+ const PortableServer::ObjectId& consumer_admin_oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+
+ // = The RtecEventChannelAdmin::EventChannel methods...
+ virtual RtecEventChannelAdmin::ConsumerAdmin_ptr
+ for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ virtual RtecEventChannelAdmin::SupplierAdmin_ptr
+ for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void get_state (FtRtecEventChannelAdmin::EventChannelState & s
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void set_state (const FTRT::State & stat ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void set_update (const FTRT::State & s ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException, FTRT::InvalidUpdate));
+
+ /// EventChannelFacade Interface
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+
+ virtual ::FtRtecEventChannelAdmin::ObjectId * connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS & qos
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ virtual void disconnect_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ virtual void disconnect_push_consumer (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ virtual void suspend_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ virtual void resume_push_supplier (
+ const FtRtecEventChannelAdmin::ObjectId & oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ virtual void push (
+ const FtRtecEventChannelAdmin::ObjectId & oid,
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ );
+
+ ////////////////////////////////////////////
+
+ /// Access the consumer admin implementation, useful for controlling
+ /// the activation...
+ TAO_FTEC_ConsumerAdmin* consumer_admin (void) const;
+
+ /// Access the supplier admin implementation, useful for controlling
+ /// the activation...
+ TAO_FTEC_SupplierAdmin* supplier_admin (void) const;
+
+ TAO_FTEC_ProxyPushSupplier* find_proxy_push_supplier(const PortableServer::ObjectId& id);
+ TAO_FTEC_ProxyPushConsumer* find_proxy_push_consumer(const PortableServer::ObjectId& id);
+
+
+ CORBA::Object_var make_iogr(CORBA::Object_ptr obj
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+protected:
+ TAO_FTEC_Basic_Factory* factory();
+private:
+ IOGR_Maker iogr_maker_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp
new file mode 100644
index 00000000000..b46188a9458
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.cpp
@@ -0,0 +1,53 @@
+// $Id$
+#include "orbsvcs/Event/EC_Event_Channel.h"
+#include "FTEC_Event_Channel.h"
+#include "FTEC_Factory.h"
+#include "FTEC_ProxySupplier.h"
+#include "FTEC_ProxyConsumer.h"
+#include "FTEC_SupplierAdmin.h"
+#include "FTEC_ConsumerAdmin.h"
+
+ACE_RCSID (EventChannel,
+ FTEC_Factory,
+ "$Id$")
+
+TAO_FTEC_Basic_Factory::TAO_FTEC_Basic_Factory (void)
+{
+}
+
+TAO_EC_ConsumerAdmin*
+TAO_FTEC_Basic_Factory::create_consumer_admin (TAO_EC_Event_Channel_Base* ec)
+{
+ return new TAO_FTEC_ConsumerAdmin(ec);
+}
+
+TAO_EC_SupplierAdmin*
+TAO_FTEC_Basic_Factory::create_supplier_admin (TAO_EC_Event_Channel_Base* ec)
+{
+ return new TAO_FTEC_SupplierAdmin(ec);
+}
+
+TAO_EC_ProxyPushSupplier*
+TAO_FTEC_Basic_Factory::create_proxy_push_supplier (TAO_EC_Event_Channel_Base* ec)
+{
+ return new TAO_FTEC_ProxyPushSupplier(ec, consumer_validate_connection_);
+}
+
+TAO_EC_ProxyPushConsumer*
+TAO_FTEC_Basic_Factory::create_proxy_push_consumer (TAO_EC_Event_Channel_Base* ec)
+{
+ return new TAO_FTEC_ProxyPushConsumer(ec);
+}
+
+void
+TAO_FTEC_Basic_Factory::destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier* proxy)
+{
+ delete proxy;
+}
+
+void
+TAO_FTEC_Basic_Factory::destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer* proxy)
+{
+ delete proxy;
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h
new file mode 100644
index 00000000000..d253716dba1
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Factory.h
@@ -0,0 +1,44 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Factory.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FTEC_FACTORY_H
+#define FTEC_FACTORY_H
+
+#include "orbsvcs/Event/EC_Default_Factory.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Basic_Factory : public TAO_EC_Default_Factory
+{
+public:
+ /// Constructor
+ TAO_FTEC_Basic_Factory (void);
+ virtual TAO_EC_ConsumerAdmin*
+ create_consumer_admin (TAO_EC_Event_Channel_Base*);
+ virtual TAO_EC_SupplierAdmin*
+ create_supplier_admin (TAO_EC_Event_Channel_Base*);
+
+ virtual TAO_EC_ProxyPushSupplier*
+ create_proxy_push_supplier (TAO_EC_Event_Channel_Base*);
+ virtual void
+ destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier*);
+
+ /// Create and destroy a ProxyPushConsumer
+ virtual TAO_EC_ProxyPushConsumer*
+ create_proxy_push_consumer (TAO_EC_Event_Channel_Base*);
+ virtual void
+ destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer*);
+};
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h
new file mode 100644
index 00000000000..a2106a68aa3
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Fault_Listener.h
@@ -0,0 +1,24 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Fault_Listener.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_FAULT_LISTENER_H
+#define TAO_FTEC_FAULT_LISTENER_H
+
+
+class TAO_FTEC_Fault_Listener
+{
+public:
+ virtual ~TAO_FTEC_Fault_Listener(){};
+ virtual void connection_closed()=0;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp
new file mode 100644
index 00000000000..47d9bc2d86e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.cpp
@@ -0,0 +1,320 @@
+// $Id$
+
+#include "FTEC_Group_Manager.h"
+#include "ace/Synch_T.h"
+#include "Replication_Service.h"
+#include "Fault_Detector.h"
+#include "IOGR_Maker.h"
+#include "GroupInfoPublisher.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_Group_Manager,
+ "$Id$")
+
+
+inline bool operator == (const TAO_String_Manager& lhs, const TAO_String_Manager& rhs)
+{
+ return strcmp(lhs.in(), rhs.in()) == 0;
+}
+
+inline bool operator == (const CosNaming::NameComponent& lhs, const CosNaming::NameComponent& rhs)
+{
+ if (lhs.id == rhs.id) {
+ if (lhs.kind == rhs.kind)
+ return true;
+ }
+ return false;
+}
+
+bool operator == (const FTRT::Location& lhs, const FTRT::Location& rhs)
+{
+ if (lhs.length() == rhs.length()) {
+ for (unsigned i = 0; i < lhs.length(); ++i)
+ if (!(lhs[i] == rhs[i]))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+int find_by_location(const FTRT::ManagerInfoList& list,
+ const FTRT::Location & location)
+{
+ unsigned i;
+ for (i = 0; i < list.length(); ++i) {
+ if (list[i].the_location == location) {
+ return i;
+ }
+ }
+ return i;
+}
+
+/*
+void print(const FTRT::Location& location)
+{
+ ACE_DEBUG((LM_DEBUG, "{"));
+ for (size_t i = 0; i < location.length(); ++i) {
+ ACE_DEBUG((LM_DEBUG, "<%s,%s>", location[i].id.in(), location[i].kind.in()));
+ }
+ ACE_DEBUG((LM_DEBUG, "}"));
+}
+*/
+
+struct TAO_FTEC_Group_Manager_Impl
+{
+ FTRT::ManagerInfoList info_list;
+ unsigned my_position;
+ FTRT::FaultListener_var listener;
+};
+
+TAO_FTEC_Group_Manager::TAO_FTEC_Group_Manager()
+: impl_(new TAO_FTEC_Group_Manager_Impl)
+{
+ Fault_Detector::instance()->set_listener(this);
+}
+
+TAO_FTEC_Group_Manager::~TAO_FTEC_Group_Manager()
+{
+ delete impl_;
+}
+
+CORBA::Boolean TAO_FTEC_Group_Manager::start (
+ FTRT::FaultListener_ptr listener,
+ FTRT::Location_out cur
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ impl_->listener = listener;
+ ACE_NEW_RETURN(cur , FTRT::Location(Fault_Detector::instance()->my_location()), false);
+ return true;
+}
+
+
+void TAO_FTEC_Group_Manager::create_group (
+ const FTRT::ManagerInfoList & info_list,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ACE_DEBUG((LM_DEBUG, "create_group\n"));
+ IOGR_Maker::instance()->set_ref_version( object_group_ref_version );
+
+ impl_->info_list = info_list;
+ impl_->my_position = find_by_location(info_list,
+ Fault_Detector::instance()->my_location());
+
+ GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance();
+
+ publisher->update(impl_->info_list, impl_->my_position
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FtRtecEventChannelAdmin::EventChannel_var successor
+ = publisher->successor();
+
+ if (!CORBA::is_nil(successor.in())) {
+ successor->create_group(info_list, object_group_ref_version
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ if (impl_->my_position > 0) {
+ Fault_Detector* detector = Fault_Detector::instance();
+ if ( detector->connect(impl_->info_list[impl_->my_position-1].the_location) == -1) {
+ ACE_DEBUG((LM_DEBUG, "Cannot connect to predecesor\n"));
+ ACE_THROW(FTRT::PredecessorUnreachable());
+ }
+ }
+}
+
+void TAO_FTEC_Group_Manager::join_group (
+ const FTRT::ManagerInfo & info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ACE_DEBUG((LM_DEBUG, "join group\n"));
+ if (impl_->my_position == 0) {
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ ACE_Write_Guard<FTRTEC::Replication_Service> lock(*svc);
+ add_member(info, IOGR_Maker::instance()->increment_ref_version() );
+ }
+}
+
+void TAO_FTEC_Group_Manager::add_member (
+ const FTRT::ManagerInfo & info,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ACE_DEBUG((LM_DEBUG, "add_member location = <%s>\n",
+ (const char*)info.the_location[0].id));
+
+ size_t pos = impl_->info_list.length();
+ impl_->info_list.length(pos+1);
+ impl_->info_list[pos] = info;
+
+ IOGR_Maker::instance()->set_ref_version( object_group_ref_version );
+ GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance();
+ publisher->update(impl_->info_list, impl_->my_position
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (impl_->my_position < impl_->info_list.length()-2)
+ {
+ // I am not the last of replica, tell my successor that
+ // a new member has joined in.
+ ACE_TRY {
+ publisher->successor()->add_member(info, object_group_ref_version
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ return;
+ }
+ ACE_CATCHANY {
+ // Unable to send request to all the successors.
+ // Now this node become the last replica of the object group.
+ }
+ ACE_ENDTRY;
+
+ // update the info list again
+ impl_->info_list.length(impl_->my_position+2);
+ impl_->info_list[impl_->my_position+1] = info;
+
+ publisher->update(impl_->info_list, impl_->my_position
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+
+ // this is the last replica in the list
+ // synchornize the state with the newly joined replica.
+ FtRtecEventChannelAdmin::EventChannelState state;
+ get_state(state ACE_ENV_ARG_PARAMETER);
+
+ TAO_OutputCDR cdr;
+ cdr << state;
+
+ FTRT::State s;
+ if (cdr.begin()->cont()) {
+ ACE_Message_Block* blk;
+ ACE_NEW_THROW_EX(blk, ACE_Message_Block, CORBA::NO_MEMORY());
+ ACE_CDR::consolidate(blk, cdr.begin());
+ s.replace(blk->length(), blk);
+ blk->release();
+ }
+ else
+ s.replace(cdr.begin()->length(), cdr.begin());
+
+ ACE_DEBUG((LM_DEBUG, "Setting state\n"));
+ info.ior->set_state(s ACE_ENV_ARG_PARAMETER);
+ info.ior->create_group(impl_->info_list, object_group_ref_version);
+ ACE_DEBUG((LM_DEBUG, "After create_group\n"));
+}
+
+template <class SEQ>
+void remove_item(SEQ & seq, int position)
+{
+ int i = position;
+ int len = seq.length()-1;
+ for (;i < len; ++i)
+ seq[i] = seq[i+1];
+ seq.length(len);
+}
+
+void TAO_FTEC_Group_Manager::replica_crashed (
+ const FTRT::Location & location
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Group_Manager::replica_crashed\n"));
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ ACE_Write_Guard<FTRTEC::Replication_Service> lock(*svc);
+ remove_member(location, IOGR_Maker::instance()->increment_ref_version());
+}
+
+void TAO_FTEC_Group_Manager::remove_member (
+ const FTRT::Location & crashed_location,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ // find my position of this EventChannel in the group
+ unsigned crashed_pos = find_by_location(impl_->info_list, crashed_location);
+ if (crashed_pos >= impl_->info_list.length()) {
+ return;
+ }
+
+ ACE_ASSERT(impl_->my_position != crashed_pos);
+ remove_item(impl_->info_list, crashed_pos);
+
+ if (impl_->my_position > crashed_pos)
+ --impl_->my_position;
+
+ GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance();
+
+ publisher->update(impl_->info_list, impl_->my_position
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FtRtecEventChannelAdmin::EventChannel_var successor =
+ publisher->successor();
+
+ IOGR_Maker::instance()->set_ref_version(object_group_ref_version);
+ if (!CORBA::is_nil(successor.in())) {
+
+ successor->remove_member(crashed_location,
+ object_group_ref_version
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ ACE_DEBUG((LM_DEBUG, "2. my_position = %d, crashed_pos = %d\n", impl_->my_position, crashed_pos));
+ if (impl_->my_position == crashed_pos && impl_->my_position > 0)
+ Fault_Detector::instance()->connect(impl_->info_list[impl_->my_position-1].the_location);
+}
+
+void TAO_FTEC_Group_Manager::connection_closed()
+{
+ ACE_DEBUG((LM_DEBUG, "TAO_FTEC_Group_Manager::connection_closed\n"));
+ ACE_ASSERT(impl_->my_position > 0);
+
+ // do not use referere here, because the the value pointed by the pointer to
+ // crashed_location will be repliaced by its successor.
+ FTRT::Location crashed_location = impl_->info_list[impl_->my_position-1].the_location;
+
+ if (impl_->my_position > 1) {
+ ACE_TRY_NEW_ENV {
+ TAO_IOP::TAO_IOR_Manipulation::IORList iors;
+ iors.length(impl_->my_position-1);
+ for (size_t i = 0; i < impl_->my_position-1; ++i)
+ iors[i] = CORBA::Object::_duplicate(impl_->info_list[i].ior.in());
+
+ CORBA::Object_var obj =
+ IOGR_Maker::instance()->merge_iors(iors
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ FtRtecEventChannelAdmin::EventChannel_var primary =
+ FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ primary->replica_crashed(crashed_location
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_TRY_CHECK;
+ return;
+ }
+ ACE_CATCHANY {
+ }
+ ACE_ENDTRY;
+ }
+
+ ACE_TRY_NEW_ENV {
+ remove_member(crashed_location,
+ IOGR_Maker::instance()->increment_ref_version()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY {
+ }
+ ACE_ENDTRY;
+
+}
+
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h
new file mode 100644
index 00000000000..dd2aaa0d849
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_Group_Manager.h
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Group_Manager.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_GROUP_MANAGER_H
+#define TAO_FTEC_GROUP_MANAGER_H
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "FTEC_Fault_Listener.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+struct TAO_FTEC_Group_Manager_Impl;
+
+class TAO_FTEC_Group_Manager : private TAO_FTEC_Fault_Listener
+{
+public:
+ TAO_FTEC_Group_Manager();
+ virtual ~TAO_FTEC_Group_Manager();
+
+ bool init(CORBA::ORB_ptr orb);
+
+ virtual CORBA::Boolean start (
+ FTRT::FaultListener_ptr listener,
+ FTRT::Location_out cur
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ void create_group (
+ const FTRT::ManagerInfoList & info_list,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void join_group (
+ const FTRT::ManagerInfo & info
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void add_member (
+ const FTRT::ManagerInfo & info,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void remove_member (
+ const FTRT::Location & crashed_location,
+ CORBA::ULong object_group_ref_version
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void replica_crashed (
+ const FTRT::Location & location
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+private:
+ virtual void get_state (
+ FtRtecEventChannelAdmin::EventChannelState & s
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )=0;
+
+ virtual void connection_closed();
+
+protected:
+ TAO_FTEC_Group_Manager_Impl* impl_;
+};
+
+#endif // TAO_FTEC_GROUP_MANAGER_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp
new file mode 100644
index 00000000000..aa59c41118a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.cpp
@@ -0,0 +1,67 @@
+// $Id$
+
+
+#include "FTEC_ORBInitializer.h"
+#include "Set_Update_Interceptor.h"
+#include "ForwardCtrlServerInterceptor.h"
+#include "FtEventServiceInterceptor.h"
+#include "Request_Context_Repository.h"
+
+ACE_RCSID (EventChannel,
+ FTEC_ORBInitializer,
+ "$Id$")
+
+FTEC_ORBInitializer::FTEC_ORBInitializer ()
+{
+}
+
+void
+FTEC_ORBInitializer::pre_init (
+ PortableInterceptor::ORBInitInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void
+FTEC_ORBInitializer::post_init (
+ PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ Request_Context_Repository().allocate_slots(info ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableInterceptor::ClientRequestInterceptor_var client_interceptor;
+ PortableInterceptor::ClientRequestInterceptor_ptr ctmp;
+
+ ACE_NEW_THROW_EX(ctmp,
+ TAO_Set_Update_Interceptor,
+ CORBA::NO_MEMORY());
+
+ client_interceptor = ctmp;
+
+ info->add_client_request_interceptor (client_interceptor.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableInterceptor::ServerRequestInterceptor_var server_interceptor;
+ PortableInterceptor::ServerRequestInterceptor_ptr stmp;
+
+ ACE_NEW_THROW_EX(stmp,
+ ForwardCtrlServerInterceptor,
+ CORBA::NO_MEMORY());
+ server_interceptor = stmp;
+
+ info->add_server_request_interceptor (server_interceptor.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ ACE_NEW_THROW_EX(stmp,
+ FtEventServiceInterceptor,
+ CORBA::NO_MEMORY());
+ server_interceptor = stmp;
+
+ info->add_server_request_interceptor (server_interceptor.in()
+ ACE_ENV_ARG_PARAMETER);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h
new file mode 100644
index 00000000000..f32b012c267
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ORBInitializer.h
@@ -0,0 +1,40 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_ORBInitializer.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FTEC_ORBINITIALIZER__H_
+#define FTEC_ORBINITIALIZER__H_
+#include "ace/pre.h"
+
+#include "tao/PortableInterceptorC.h"
+#include "tao/LocalObject.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class FTEC_ORBInitializer
+ : public virtual PortableInterceptor::ORBInitializer
+ , public virtual TAO_Local_RefCounted_Object
+{
+public:
+ FTEC_ORBInitializer ();
+
+ virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void post_init (PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+};
+
+#include "ace/post.h"
+#endif /* FTEC_ORBINITIALIZER__H_ */
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp
new file mode 100644
index 00000000000..6e7c4e28678
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.cpp
@@ -0,0 +1,127 @@
+// $Id$
+
+#include "FTEC_ProxyConsumer.h"
+#include "Request_Context_Repository.h"
+#include "Replication_Service.h"
+#include "../Utils/activate_with_id.h"
+#include "../Utils/ScopeGuard.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_ProxyPushConsumer,
+ "$Id$")
+
+const TAO_FTEC_ProxyPushConsumer::RollbackOperation
+ TAO_FTEC_ProxyPushConsumer::rollback_obtain =
+ &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer;
+
+TAO_FTEC_ProxyPushConsumer::TAO_FTEC_ProxyPushConsumer (TAO_EC_Event_Channel_Base* event_channel)
+: Inherited(event_channel)
+{
+}
+
+
+const PortableServer::ObjectId&
+TAO_FTEC_ProxyPushConsumer::id() const
+{
+ return object_id_.in();
+}
+
+
+ /// Activate in the POA
+void
+TAO_FTEC_ProxyPushConsumer::activate (
+ RtecEventChannelAdmin::ProxyPushConsumer_ptr &result
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ result = RtecEventChannelAdmin::ProxyPushConsumer::_nil();
+ ACE_TRY {
+ object_id_ = Request_Context_Repository().get_object_id();
+ PortableServer::POA_var poa = _default_POA(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ activate_object_with_id(result, poa.in(), this, object_id_ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "");
+ // ignore exceptions
+ }
+ ACE_ENDTRY;
+}
+
+ // = The RtecEventChannelAdmin::ProxyPushConsumer methods...
+void TAO_FTEC_ProxyPushConsumer::connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS& qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ FtRtecEventChannelAdmin::Operation update;
+ update.object_id = this->id();
+ FtRtecEventChannelAdmin::Connect_push_supplier_param param;
+ param.push_supplier = RtecEventComm::PushSupplier::_duplicate(push_supplier);
+ param.qos = qos;
+ update.param.connect_supplier_param(param);
+
+ Inherited::connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ScopeGuard guard = MakeObjGuard(*this, &Inherited::disconnect_push_consumer);
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ {
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update,
+ &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_consumer
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ guard.Dismiss();
+}
+
+void TAO_FTEC_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+ FtRtecEventChannelAdmin::Operation update;
+ update.object_id = id();
+ update.param._d(FtRtecEventChannelAdmin::DISCONNECT_PUSH_CONSUMER);
+
+ Inherited::disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void TAO_FTEC_ProxyPushConsumer::get_state(FtRtecEventChannelAdmin::ProxyPushConsumerStat& state)
+{
+ state.object_id = this->object_id_;
+ if (this->is_connected()) {
+ FtRtecEventChannelAdmin::ProxyPushConsumerConnectionInfo info;
+ info.push_supplier = this->supplier();
+ info.qos = this->publications();
+ state.parameter.info(info);
+ }
+}
+
+void TAO_FTEC_ProxyPushConsumer::set_state(const FtRtecEventChannelAdmin::ProxyPushConsumerStat& state)
+{
+ if (!CORBA::is_nil(state.parameter.info().push_supplier.in()) )
+ {
+ Inherited::connect_push_supplier(state.parameter.info().push_supplier.in(),
+ state.parameter.info().qos
+ ACE_ENV_ARG_PARAMETER);
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h
new file mode 100644
index 00000000000..63a3c49548d
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxyConsumer.h
@@ -0,0 +1,62 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_ProxyPushConsumer.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef TAO_FTEC_PROXYCONSUMER_H
+#define TAO_FTEC_PROXYCONSUMER_H
+
+#include "orbsvcs/Event/EC_Default_ProxyConsumer.h"
+#include "ace/SString.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "Request_Context_Repository.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_ProxyPushConsumer : public TAO_EC_Default_ProxyPushConsumer
+{
+ typedef TAO_EC_Default_ProxyPushConsumer Inherited;
+public:
+ typedef RtecEventChannelAdmin::ProxyPushConsumer Interface;
+ typedef FtRtecEventChannelAdmin::ProxyPushConsumerStat State;
+ typedef POA_RtecEventChannelAdmin::ProxyPushConsumer_ptr Skeleton;
+
+ TAO_FTEC_ProxyPushConsumer (TAO_EC_Event_Channel_Base* event_channel);
+
+ virtual void activate (
+ RtecEventChannelAdmin::ProxyPushConsumer_ptr &proxy
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ // = The RtecEventChannelAdmin::ProxyPushConsumer methods...
+ virtual void connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS& qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected));
+ virtual void disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ const PortableServer::ObjectId& id() const;
+ void get_state(FtRtecEventChannelAdmin::ProxyPushConsumerStat& state);
+ void set_state(const FtRtecEventChannelAdmin::ProxyPushConsumerStat& state);
+
+ typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation)
+ (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ static const RollbackOperation rollback_obtain;
+private:
+ PortableServer::ObjectId_var object_id_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp
new file mode 100644
index 00000000000..aa1f45aee54
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.cpp
@@ -0,0 +1,191 @@
+// $Id$
+
+#include "FTEC_ProxySupplier.h"
+#include "../Utils/activate_with_id.h"
+#include "Request_Context_Repository.h"
+#include "Replication_Service.h"
+#include "../Utils/ScopeGuard.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_ProxyPushSupplier,
+ "$Id$")
+
+const TAO_FTEC_ProxyPushSupplier::RollbackOperation
+ TAO_FTEC_ProxyPushSupplier::rollback_obtain =
+ &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_supplier;
+
+TAO_FTEC_ProxyPushSupplier::TAO_FTEC_ProxyPushSupplier(TAO_EC_Event_Channel_Base* event_channel
+ ,int validate_connection)
+: Inherited(event_channel, validate_connection)
+{
+}
+
+const PortableServer::ObjectId&
+TAO_FTEC_ProxyPushSupplier::id() const
+{
+ return object_id_.in();
+}
+
+ /// Activate in the POA
+void
+TAO_FTEC_ProxyPushSupplier::activate (
+ RtecEventChannelAdmin::ProxyPushSupplier_ptr &result
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ result =
+ RtecEventChannelAdmin::ProxyPushSupplier::_nil();
+ ACE_TRY {
+ object_id_ = Request_Context_Repository().get_object_id();
+ PortableServer::POA_var poa = _default_POA(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ activate_object_with_id(result, poa.in(), this, id() ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ // ignore exceptions
+ }
+ ACE_ENDTRY;
+}
+
+ // = The RtecEventChannelAdmin::ProxyPushSupplier methods...
+void TAO_FTEC_ProxyPushSupplier::connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS &qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected,
+ RtecEventChannelAdmin::TypeError))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ FtRtecEventChannelAdmin::Operation update;
+ FtRtecEventChannelAdmin::Connect_push_consumer_param param;
+ update.object_id = this->id();
+ param.push_consumer = RtecEventComm::PushConsumer::_duplicate(push_consumer);
+ param.qos = qos;
+ update.param.connect_consumer_param(param);
+
+ Inherited::connect_push_consumer(push_consumer, qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ScopeGuard guard = MakeObjGuard(*this, &Inherited::disconnect_push_supplier);
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ {
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update,
+ &FtRtecEventChannelAdmin::EventChannelFacade::disconnect_push_supplier
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ guard.Dismiss();
+}
+
+
+void TAO_FTEC_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ FtRtecEventChannelAdmin::Operation update;
+ update.object_id = id();
+ update.param._d(FtRtecEventChannelAdmin::DISCONNECT_PUSH_SUPPLIER);
+
+ Inherited::disconnect_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ FTRTEC::Replication_Service *svc = FTRTEC::Replication_Service::instance();
+
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+void TAO_FTEC_ProxyPushSupplier::suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ FtRtecEventChannelAdmin::Operation update;
+ update.object_id = id();
+ update.param._d(FtRtecEventChannelAdmin::SUSPEND_CONNECTION);
+
+ Inherited::suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ ScopeGuard guard = MakeObjGuard(*this, &Inherited::resume_connection);
+ ACE_CHECK;
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ {
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update,
+ &FtRtecEventChannelAdmin::EventChannel::resume_push_supplier
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ guard.Dismiss();
+}
+
+void TAO_FTEC_ProxyPushSupplier::resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (Request_Context_Repository().is_executed_request())
+ return;
+
+ Request_Context_Repository().set_object_id(id());
+ FtRtecEventChannelAdmin::Operation update;
+ update.object_id = id();
+ update.param._d(FtRtecEventChannelAdmin::RESUME_CONNECTION);
+
+ Inherited::resume_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ScopeGuard guard = MakeObjGuard(*this, &Inherited::suspend_connection);
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ {
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(update,
+ &FtRtecEventChannelAdmin::EventChannel::suspend_push_supplier
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ guard.Dismiss();
+}
+
+
+void TAO_FTEC_ProxyPushSupplier::get_state(FtRtecEventChannelAdmin::ProxyPushSupplierStat& state)
+{
+ state.object_id = this->object_id_;
+ state.suspended = this->is_suspended();
+ if (this->is_connected()) {
+ FtRtecEventChannelAdmin::ProxyPushSupplierConnectionInfo info;
+ info.push_consumer = this->consumer();
+ info.qos = this->subscriptions();
+ state.parameter.info(info);
+ }
+}
+
+
+void TAO_FTEC_ProxyPushSupplier::set_state(const FtRtecEventChannelAdmin::ProxyPushSupplierStat& state)
+{
+ if (!CORBA::is_nil(state.parameter.info().push_consumer.in()))
+ {
+ Inherited::connect_push_consumer(state.parameter.info().push_consumer.in(),
+ state.parameter.info().qos
+ ACE_ENV_ARG_PARAMETER);
+ if (state.suspended)
+ Inherited::suspend_connection(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h
new file mode 100644
index 00000000000..29688d3e592
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_ProxySupplier.h
@@ -0,0 +1,67 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_ProxyPushSupplier.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_PROXYSUPPLIER_H
+#define TAO_FTEC_PROXYSUPPLIER_H
+#include "orbsvcs/Event/EC_Default_ProxySupplier.h"
+#include "ace/SString.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "Request_Context_Repository.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_ProxyPushSupplier : public TAO_EC_Default_ProxyPushSupplier
+{
+ typedef TAO_EC_Default_ProxyPushSupplier Inherited;
+public:
+ typedef RtecEventChannelAdmin::ProxyPushSupplier Interface;
+ typedef FtRtecEventChannelAdmin::ProxyPushSupplierStat State;
+ typedef POA_RtecEventChannelAdmin::ProxyPushSupplier_ptr Skeleton;
+
+ TAO_FTEC_ProxyPushSupplier(TAO_EC_Event_Channel_Base* event_channel,
+ int validate_connection);
+ /// Activate in the POA
+ virtual void activate (
+ RtecEventChannelAdmin::ProxyPushSupplier_ptr &proxy
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // = The RtecEventChannelAdmin::ProxyPushSupplier methods...
+ virtual void connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS &qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected,
+ RtecEventChannelAdmin::TypeError));
+ virtual void disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ const PortableServer::ObjectId& id() const;
+
+ void get_state(FtRtecEventChannelAdmin::ProxyPushSupplierStat& state);
+ void set_state(const FtRtecEventChannelAdmin::ProxyPushSupplierStat& state);
+
+ typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation)
+ (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ static const RollbackOperation rollback_obtain;
+private:
+ PortableServer::ObjectId_var object_id_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp
new file mode 100644
index 00000000000..ef8111f521c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.cpp
@@ -0,0 +1,50 @@
+// $Id$
+
+#include "orbsvcs/Event/EC_ProxySupplier.h"
+#include "orbsvcs/Event/EC_Event_Channel_Base.h"
+#include "FTEC_SupplierAdmin.h"
+#include "FTEC_ProxyConsumer.h"
+#include "tao/Stub.h"
+
+ACE_RCSID (EventChannel,
+ TAO_FTEC_SupplierAdmin,
+ "$Id$")
+
+
+const FtRtecEventChannelAdmin::OperationType
+TAO_FTEC_SupplierAdmin::OBTAIN_ID = FtRtecEventChannelAdmin::OBTAIN_PUSH_CONSUMER;
+
+TAO_FTEC_SupplierAdmin::TAO_FTEC_SupplierAdmin (TAO_EC_Event_Channel_Base *ec)
+ : TAO_EC_SupplierAdmin (ec)
+ , FT_Aspect(this, this->event_channel_->supplier_poa ())
+{
+}
+
+TAO_FTEC_SupplierAdmin::~TAO_FTEC_SupplierAdmin()
+{
+}
+
+
+RtecEventChannelAdmin::ProxyPushConsumer_ptr
+TAO_FTEC_SupplierAdmin::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return obtain_proxy(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+void
+TAO_FTEC_SupplierAdmin::disconnect(RtecEventChannelAdmin::ProxyPushConsumer_ptr obj)
+{
+ ACE_TRY_NEW_ENV {
+ obj->disconnect_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ ACE_CATCHALL
+ {
+ }
+ ACE_ENDTRY;
+}
+
+
+
+
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h
new file mode 100644
index 00000000000..50b364f0169
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTEC_SupplierAdmin.h
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_SupplierAdmin.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_SUPPLIERADMIN_H
+#define TAO_FTEC_SUPPLIERADMIN_H
+#include "ace/pre.h"
+
+#include "FTEC_ProxyConsumer.h"
+#include "FT_ProxyAdmin_T.h"
+#include "ProxyConsumerStateWorker.h"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "orbsvcs/Event/EC_SupplierAdmin.h"
+//#include "event_export.h"
+
+class TAO_FTEC_Event_Channel_Impl;
+
+namespace FtRtecEventChannelAdmin {
+ struct SupplierAdminState;
+};
+/**
+ * @class TAO_FTEC_SupplierAdmin
+ *
+ * @brief Implement the RtecEventChannelAdmin::SupplierAdmin interface.
+ *
+ *
+ */
+class TAO_FTEC_SupplierAdmin
+ : public TAO_EC_SupplierAdmin
+ , public FT_ProxyAdmin<TAO_FTEC_SupplierAdmin,
+ TAO_FTEC_ProxyPushConsumer,
+ RtecEventChannelAdmin::ProxyPushConsumer,
+ FtRtecEventChannelAdmin::SupplierAdminState>
+{
+public:
+
+ static const FtRtecEventChannelAdmin::OperationType OBTAIN_ID;
+
+ typedef FT_ProxyAdmin<TAO_FTEC_SupplierAdmin,
+ TAO_FTEC_ProxyPushConsumer,
+ RtecEventChannelAdmin::ProxyPushConsumer,
+ FtRtecEventChannelAdmin::SupplierAdminState>
+ FT_Aspect;
+
+ typedef ProxyConsumerStateWorker StateWorker;
+
+ /// constructor...
+ TAO_FTEC_SupplierAdmin (TAO_EC_Event_Channel_Base* event_channel);
+
+ /// destructor...
+ virtual ~TAO_FTEC_SupplierAdmin (void);
+
+
+ // = The RtecEventChannelAdmin::SupplierAdmin methods...
+ virtual RtecEventChannelAdmin::ProxyPushConsumer_ptr
+ obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void disconnect(RtecEventChannelAdmin::ProxyPushConsumer_ptr obj);
+};
+
+#include "ace/post.h"
+#endif /* TAO_FTEC_SUPPLIERADMIN_H */
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h
new file mode 100644
index 00000000000..d0988b09021
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRTEC_ServiceActivate.h
@@ -0,0 +1,11 @@
+// $Id$
+
+#ifndef FTRTEC_SERVICE_ACTIVATE_H
+#define FTRTEC_SERVICE_ACTIVATE_H
+
+#include "Fault_Detector_Loader.h"
+#include "Identification_Service.h"
+#include "Replication_Service.h"
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj
new file mode 100644
index 00000000000..e5287a253d9
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FTRT_EventChannel.vcproj
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="FTRT_EventChannel"
+ ProjectGUID="{482BBE1E-FECA-1BAD-5231-8C703E5E3387}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(ACE_ROOT)\lib"
+ IntermediateDirectory="Release/FTRT_EventChannel"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"
+ PreprocessorDefinitions="TAO_FTRTEC_BUILD_DLL;NDEBUG;WIN32;_WINDOWS"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FtRtEvent.lib TAO_CosNaming.lib TAO_IORTable.lib TAO_RTEvent.lib TAO_Svc_Utils.lib TAO_Messaging.lib TAO_FTORB_Utils.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO_IORManip.lib TAO.lib ACE.lib"
+ OutputFile="$(OutDir)/TAO_FTRT_EventChannel.dll"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(ACE_ROOT)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/TAO_FTRT_EventChannel.pdb"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(OutDir)/TAO_FTRT_EventChannel.lib"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(ACE_ROOT)\lib"
+ IntermediateDirectory="Debug/FTRT_EventChannel"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"
+ PreprocessorDefinitions="TAO_FTRTEC_BUILD_DLL;_DEBUG;WIN32;_WINDOWS"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="TAO_FtRtEventd.lib TAO_CosNamingd.lib TAO_IORTabled.lib TAO_RTEventd.lib TAO_Svc_Utilsd.lib TAO_Messagingd.lib TAO_FTORB_Utilsd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAO_IORManipd.lib TAOd.lib ACEd.lib"
+ OutputFile="$(OutDir)/TAO_FTRT_EventChanneld.dll"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(ACE_ROOT)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/TAO_FTRT_EventChanneld.pdb"
+ SubSystem="1"
+ ImportLibrary="$(OutDir)/TAO_FTRT_EventChanneld.lib"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Static Release|Win32"
+ OutputDirectory="$(ACE_ROOT)\lib"
+ IntermediateDirectory="Static_Release/FTRT_EventChannel"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"
+ PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;NDEBUG;WIN32;_WINDOWS"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/TAO_FTRT_EventChannels.lib"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(ACE_ROOT)\lib"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Static Debug|Win32"
+ OutputDirectory="$(ACE_ROOT)\lib"
+ IntermediateDirectory="Static_Debug/FTRT_EventChannel"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"
+ PreprocessorDefinitions="TAO_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;ACE_AS_STATIC_LIBS;_DEBUG;WIN32;_WINDOWS"
+ MinimalRebuild="FALSE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="TRUE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/TAO_FTRT_EventChannelsd.lib"
+ Version="1.3.4"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(ACE_ROOT)\lib"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="$(TAO_ROOT)\orbsvcs,$(TAO_ROOT),$(TAO_ROOT)\tao,$(ACE_ROOT)"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;cxx;cc;C;c">
+ <File
+ RelativePath=".\FtRtEvent\EventChannel">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hh">
+ <File
+ RelativePath=".\Fault_Detector_T.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Template Files"
+ Filter="">
+ <File
+ RelativePath=".\Fault_Detector_T.cpp">
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Static Release|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Static Debug|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp
new file mode 100644
index 00000000000..95b4e0bced8
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.cpp
@@ -0,0 +1,44 @@
+// $Id$
+
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/PortableServer/Servant_Base.h"
+#include "FT_ProxyAdmin_T.h"
+
+ACE_RCSID (EventChannel,
+ FT_ProxyAdmin_Base,
+ "$Id$")
+
+FT_ProxyAdmin_Base::FT_ProxyAdmin_Base(PortableServer::ServantBase* servant,
+ PortableServer::POA_var poa)
+: servant_(servant), poa_(poa)
+{
+}
+
+FT_ProxyAdmin_Base::~FT_ProxyAdmin_Base()
+{
+}
+
+void FT_ProxyAdmin_Base::activate(const PortableServer::ObjectId& oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ poa_->activate_object_with_id(oid, servant_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ object_id_ = oid;
+}
+
+
+const PortableServer::ObjectId& FT_ProxyAdmin_Base::object_id(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const
+{
+ return object_id_;
+}
+
+
+CORBA::Object_var FT_ProxyAdmin_Base::reference(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const
+{
+ return poa_->servant_to_reference(servant_
+ ACE_ENV_ARG_PARAMETER);
+}
+
+
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h
new file mode 100644
index 00000000000..cf5c1f5b831
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_Base.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FT_ProxyAdmin_Base.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FT_PROXYADMIN_BASE_H
+#define FT_PROXYADMIN_BASE_H
+
+#include "ace/pre.h"
+#include "tao/corba.h"
+#include "tao/PortableServer/Servant_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class FT_ProxyAdmin_Base
+{
+public:
+ FT_ProxyAdmin_Base(PortableServer::ServantBase* servant,
+ PortableServer::POA_var poa);
+ virtual ~FT_ProxyAdmin_Base();
+ void activate(const PortableServer::ObjectId& oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ const PortableServer::ObjectId& object_id(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const;
+
+ /// Returns an CORBA object reference when the servant is activated
+ CORBA::Object_var reference(ACE_ENV_SINGLE_ARG_DECL_NOT_USED) const;
+
+protected:
+
+ PortableServer::ServantBase* servant_;
+ /// Store the default POA.
+ PortableServer::POA_var poa_;
+ /// store the object id
+ PortableServer::ObjectId object_id_;
+};
+
+
+
+#include "ace/post.h"
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp
new file mode 100644
index 00000000000..0b760c04b0c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.cpp
@@ -0,0 +1,145 @@
+// $Id$
+
+#include "IOGR_Maker.h"
+#include "Replication_Service.h"
+#include "ace/Synch_T.h"
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::FT_ProxyAdmin(
+ EC_PROXY_ADMIN* admin, PortableServer::POA_var poa)
+ : FT_ProxyAdmin_Base(admin, poa), admin_(admin)
+{
+}
+
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+void
+FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface,State>::obtain_proxy (
+ const FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL)
+{
+ Request_Context_Repository().set_object_id(op.object_id
+ ACE_ENV_ARG_PARAMETER);
+
+ ProxyInterface_var result
+ = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ScopeGuard guard = MakeObjGuard(*admin_,
+ &EC_PROXY_ADMIN::disconnect,
+ result.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ {
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+
+ svc->replicate_request(op,
+ Proxy::rollback_obtain
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ guard.Dismiss();
+}
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+typename FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::ProxyInterface_ptr
+FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::obtain_proxy (ACE_ENV_SINGLE_ARG_DECL)
+{
+ CORBA::Any_var any = Request_Context_Repository().get_cached_result();
+ CORBA::Object_var obj;
+ if (*any >>= CORBA::Any::to_object(obj))
+ return ProxyInterface::_narrow(obj.in());
+
+ FtRtecEventChannelAdmin::ObjectId oid;
+ Request_Context_Repository().generate_object_id(oid
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ FtRtecEventChannelAdmin::Operation update;
+
+ update.object_id = oid;
+ update.param._d(EC_PROXY_ADMIN::OBTAIN_ID);
+
+ ProxyInterface_var result
+ = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ ScopeGuard guard =
+ MakeObjGuard(*admin_,
+ &EC_PROXY_ADMIN::disconnect,
+ result.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ FTRTEC::Replication_Service* svc = FTRTEC::Replication_Service::instance();
+ ACE_Read_Guard<FTRTEC::Replication_Service> locker(*svc);
+ {
+ obj = IOGR_Maker::instance()->forge_iogr(result.in()
+ ACE_ENV_ARG_PARAMETER)
+ ACE_CHECK_RETURN(0);
+
+ result = ProxyInterface::_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ svc->replicate_request(update,
+ Proxy::rollback_obtain
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ }
+ guard.Dismiss();
+
+ return result._retn();
+}
+
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+void FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::get_state(
+ State& state
+ ACE_ENV_ARG_DECL)
+{
+ typename EC_PROXY_ADMIN::StateWorker worker(state.proxies);
+ admin_->for_each(&worker ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+void FT_ProxyAdmin<EC_PROXY_ADMIN, Proxy, ProxyInterface, State>::set_state(
+ const State& state
+ ACE_ENV_ARG_DECL)
+{
+ for (size_t i =0; i < state.proxies.length(); ++i)
+ {
+ const typename Proxy::State& proxy_state
+ = state.proxies[i];
+
+ Request_Context_Repository().set_object_id(proxy_state.object_id
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ProxyInterface_var
+ proxy_ior = admin_->obtain(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ typedef typename Proxy::Skeleton Skeleton;
+ PortableServer::Servant servant = poa_->id_to_servant(proxy_state.object_id
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK;
+ Skeleton skeleton = ACE_reinterpret_cast(Skeleton,
+ servant->_downcast(proxy_ior->_interface_repository_id()
+ ACE_ENV_ARG_PARAMETER));
+ ACE_CHECK;
+
+ ACE_static_cast(Proxy* , skeleton)->set_state(proxy_state
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h
new file mode 100644
index 00000000000..a0bff3fb0c8
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FT_ProxyAdmin_T.h
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FT_ProxyAdmin_T.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FT_PROXYADMIN_H
+#define FT_PROXYADMIN_H
+
+#include "FT_ProxyAdmin_Base.h"
+#include "../Utils/ScopeGuard.h"
+#include "Request_Context_Repository.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+template <class EC_PROXY_ADMIN, class Proxy,
+ class ProxyInterface, class State>
+class FT_ProxyAdmin : public FT_ProxyAdmin_Base
+{
+public:
+ typedef typename ProxyInterface::_ptr_type ProxyInterface_ptr;
+ typedef typename ProxyInterface::_var_type ProxyInterface_var;
+
+ FT_ProxyAdmin(EC_PROXY_ADMIN* admin,
+ PortableServer::POA_var poa);
+
+ ProxyInterface_ptr
+ obtain_proxy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED);
+
+ /// this is used for updating the state
+ void obtain_proxy (const FtRtecEventChannelAdmin::Operation& op
+ ACE_ENV_ARG_DECL);
+
+ void get_state(State& state ACE_ENV_ARG_DECL);
+ void set_state(const State& state ACE_ENV_ARG_DECL);
+private:
+ EC_PROXY_ADMIN* admin_;
+};
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "FT_ProxyAdmin_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("FT_ProxyAdmin_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp
new file mode 100644
index 00000000000..1153b624382
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.cpp
@@ -0,0 +1,71 @@
+// $Id$
+
+#include "ace/Reactor.h"
+#include "Fault_Detector.h"
+#include "ace/Select_Reactor.h"
+
+ACE_RCSID (EventChannel,
+ Fault_Detector,
+ "$Id$")
+
+Fault_Detector::ReactorTask::ReactorTask()
+: reactor_(new ACE_Select_Reactor, 1)
+{
+}
+
+int
+Fault_Detector::ReactorTask::svc (void)
+{
+ this->reactor_.owner(ACE_OS::thr_self());
+ this->reactor_.run_reactor_event_loop();
+ return 0;
+}
+
+
+Fault_Detector::~Fault_Detector()
+{
+}
+
+const FTRT::Location& Fault_Detector::my_location() const
+{
+ return location_;
+}
+
+namespace {
+ Fault_Detector* detector;
+}
+
+Fault_Detector* Fault_Detector::instance()
+{
+ return detector;
+}
+
+int Fault_Detector::init(int argc, char** argv)
+{
+ detector = this;
+ if (this->parse_conf(argc, argv)==0 &&
+ this->init_acceptor() ==0)
+ {
+ if (!reactor_task_.thr_count() &&
+ reactor_task_.activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,"Cannot activate reactor thread\n"),
+ -1);
+ return 0;
+ }
+ return -1;
+}
+
+void Fault_Detector::stop()
+{
+ reactor_task_.reactor_.end_reactor_event_loop();
+}
+
+void Fault_Detector::set_listener(TAO_FTEC_Fault_Listener* listener)
+{
+ listener_ = listener;
+}
+
+int Fault_Detector::parse_conf(int , char** )
+{
+ return 0;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h
new file mode 100644
index 00000000000..10d93e3705d
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector.h
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Fault_Detector.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef FAULT_DETECTOR_H
+#define FAULT_DETECTOR_H
+
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+#include "orbsvcs/FTRT_GroupManagerC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Fault_Listener;
+
+class Fault_Detector
+{
+public:
+ virtual ~Fault_Detector();
+
+ static Fault_Detector* instance();
+
+ int init(int argc, ACE_TCHAR** argv);
+ void stop();
+ void set_listener(TAO_FTEC_Fault_Listener*);
+ const FTRT::Location& my_location() const;
+ virtual int connect(const FTRT::Location& location)=0;
+
+private:
+ virtual int init_acceptor()=0;
+ virtual int parse_conf(int argc, ACE_TCHAR** argv);
+
+protected:
+
+ class ReactorTask : public ACE_Task_Base
+ {
+ public:
+ // ctor
+ ReactorTask();
+ virtual int svc (void);
+ ACE_Reactor reactor_;
+ };
+
+ FTRT::Location location_;
+ ReactorTask reactor_task_;
+ TAO_FTEC_Fault_Listener* listener_;
+};
+
+#endif //FAULT_DETECTOR_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp
new file mode 100644
index 00000000000..4eb9b8dde8a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.cpp
@@ -0,0 +1,70 @@
+// $Id$
+
+#include "Fault_Detector_Loader.h"
+#include "FTEC_Fault_Listener.h"
+#include "SCTP_Fault_Detector.h"
+#include "ace/SOCK_Acceptor.h"
+#include "ace/SOCK_Connector.h"
+#include "ConnectionHandler_T.h"
+
+ACE_RCSID (EventChannel,
+ Fault_Detector_Loader,
+ "$Id$")
+
+namespace FTRTEC {
+ typedef Fault_Detector_T<
+ ACE_Acceptor<ConnectionAcceptHandler<ACE_SOCK_STREAM> , ACE_SOCK_ACCEPTOR>,
+ ACE_SOCK_Connector, ConnectionDetectHandler<ACE_SOCK_STREAM> >
+ TCP_Fault_Detector;
+
+ Fault_Detector_Loader::Fault_Detector_Loader (void)
+ {
+ }
+
+ Fault_Detector_Loader::~Fault_Detector_Loader (void)
+ {
+ }
+
+ int
+ Fault_Detector_Loader::init (int argc,
+ ACE_TCHAR* argv[])
+ {
+ ACE_TRACE ("Fault_Detector_Loader::init");
+
+ static int initialized = 0;
+
+ // Only allow initialization once.
+ if (initialized)
+ return 0;
+
+ initialized = 1;
+
+ // Parse any service configurator parameters.
+ if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("sctp")) == 0)
+ {
+ detector_.reset(new STCP_Fault_Detector);
+ argc--; argv++;
+ }
+ else
+ detector_.reset(new TCP_Fault_Detector);
+ return detector_->init(argc, argv);
+ }
+
+ Fault_Detector*
+ Fault_Detector_Loader::detector()
+ {
+ return detector_.get();
+ }
+
+ /////////////////////////////////////////////////////////////////////
+
+ ACE_FACTORY_DEFINE (TAO_FTRTEC, Fault_Detector_Loader);
+
+ ACE_STATIC_SVC_DEFINE (Fault_Detector_Loader,
+ ACE_TEXT ("FTRTEC_Fault_Detector"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (Fault_Detector_Loader),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h
new file mode 100644
index 00000000000..852904d4450
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_Loader.h
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Fault_Detector_Loader.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef FAULT_DETECTOR_LOADER_H
+#define FAULT_DETECTOR_LOADER_H
+
+#include "ace/pre.h"
+
+#include "tao/orbconf.h"
+
+#include "ace/Service_Object.h"
+#include "ace/Service_Config.h"
+#include "ftrtec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+class Fault_Detector;
+
+namespace FTRTEC {
+ class TAO_FTRTEC_Export Fault_Detector_Loader : public ACE_Service_Object
+ {
+ public:
+ /// Constructor.
+ Fault_Detector_Loader (void);
+
+ /// Destructor.
+ virtual ~Fault_Detector_Loader (void);
+
+ virtual int init (int argc,
+ ACE_TCHAR* []);
+ Fault_Detector* detector();
+ private:
+ auto_ptr<Fault_Detector> detector_;
+ };
+
+
+ ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Fault_Detector_Loader)
+ ACE_STATIC_SVC_REQUIRE(Fault_Detector_Loader);
+ ACE_FACTORY_DECLARE (TAO_FTRTEC, Fault_Detector_Loader)
+}
+
+#include "ace/post.h"
+#endif //FAULT_DETECTOR_LOADER_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp
new file mode 100644
index 00000000000..68c96378c93
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.cpp
@@ -0,0 +1,58 @@
+
+/// $Id$
+
+template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER>
+Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::Fault_Detector_T()
+{
+}
+
+template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER>
+Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::~Fault_Detector_T()
+{
+}
+
+
+template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER>
+int
+Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::init_acceptor()
+{
+ ACE_INET_Addr listen_addr;
+ if (acceptor_.open(listen_addr, &reactor_task_.reactor_) != 0)
+ ACE_ERROR_RETURN((LM_ERROR, "Connot open acceptor\n"), -1);
+
+ if (acceptor_.acceptor().get_local_addr(listen_addr) !=0)
+ ACE_ERROR_RETURN((LM_ERROR, "Connot get local addr\n"), -1);
+
+ ACE_DEBUG((LM_DEBUG, "listening at %s:%d\n", listen_addr.get_host_name(),
+ listen_addr.get_port_number()));
+ char* buf = CORBA::string_alloc(MAXHOSTNAMELEN);
+ listen_addr.addr_to_string(buf, MAXHOSTNAMELEN, 0);
+ location_.length(1);
+ location_[0].id = buf;
+ return 0;
+}
+
+template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER>
+int
+Fault_Detector_T<ACCEPTOR, CONNECTOR, DETECTION_HANDLER>::connect(const FTRT::Location& location)
+{
+ if (location.length() == 0)
+ return -1;
+
+ ACE_INET_Addr prev_addr(location[0].id);
+
+ DETECTION_HANDLER* handler;
+ ACE_NEW_RETURN(handler, DETECTION_HANDLER(listener_), 0) ;
+
+ handler->reactor(&reactor_task_.reactor_);
+ ACE_DEBUG((LM_DEBUG, "connecting to %s\n", location[0].id.in()));
+
+ int result = connector_.connect(handler->peer(), prev_addr);
+
+ if (result == 0)
+ handler->open(this);
+ else
+ handler->close();
+
+ return result ;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h
new file mode 100644
index 00000000000..6c9ed952bce
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Detector_T.h
@@ -0,0 +1,44 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Fault_Detector_T.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef FAULT_DETECTOR_T_H
+#define FAULT_DETECTOR_T_H
+
+#include "Fault_Detector.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+template <class ACCEPTOR, class CONNECTOR, class DETECTION_HANDLER>
+class Fault_Detector_T : public Fault_Detector
+{
+public:
+ Fault_Detector_T();
+ ~Fault_Detector_T();
+ int connect(const FTRT::Location& addr);
+protected:
+ ACCEPTOR acceptor_;
+ CONNECTOR connector_;
+private:
+ virtual int init_acceptor();
+};
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Fault_Detector_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Fault_Detector_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h
new file mode 100644
index 00000000000..933f11a7597
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Fault_Listener.h
@@ -0,0 +1,27 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FTEC_Fault_Listener.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FTEC_FAULT_LISTENER_H
+#define TAO_FTEC_FAULT_LISTENER_H
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Fault_Listener
+{
+public:
+ virtual ~TAO_FTEC_Fault_Listener(){};
+ virtual void connection_closed()=0;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp
new file mode 100644
index 00000000000..34dae8cd7a6
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.cpp
@@ -0,0 +1,240 @@
+// $Id$
+
+#include "tao/PortableServer/PortableServer.h"
+#include "ForwardCtrlServerInterceptor.h"
+#include "GroupInfoPublisher.h"
+#include "IOGR_Maker.h"
+#include "../Utils/resolve_init.h"
+#include "orbsvcs/FTRTC.h"
+
+ACE_RCSID (EventChannel,
+ ForwardCtrlServerInterceptor,
+ "$Id$")
+
+CORBA::Object_ptr get_target(PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::String_var orb_id = ri->orb_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ int argc =0;
+ char** argv =0;
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, orb_id.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ PortableServer::POA_var poa =
+ resolve_init<PortableServer::POA>(orb.in(), "RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ PortableInterceptor::AdapterName_var adaptor_name =
+ ri->adapter_name(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ for (size_t i = 1; i < adaptor_name->length(); ++i) {
+ poa = poa->find_POA((*adaptor_name)[i] , false
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+ }
+
+ CORBA::OctetSeq_var oid =
+ ri->object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ CORBA::Object_var obj =
+ poa->id_to_reference(oid.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ return obj._retn();
+}
+
+CORBA::Object_ptr get_forward(PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Object_var target =
+ get_target(ri ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ TAO::ObjectKey_var key =
+ target->_key(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ CORBA::Object_var iogr =
+ GroupInfoPublisher::instance()->group_reference();
+
+ CORBA::Object_var forward =
+ IOGR_Maker::instance()->ior_replace_key(iogr.in(), key.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ return forward._retn();
+}
+
+
+ForwardCtrlServerInterceptor::ForwardCtrlServerInterceptor()
+{
+}
+
+ForwardCtrlServerInterceptor::~ForwardCtrlServerInterceptor()
+{
+}
+
+char * ForwardCtrlServerInterceptor::name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup("ForwardCtrlServerInterceptor");
+}
+
+void ForwardCtrlServerInterceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void ForwardCtrlServerInterceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ ACE_TRY {
+ IOP::ServiceContext_var service_context =
+ ri->get_request_service_context(IOP::FT_GROUP_VERSION
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY {
+ // not an FT call , continue to process the request
+ return;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK;
+
+ GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance();
+ if (!publisher->is_primary()) {
+ // I am not primary, forword the request to primary
+ CORBA::Object_var forward = get_forward(ri
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_THROW( PortableInterceptor::ForwardRequest(forward.in(), 0) );
+ }
+}
+
+void ForwardCtrlServerInterceptor::receive_request_service_contexts (
+ PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
+
+FT::ObjectGroupRefVersion get_ft_group_version(IOP::ServiceContext_var service_context
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ TAO_InputCDR cdr (ACE_reinterpret_cast (const char*,
+ service_context->context_data.get_buffer ()
+ ),
+ service_context->context_data.length ());
+
+ CORBA::Boolean byte_order;
+
+ if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
+ ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28,
+ CORBA::COMPLETED_NO));
+
+ cdr.reset_byte_order (ACE_static_cast (int,byte_order));
+
+ FT::FTGroupVersionServiceContext fgvsc;
+
+ if ((cdr >> fgvsc) == 0)
+ ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28,
+ CORBA::COMPLETED_NO));
+
+ return fgvsc.object_group_ref_version;
+}
+
+
+
+void ForwardCtrlServerInterceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ IOP::ServiceContext_var service_context;
+ FT::ObjectGroupRefVersion version;
+
+ ACE_TRY {
+
+ if (!ri->response_expected(ACE_ENV_SINGLE_ARG_PARAMETER))
+ return;
+ ACE_TRY_CHECK;
+
+
+
+ service_context =
+ ri->get_request_service_context(IOP::FT_GROUP_VERSION
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ // get the ref version service context
+ version =
+ get_ft_group_version(service_context
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHALL {
+ // not an FT call , continue to reply the request
+ return;
+ }
+ ACE_ENDTRY;
+ // pass a new IOGR if the client use an outdated version
+
+ IOGR_Maker* maker = IOGR_Maker::instance();
+ ACE_DEBUG((LM_DEBUG, "Current GROUP Version = %d, received version = %d\n",
+ maker->get_ref_version(), version));
+
+ if (version < maker->get_ref_version()) {
+ ACE_DEBUG((LM_DEBUG, "Outdated IOGR version, passing new IOGR\n"));
+ ACE_TRY {
+ CORBA::Object_var forward = get_forward(ri
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ IOP::ServiceContext sc;
+ sc.context_id = FTRT::FT_FORWARD;
+ TAO_OutputCDR cdr;
+
+ //if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)))
+ //ACE_THROW (CORBA::MARSHAL ());
+
+ if ((cdr << forward.in() ) == 0 )
+ ACE_THROW (CORBA::MARSHAL ());
+
+ ACE_Message_Block mb;
+ ACE_CDR::consolidate(&mb, cdr.begin());
+ sc.context_data.replace(mb.length(), &mb);
+
+ ri->add_reply_service_context (sc, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG((LM_DEBUG, "reply_service_context added\n"));
+ }
+ ACE_CATCHALL {
+ }
+ ACE_ENDTRY;
+ }
+
+}
+
+void ForwardCtrlServerInterceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
+
+void ForwardCtrlServerInterceptor::send_other (PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h
new file mode 100644
index 00000000000..d5f4e285fd1
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ForwardCtrlServerInterceptor.h
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ForwardCtrlServerInterceptor.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FORWARDCTRLSERVERINTERCEPTOR_H
+#define FORWARDCTRLSERVERINTERCEPTOR_H
+#include "tao/PortableInterceptorC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class ForwardCtrlServerInterceptor :
+ public PortableInterceptor::ServerRequestInterceptor
+{
+public:
+ ForwardCtrlServerInterceptor();
+ ~ForwardCtrlServerInterceptor();
+
+ virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_request_service_contexts (
+ PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+};
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp
new file mode 100644
index 00000000000..80a6cb70623
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.cpp
@@ -0,0 +1,346 @@
+// $Id$
+
+#include "orbsvcs/FT_CORBA_ORBC.h"
+#include "FtEventServiceInterceptor.h"
+#include "Request_Context_Repository.h"
+
+ACE_RCSID (EventChannel,
+ FtEventServiceInterceptor,
+ "$Id$")
+
+bool
+CachedRequestTable::is_new_request(const ACE_CString& client_id, CORBA::Long retention_id)
+{
+ TableImpl::ENTRY* entry;
+ return table_.find(client_id, entry) !=0 || entry->int_id_.retention_id != retention_id;
+}
+
+int
+CachedRequestTable::update(const ACE_CString& client_id,
+ CORBA::Long retention_id,
+ const CORBA::Any& result)
+{
+ CachedRequestInfo info;
+ info.retention_id = retention_id;
+ TableImpl::ENTRY* entry=0;
+ if (table_.bind(client_id, info, entry))
+ {
+ entry->int_id_.result = result;
+ return 0;
+ }
+ return -1;
+}
+
+
+
+CORBA::Any
+CachedRequestTable::get_result(const ACE_CString& client_id)
+{
+ TableImpl::ENTRY* entry;
+ if (table_.find(client_id, entry)) {
+ return entry->int_id_.result;
+ }
+ return CORBA::Any();
+}
+
+
+void
+CachedRequestTable::get_state(FtRtecEventChannelAdmin::CachedOptionResults& state)
+{
+ state.length(table_.current_size());
+ TableImpl::iterator last = table_.end();
+ int i = 0;
+
+ for (TableImpl::iterator first = table_.begin();
+ first != last;
+ ++first)
+ {
+ TableImpl::ENTRY& entry = *first;
+ state[i].client_id = strdup(entry.ext_id_.c_str());
+ state[i].cached_result = entry.int_id_;
+ ++i;
+ }
+
+}
+
+void
+CachedRequestTable::set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state)
+{
+ for (size_t i = 0; i < state.length(); ++i)
+ {
+ table_.bind(state[i].client_id.in(), state[i].cached_result);
+ }
+}
+
+void
+retrieve_ft_request_context(
+ PortableInterceptor::ServerRequestInfo_ptr ri,
+ IOP::ServiceContext_var& service_context,
+ FT::FTRequestServiceContext& ft_request_service_context
+ ACE_ENV_ARG_DECL_NOT_USED)
+{
+ service_context = ri->get_request_service_context(IOP::FT_REQUEST ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ const char * buf =
+ ACE_reinterpret_cast (const char *,
+ service_context->context_data.get_buffer ());
+
+ TAO_InputCDR cdr (buf,
+ service_context->context_data.length ());
+
+ CORBA::Boolean byte_order;
+
+ if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
+ ACE_THROW (CORBA::BAD_PARAM ());
+
+ cdr.reset_byte_order (ACE_static_cast (int,byte_order));
+
+
+ if ((cdr >> ft_request_service_context) == 0)
+ ACE_THROW (CORBA::BAD_PARAM ());
+
+}
+
+FTRT::TransactionDepth
+get_transaction_depth_context(
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_NOT_USED)
+{
+ IOP::ServiceContext_var service_context;
+ ACE_TRY {
+ service_context = ri->get_request_service_context(FTRT::FT_TRANSACTION_DEPTH
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(-1);
+ }
+ ACE_CATCH (CORBA::BAD_PARAM, ex)
+ {
+ ACE_DEBUG((LM_DEBUG, "Received request without transaction depth context\n"));
+ return -1;
+ }
+ ACE_ENDTRY;
+
+ const char * buf =
+ ACE_reinterpret_cast (const char *,
+ service_context->context_data.get_buffer ());
+ TAO_InputCDR cdr (buf,
+ service_context->context_data.length ());
+
+ CORBA::Boolean byte_order;
+
+ if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), -1);
+
+ cdr.reset_byte_order (ACE_static_cast (int,byte_order));
+
+ FTRT::TransactionDepth result;
+ if ((cdr >> result) == 0)
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), -1);
+
+ return result;
+}
+
+FTRT::SequenceNumber
+get_sequence_number_context(
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_NOT_USED)
+{
+ FTRT::SequenceNumber result;
+ IOP::ServiceContext_var service_context;
+ service_context = ri->get_request_service_context(FTRT::FT_SEQUENCE_NUMBER
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ const char * buf =
+ ACE_reinterpret_cast (const char *,
+ service_context->context_data.get_buffer ());
+ TAO_InputCDR cdr (buf,
+ service_context->context_data.length ());
+
+ CORBA::Boolean byte_order;
+
+ if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
+ ACE_THROW (CORBA::BAD_PARAM ());
+
+ cdr.reset_byte_order (ACE_static_cast (int,byte_order));
+
+ if ((cdr >> result) == 0)
+ ACE_THROW (CORBA::BAD_PARAM ());
+
+ return result;
+}
+
+
+namespace {
+FtEventServiceInterceptor* interceptor;
+}
+
+FtEventServiceInterceptor::FtEventServiceInterceptor ()
+{
+ interceptor = this;
+}
+
+FtEventServiceInterceptor::~FtEventServiceInterceptor ()
+{
+}
+
+FtEventServiceInterceptor*
+FtEventServiceInterceptor::instance()
+{
+ return interceptor;
+}
+
+char *
+FtEventServiceInterceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup ("FtEventServiceInterceptor");
+}
+
+void
+FtEventServiceInterceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void
+FtEventServiceInterceptor::receive_request_service_contexts (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ ACE_TRY_EX(block1) {
+ FT::FTRequestServiceContext ft_request_service_context;
+ IOP::ServiceContext_var service_context;
+ retrieve_ft_request_context(ri,
+ service_context,
+ ft_request_service_context
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block1);
+
+ bool is_new_request = request_table_.is_new_request(
+ ft_request_service_context.client_id.in(),
+ ft_request_service_context.retention_id);
+
+ CORBA::Any cached_result;
+ if (!is_new_request) {
+ cached_result =
+ request_table_.get_result(ft_request_service_context.client_id.in());
+ }
+
+ Request_Context_Repository().set_cached_result(ri, cached_result
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block1);
+ Request_Context_Repository().set_ft_request_service_context(ri, service_context
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block1);
+
+ ACE_TRY_EX(block2) {
+
+ FTRT::TransactionDepth transaction_depth =
+ get_transaction_depth_context(ri
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block2);
+
+ Request_Context_Repository().set_transaction_depth(ri, transaction_depth
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block2);
+ }
+ ACE_CATCH (CORBA::BAD_PARAM, ex) {
+ }
+ ACE_ENDTRY;
+
+ FTRT::SequenceNumber sequence_no =
+ get_sequence_number_context(ri ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block1);
+
+ Request_Context_Repository().set_sequence_number(ri, sequence_no
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK_EX(block1);
+ }
+ ACE_CATCH (CORBA::BAD_PARAM, ex) {
+ }
+ ACE_ENDTRY;
+ return;
+}
+
+
+
+
+void
+FtEventServiceInterceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+}
+
+void
+FtEventServiceInterceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ FT::FTRequestServiceContext ft_request_service_context;
+ IOP::ServiceContext_var service_context;
+
+ ACE_TRY {
+ retrieve_ft_request_context(ri,
+ service_context,
+ ft_request_service_context
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ ACE_CATCH (CORBA::BAD_PARAM, ex) {
+ return;
+ }
+ ACE_ENDTRY;
+
+ request_table_.update(ft_request_service_context.client_id.in(),
+ ft_request_service_context.retention_id,
+ *(ri->result()) );
+}
+
+void
+FtEventServiceInterceptor::send_exception (
+ PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+#ifndef NDEBUG
+ CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_DEBUG((LM_DEBUG, "%s return Exception\n", operation.in()));
+#endif
+}
+
+void
+FtEventServiceInterceptor::send_other (
+ PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
+
+
+void
+FtEventServiceInterceptor::get_state(FtRtecEventChannelAdmin::CachedOptionResults& state)
+{
+ request_table_.get_state(state);
+}
+
+void
+FtEventServiceInterceptor::set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state)
+{
+ request_table_.set_state(state);
+}
+
+
+
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h
new file mode 100644
index 00000000000..b80eaac1904
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/FtEventServiceInterceptor.h
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file FtEventServiceInterceptor.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef FTEVENTSERVICEINTERCEPTOR_H
+#define FTEVENTSERVICEINTERCEPTOR_H
+#include "ace/Hash_Map_Manager_T.h"
+#include "tao/PortableInterceptorC.h"
+#include "tao/LocalObject.h"
+#include "tao/ORB.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Event_Channel_Impl;
+typedef FtRtecEventChannelAdmin::CachedResult CachedRequestInfo;
+
+class CachedRequestTable
+{
+public:
+ bool is_new_request(const ACE_CString& client_id, CORBA::Long retention_id);
+ int update(const ACE_CString& client_id,
+ CORBA::Long retention_id,
+ const CORBA::Any&);
+ CORBA::Any get_result(const ACE_CString& client_id);
+ void get_state(FtRtecEventChannelAdmin::CachedOptionResults& state);
+ void set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state);
+private:
+ typedef ACE_Hash_Map_Manager<ACE_CString, CachedRequestInfo, ACE_Thread_Mutex> TableImpl;
+ TableImpl table_;
+};
+
+
+class FtEventServiceInterceptor :
+ public PortableInterceptor::ServerRequestInterceptor
+{
+public:
+ FtEventServiceInterceptor();
+ ~FtEventServiceInterceptor();
+
+ static FtEventServiceInterceptor* instance();
+ virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_request_service_contexts (
+ PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_other (PortableInterceptor::ServerRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ void get_state(FtRtecEventChannelAdmin::CachedOptionResults& state);
+ void set_state(const FtRtecEventChannelAdmin::CachedOptionResults& state);
+private:
+ PortableInterceptor::Current_var pic(PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL);
+
+ CORBA::ORB_var orb_;
+ CachedRequestTable request_table_;
+};
+
+
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp
new file mode 100644
index 00000000000..ae6604475f3
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.cpp
@@ -0,0 +1,130 @@
+// $Id$
+
+#include "GroupInfoPublisher.h"
+#include "../Utils/resolve_init.h"
+#include "IOGR_Maker.h"
+#include "Identification_Service.h"
+#include "FTEC_Become_Primary_Listener.h"
+
+ACE_RCSID (EventChannel,
+ GroupInfoPublisher,
+ "$Id$")
+
+
+
+GroupInfoPublisherBase::GroupInfoPublisherBase()
+: primary_(false)
+{
+}
+
+
+
+void
+GroupInfoPublisherBase::subscribe(TAO_FTEC_Become_Primary_Listener* listener)
+{
+ subscribers_.push_back(listener);
+}
+
+void GroupInfoPublisherBase::set_naming_context(CosNaming::NamingContext_var naming_context)
+{
+ naming_context_ = naming_context;
+}
+
+bool
+GroupInfoPublisherBase::is_primary() const
+{
+ return primary_;
+}
+
+CORBA::Object_var
+GroupInfoPublisherBase::group_reference() const
+{
+ return iogr_;
+}
+
+FtRtecEventChannelAdmin::EventChannel_var
+GroupInfoPublisherBase::successor() const
+{
+ return successor_;
+}
+
+
+
+const GroupInfoPublisherBase::BackupList&
+GroupInfoPublisherBase::backups() const
+{
+ return backups_;
+}
+
+void
+GroupInfoPublisherBase::update(const FTRT::ManagerInfoList & info_list,
+ int my_position
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ bool become_primary = (my_position == 0 && !primary_);
+ primary_ = (my_position == 0);
+
+ /// create the object group
+ size_t len = info_list.length();
+
+ TAO_IOP::TAO_IOR_Manipulation::IORList iors;
+ iors.length(len);
+
+ size_t i;
+ for (i = 0; i < len; ++i) {
+ iors[i] = CORBA::Object::_duplicate(info_list[i].ior.in());
+ }
+
+ CORBA::Object_var obj =
+ IOGR_Maker::instance()->make_iogr(iors ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ iogr_ =
+ ::FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (primary_ && !CORBA::is_nil(naming_context_.in())) {
+ ACE_DEBUG((LM_DEBUG, "Registering to the Name Service\n"));
+ naming_context_->rebind(FTRTEC::Identification_Service::instance()->name(),
+ iogr_.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ /// check if sucessor changed
+ size_t successors_length = info_list.length() - my_position -1;
+
+ if (successors_length != backups_.length()) {
+ // successor changed, update successor
+ iors.length(successors_length);
+ for (i = 0; i < successors_length; ++i) {
+ iors[i] = CORBA::Object::_duplicate(info_list[i+ my_position+1].ior.in());
+
+ }
+
+ obj = IOGR_Maker::instance()->merge_iors(iors
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ successor_ = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ FtRtecEventChannelAdmin::EventChannel_var t = successor_;
+ ACE_CHECK;
+
+ // update backups
+ backups_.length(successors_length);
+ for (i = 0; i < successors_length; ++i) {
+ backups_[i] =
+ FtRtecEventChannelAdmin::EventChannel::_narrow(
+ info_list[i+ my_position+1].ior.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ }
+
+ if (become_primary) {
+ // notify the subscribers
+ for (i = 0; i < subscribers_.size(); ++i)
+ subscribers_[i]->become_primary();
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h
new file mode 100644
index 00000000000..f651149691a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/GroupInfoPublisher.h
@@ -0,0 +1,68 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file GroupInfoPublisher.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef GROUPINFOPUBLISHER_H
+#define GROUPINFOPUBLISHER_H
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "tao/PortableServer/PortableServerC.h"
+#include "ace/Vector_T.h"
+#include "ace/Singleton.h"
+#include "ace/Synch.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Become_Primary_Listener;
+
+class GroupInfoPublisherBase
+{
+public:
+ friend class ACE_Singleton<GroupInfoPublisherBase, ACE_Thread_Mutex>;
+
+ void subscribe(TAO_FTEC_Become_Primary_Listener* listener);
+ void set_naming_context(CosNaming::NamingContext_var naming_context);
+ bool is_primary() const;
+ CORBA::Object_var group_reference() const;
+
+ FtRtecEventChannelAdmin::EventChannel_var successor() const;
+
+ typedef FtRtecEventChannelAdmin::EventChannelList BackupList;
+ const BackupList& backups() const;
+
+ void update(const FTRT::ManagerInfoList & info_list,
+ int my_position
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ const PortableServer::ObjectId& object_id() const;
+ const CosNaming::Name& name() const;
+
+ void object_id(const char* oid);
+ void name(const char* nam);
+
+private:
+ GroupInfoPublisherBase();
+
+ bool primary_;
+ CosNaming::NamingContext_var naming_context_;
+ CORBA::Object_var iogr_;
+ FtRtecEventChannelAdmin::EventChannel_var successor_;
+ BackupList backups_;
+ typedef ACE_Vector<TAO_FTEC_Become_Primary_Listener*, 2> Subscribers;
+ Subscribers subscribers_;
+ PortableServer::ObjectId object_id_;
+ CosNaming::Name name_;
+};
+
+typedef ACE_Singleton<GroupInfoPublisherBase, ACE_Thread_Mutex> GroupInfoPublisher;
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp
new file mode 100644
index 00000000000..1fa0c207acc
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.cpp
@@ -0,0 +1,271 @@
+// $Id$
+
+#include "IOGR_Maker.h"
+#include "tao/MProfile.h"
+#include "tao/Profile.h"
+#include "tao/Stub.h"
+#include "tao/ORB_Core.h"
+#include "tao/Object_KeyC.h"
+#include "tao/Tagged_Components.h"
+#include <algorithm>
+#include "../Utils/resolve_init.h"
+#include "orbsvcs/FaultTolerance/FT_IOGR_Property.h"
+#include "GroupInfoPublisher.h"
+
+ACE_RCSID (EventChannel,
+ IOGR_Maker,
+ "$Id$")
+
+
+static IOGR_Maker* maker;
+
+IOGR_Maker::IOGR_Maker()
+{
+}
+
+void
+IOGR_Maker::init(CORBA::ORB_ptr orb
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ iorm_ = resolve_init<TAO_IOP::TAO_IOR_Manipulation>(orb,
+ TAO_OBJID_IORMANIPULATION
+ ACE_ENV_ARG_PARAMETER);
+ ft_tag_component_.ft_domain_id = "ft_eventchannel";
+ ft_tag_component_.object_group_id = 0;
+ ft_tag_component_.object_group_ref_version = 0;
+ maker = this;
+}
+
+
+IOGR_Maker*
+IOGR_Maker::instance()
+{
+ return maker;
+}
+
+CORBA::Object_ptr
+IOGR_Maker::merge_iors(const TAO_IOP::TAO_IOR_Manipulation::IORList& list
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Object_var obj;
+ if (list.length() != 1)
+ obj = iorm_->merge_iors(list ACE_ENV_ARG_PARAMETER);
+ else
+ obj = CORBA::Object::_duplicate(list[0].in());
+ return obj._retn();
+}
+
+
+CORBA::Object_ptr
+IOGR_Maker::make_iogr(const TAO_IOP::TAO_IOR_Manipulation::IORList& list
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Object_var obj = merge_iors(list ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ set_tag_components(obj.in(), list[0]
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+ return obj._retn();
+}
+
+
+void replace_key(char* ior, char* end_ior,
+ const TAO::ObjectKey& oldkey,
+ const TAO::ObjectKey& newkey)
+{
+ size_t keylen = oldkey.length();
+ ACE_ASSERT(keylen == newkey.length());
+
+ char* pos = ior;
+ const char* oldkey_begin = (const char*)oldkey.get_buffer();
+ const char* oldkey_end = oldkey_begin + keylen;
+
+ while ((pos = std::search(pos, end_ior,oldkey_begin, oldkey_end)) != end_ior) {
+ memcpy(pos, newkey.get_buffer(), keylen);
+ pos+= keylen;
+ }
+}
+
+
+CORBA::Object_ptr
+IOGR_Maker::forge_iogr(CORBA::Object_ptr obj
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Object_var merged;
+ // make a copy of the object
+ FtRtecEventChannelAdmin::EventChannel_var successor
+ = GroupInfoPublisher::instance()->successor();
+ if (! CORBA::is_nil(successor.in())) {
+ TAO::ObjectKey_var newkey = obj->_key();
+
+ CORBA::Object_var new_base = ior_replace_key(successor.in(), newkey.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil());
+
+ if (CORBA::is_nil( new_base.in() ))
+ return CORBA::Object::_nil();
+
+ TAO_MProfile& base_profiles = new_base->_stubobj ()->base_profiles ();
+
+ TAO_ORB_Core *orb_core = TAO_ORB_Core_instance ();
+
+ TAO_Stub *stub = orb_core->create_stub (CORBA::string_dup(obj->_stubobj ()->type_id.in ()), // give the id string
+ base_profiles
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+
+ // Make the stub memory allocation exception safe for the duration
+ // of this method.
+ TAO_Stub_Auto_Ptr safe_stub (stub);
+
+ // Create the CORBA level proxy
+ CORBA::Object_ptr temp_obj = CORBA::Object::_nil ();
+ ACE_NEW_THROW_EX (temp_obj,
+ CORBA::Object (safe_stub.get ()),
+ CORBA::NO_MEMORY ());
+
+ // Release ownership of the pointers protected by the auto_ptrs since they
+ // no longer need to be protected by this point.
+ stub = safe_stub.release ();
+
+
+ merged =
+ iorm_->add_profiles(obj, temp_obj
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+ }
+ else
+ merged = CORBA::Object::_duplicate(obj);
+
+ set_tag_components(merged.in(), obj
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(CORBA::Object::_nil ());
+
+ return merged._retn();
+}
+
+CORBA::Object_ptr
+IOGR_Maker::ior_replace_key(CORBA::Object_ptr obj,
+ const TAO::ObjectKey& key
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ TAO_OutputCDR out_cdr;
+ if (!(out_cdr << obj))
+ return CORBA::Object::_nil();
+
+ ACE_Message_Block mb;
+
+ ACE_CDR::consolidate(&mb, out_cdr.begin());
+
+ TAO::ObjectKey_var old_key = obj->_key(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(CORBA::Object::_nil ());
+
+ replace_key(mb.base(), mb.end(),
+ old_key.in(), key);
+
+ CORBA::Object_var new_obj;
+ TAO_InputCDR in_cdr(&mb);
+ if (!(in_cdr >> new_obj))
+ return CORBA::Object::_nil();
+ return new_obj._retn();
+}
+
+bool
+IOGR_Maker::copy_ft_group_component(CORBA::Object_ptr ior)
+{
+ // Get the MProfile
+ TAO_MProfile &mprofile =
+ ior->_stubobj ()->base_profiles ();
+
+ // Looking for a tagged component with a GROUP flag.
+ IOP::TaggedComponent tagged_components;
+ tagged_components.tag = IOP::TAG_FT_GROUP;
+
+ if (mprofile.profile_count () > 0)
+ {
+ // Get the Tagged Components
+ const TAO_Tagged_Components &pfile_tagged =
+ mprofile.get_profile (0)->tagged_components ();
+
+ if (pfile_tagged.get_component (tagged_components) == 1)
+ {
+
+ // Grab the object group version
+ // @@ NOTE: This involves an allocation and a dellocation. This is
+ // really bad.
+ TAO_InputCDR cdr (
+ ACE_reinterpret_cast (const char*,
+ tagged_components.component_data.get_buffer ()),
+ tagged_components.component_data.length ());
+ CORBA::Boolean byte_order;
+
+ if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0)
+ return false;
+
+ cdr.reset_byte_order (ACE_static_cast (int,byte_order));
+
+ return (cdr >> ft_tag_component_) != 0;
+ }
+ }
+
+ return false;
+}
+
+void
+IOGR_Maker::set_ft_domain_id(const char* domain_id)
+{
+ ft_tag_component_.ft_domain_id = domain_id;
+}
+
+void
+IOGR_Maker::set_group_id(CORBA::ULongLong id)
+{
+ ft_tag_component_.object_group_id = id;
+}
+
+void
+IOGR_Maker::set_ref_version(CORBA::ULong version)
+{
+ ft_tag_component_.object_group_ref_version = version;
+}
+
+CORBA::ULong
+IOGR_Maker::increment_ref_version()
+{
+ ACE_DEBUG((LM_DEBUG, "new object_group_ref_version = %d\n", ft_tag_component_.object_group_ref_version+1));
+ return ++ft_tag_component_.object_group_ref_version;
+}
+
+CORBA::ULong
+IOGR_Maker::get_ref_version() const
+{
+ return ft_tag_component_.object_group_ref_version;
+}
+
+
+void
+IOGR_Maker::set_tag_components(CORBA::Object_ptr merged, CORBA::Object_ptr primary
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ // set the primary
+ TAO_FT_IOGR_Property prop (ft_tag_component_);
+
+
+ prop.remove_primary_tag(merged
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ iorm_->set_primary (&prop, merged, primary
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ // Set the property
+ iorm_->set_property (&prop,
+ merged
+ ACE_ENV_ARG_PARAMETER);
+
+
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h
new file mode 100644
index 00000000000..fde6448cecc
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/IOGR_Maker.h
@@ -0,0 +1,68 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file IOGR_Maker.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef IOGR_MAKER_H
+#define IOGR_MAKER_H
+
+#include "orbsvcs/FT_CORBA_ORBC.h"
+#include "tao/IORManipulation/IORManipulation.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class IOGR_Maker
+{
+public:
+ IOGR_Maker();
+
+ void init(CORBA::ORB_ptr orb
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /// instance() will only return a valid object after an
+ /// instance is explicitly created by client and init() is called.
+ static IOGR_Maker* instance();
+
+ /// Create a new object reference by merging the profiles lists in the
+ /// supplied list of one or more object references.
+ CORBA::Object_ptr merge_iors(const TAO_IOP::TAO_IOR_Manipulation::IORList&
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /// Create a new IOGR (with FT_PRIMARY and FT_GROUP components) by merging
+ /// the profiles lists in the supplied list of one or more object references.
+ CORBA::Object_ptr make_iogr(const TAO_IOP::TAO_IOR_Manipulation::IORList&
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /// Make an new IOGR with obj as primary.
+ CORBA::Object_ptr forge_iogr(CORBA::Object_ptr obj
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ CORBA::Object_ptr ior_replace_key(CORBA::Object_ptr obj,
+ const TAO::ObjectKey& key
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ bool copy_ft_group_component(CORBA::Object_ptr obj);
+
+ void set_ft_domain_id(const char*);
+ void set_group_id(CORBA::ULongLong);
+ void set_ref_version(CORBA::ULong);
+ CORBA::ULong increment_ref_version();
+ CORBA::ULong get_ref_version() const;
+
+private:
+ void set_tag_components(CORBA::Object_ptr merged, CORBA::Object_ptr primary
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_IOP::TAO_IOR_Manipulation_var iorm_;
+ FT::TagFTGroupTaggedComponent ft_tag_component_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp
new file mode 100644
index 00000000000..86976a2854f
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.cpp
@@ -0,0 +1,92 @@
+// $Id$
+
+#include "Identification_Service.h"
+#include "../Utils/UUID.h"
+
+ACE_RCSID (EventChannel,
+ Identification_Service,
+ "$Id$")
+
+
+namespace FTRTEC {
+
+ namespace {
+ Identification_Service* service;
+ const char oid[] = "\xF8\xB3\xB1\xFE\xAC\xC6\x07\x11\x02\x0C\x02\x50\xEB\x05\x77\xD0";
+ }
+
+ Identification_Service::Identification_Service()
+ {
+ }
+
+ Identification_Service::~Identification_Service()
+ {
+ }
+
+
+ Identification_Service* Identification_Service::instance()
+ {
+ return service;
+ }
+
+ int Identification_Service::init(int argc, ACE_TCHAR* argv[])
+ {
+ if (service != 0)
+ return 0;
+ name_.length(1);
+ name_[0].id = CORBA::string_dup("FT_EventService");
+
+ while (argc > 1) {
+ if ( ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("-Object_ID")) == 0) {
+ --argc; ++argv;
+ if (argv[0][0] == '-') continue;
+ else if (argv[0][0] != '$') {
+ UUID uuid(argv[0]);
+ if (!uuid.is_valid())
+ ACE_ERROR_RETURN((LM_ERROR, "Invalid Object_ID\n"), -1);
+ object_id_.length(16);
+ uuid.to_binary(&object_id_[0]);
+ }
+ --argc; ++argv;
+ }
+ else if (ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("-Name")) ==0) {
+ --argc; ++argv;
+ if (argv[0][0] == '-') continue;
+ else if (argv[0][0] != '$') {
+ name_[0].id = CORBA::string_dup(argv[0]);
+ }
+ --argc; ++argv;
+ }
+ }
+
+ if (object_id_.length() == 0) {
+ // assign an default value for object id
+ object_id_.length(16);
+ memcpy(&object_id_[0], oid, 16);
+ }
+ service = this;
+ return 0;
+ }
+
+
+ const PortableServer::ObjectId& Identification_Service::object_id() const
+ {
+ return object_id_;
+ }
+
+
+ const CosNaming::Name& Identification_Service::name() const
+ {
+ return name_;
+ }
+
+ ACE_FACTORY_DEFINE (TAO_FTRTEC, Identification_Service);
+
+ ACE_STATIC_SVC_DEFINE (Identification_Service,
+ ACE_TEXT ("FTRTEC_Identification"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (Identification_Service),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h
new file mode 100644
index 00000000000..e2a4ee3e5f1
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Identification_Service.h
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Identification_Service.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef IDENTIFICATION_SERVICE_H
+#define IDENTIFICATION_SERVICE_H
+
+#include "ace/Service_Object.h"
+#include "PortableServer/PortableServerC.h"
+#include "orbsvcs/CosNamingC.h"
+#include "orbsvcs/FTRTC.h"
+#include "ftrtec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace FTRTEC
+{
+ class Identification_Service : public ACE_Service_Object
+ {
+ public:
+ Identification_Service();
+ ~Identification_Service();
+
+ /**
+ * This function returns 0 when init is not called yet.
+ */
+ static Identification_Service* instance();
+
+ int init(int argc, ACE_TCHAR* argv[]);
+
+ const PortableServer::ObjectId& object_id() const;
+ const CosNaming::Name& name() const;
+ private:
+ PortableServer::ObjectId object_id_;
+ CosNaming::Name name_;
+ };
+
+
+ ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Identification_Service)
+ ACE_STATIC_SVC_REQUIRE(Identification_Service);
+ ACE_FACTORY_DECLARE (TAO_FTRTEC, Identification_Service)
+}
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp
new file mode 100644
index 00000000000..0b3db457a8d
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.cpp
@@ -0,0 +1,33 @@
+// $Id$
+
+#include "ProxyConsumerStateWorker.h"
+#include "orbsvcs/Event/EC_Event_Channel_Base.h"
+#include "orbsvcs/Event/EC_ProxySupplier.h"
+
+ACE_RCSID (EventChannel,
+ ProxyConsumerStateWorker,
+ "$Id$")
+
+ProxyConsumerStateWorker::ProxyConsumerStateWorker
+ (FtRtecEventChannelAdmin::ProxyConsumerStates& states)
+: consumerStates_(states)
+{
+}
+
+ProxyConsumerStateWorker::~ProxyConsumerStateWorker()
+{
+}
+
+void ProxyConsumerStateWorker::set_size(size_t size)
+{
+ consumerStates_.length(size);
+ index_ = 0;
+}
+
+void ProxyConsumerStateWorker::work(TAO_EC_ProxyPushConsumer* object
+ ACE_ENV_ARG_DECL)
+{
+ TAO_FTEC_ProxyPushConsumer* proxy =
+ static_cast<TAO_FTEC_ProxyPushConsumer*>(object);
+ proxy->get_state(consumerStates_[index_++]);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h
new file mode 100644
index 00000000000..772fd16538e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxyConsumerStateWorker.h
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ProxyConsumerStateWorker.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef PROXYCONSUMERSTATEWORKER_H
+#define PROXYCONSUMERSTATEWORKER_H
+
+#include "orbsvcs/Event/EC_SupplierAdmin.h"
+#include "orbsvcs/ESF/ESF_Worker.h"
+#include "FTEC_ProxyConsumer.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class ProxyConsumerStateWorker : public TAO_ESF_Worker<TAO_EC_ProxyPushConsumer>
+{
+public:
+ ProxyConsumerStateWorker(FtRtecEventChannelAdmin::ProxyConsumerStates& states);
+ ~ProxyConsumerStateWorker();
+
+ virtual void set_size(size_t size);
+ virtual void work(TAO_EC_ProxyPushConsumer* object
+ ACE_ENV_ARG_DECL);
+private:
+ int index_;
+ FtRtecEventChannelAdmin::ProxyConsumerStates& consumerStates_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp
new file mode 100644
index 00000000000..af864699aac
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.cpp
@@ -0,0 +1,35 @@
+// $Id$
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "ProxySupplierStateWorker.h"
+#include "orbsvcs/Event/EC_Event_Channel_Base.h"
+#include "orbsvcs/Event/EC_ProxyConsumer.h"
+
+ACE_RCSID (EventChannel,
+ ProxySupplierStateWorker,
+ "$Id$")
+
+
+ProxySupplierStateWorker::ProxySupplierStateWorker
+ (FtRtecEventChannelAdmin::ProxySupplierStates& states)
+: supplierStates_(states)
+{
+}
+
+ProxySupplierStateWorker::~ProxySupplierStateWorker()
+{
+}
+
+void ProxySupplierStateWorker::set_size(size_t size)
+{
+ supplierStates_.length(size);
+ index_ = 0;
+}
+
+void ProxySupplierStateWorker::work(TAO_EC_ProxyPushSupplier* object
+ ACE_ENV_ARG_DECL)
+{
+ TAO_FTEC_ProxyPushSupplier* proxy =
+ static_cast<TAO_FTEC_ProxyPushSupplier*>(object);
+ proxy->get_state(supplierStates_[index_++]);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h
new file mode 100644
index 00000000000..aa6681719de
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ProxySupplierStateWorker.h
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ProxySupplierStateWorker.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef PROXYSUPPLIERSTATEWORKER_H
+#define PROXYSUPPLIERSTATEWORKER_H
+
+#include "orbsvcs/Event/EC_ConsumerAdmin.h"
+#include "orbsvcs/ESF/ESF_Worker.h"
+#include "FTEC_ProxySupplier.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class ProxySupplierStateWorker : public TAO_ESF_Worker<TAO_EC_ProxyPushSupplier>
+{
+public:
+ ProxySupplierStateWorker(FtRtecEventChannelAdmin::ProxySupplierStates& states);
+ ~ProxySupplierStateWorker();
+
+ virtual void set_size(size_t size);
+ virtual void work(TAO_EC_ProxyPushSupplier* object
+ ACE_ENV_ARG_DECL);
+private:
+ int index_;
+ FtRtecEventChannelAdmin::ProxySupplierStates& supplierStates_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp
new file mode 100644
index 00000000000..3a63e2a495b
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.cpp
@@ -0,0 +1,150 @@
+// $Id$
+
+#include "Replication_Service.h"
+#include "AMI_Replication_Strategy.h"
+#include "Basic_Replication_Strategy.h"
+#include "FTEC_ORBInitializer.h"
+
+ACE_RCSID (EventChannel,
+ Replication_Service,
+ "$Id$")
+
+
+
+
+namespace FTRTEC
+{
+ namespace {
+ auto_ptr<Replication_Strategy> replication_strategy;
+ Replication_Service* service;
+ }
+
+ Replication_Service* Replication_Service::instance()
+ {
+ return service;
+ }
+
+ Replication_Service::Replication_Service()
+ {
+ service = this;
+ }
+
+ Replication_Service::~Replication_Service()
+ {
+ }
+
+ int Replication_Service::init (int argc, ACE_TCHAR* argv[])
+ {
+ ACE_TRACE ("Replication_Service::init");
+
+ static int initialized = 0;
+
+ // Only allow initialization once.
+ if (initialized)
+ return 0;
+
+ initialized = 1;
+
+ // Parse any service configurator parameters.
+ if (argc > 0 && ACE_OS::strcasecmp (argv[0], ACE_LIB_TEXT("AMI")) == 0)
+ replication_strategy.reset(new AMI_Replication_Strategy);
+ else
+ replication_strategy.reset(new Basic_Replication_Strategy);
+
+ ACE_TRY_NEW_ENV
+ {
+ PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
+ PortableInterceptor::ORBInitializer::_nil ();
+ PortableInterceptor::ORBInitializer_var orb_initializer;
+
+ /// Register the RTCORBA ORBInitializer.
+ ACE_NEW_THROW_EX (temp_orb_initializer,
+ FTEC_ORBInitializer,
+ CORBA::NO_MEMORY ());
+ ACE_TRY_CHECK;
+ orb_initializer = temp_orb_initializer;
+
+ PortableInterceptor::register_orb_initializer (orb_initializer.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Unexpected exception caught while "
+ "initializing the TransactionDepth");
+ return 1;
+ }
+ ACE_ENDTRY;
+ return 0;
+ }
+
+
+ void Replication_Service::become_primary()
+ {
+ Replication_Strategy* strategy =
+ replication_strategy->make_primary_strategy();
+ if (strategy == 0)
+ ACE_THROW(CORBA::NO_MEMORY());
+
+ if (replication_strategy.get() != strategy) {
+ replication_strategy.reset(strategy);
+ }
+ }
+
+ void Replication_Service::check_validity(ACE_ENV_SINGLE_ARG_DECL)
+ {
+ replication_strategy->check_validity(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+
+ void Replication_Service::replicate_request(const FtRtecEventChannelAdmin::Operation& update,
+ RollbackOperation rollback
+ ACE_ENV_ARG_DECL)
+ {
+ TAO_OutputCDR cdr;
+ cdr << update;
+
+ ACE_Message_Block mb;
+ ACE_CDR::consolidate(&mb, cdr.begin());
+ FTRT::State state(mb.length(), &mb);
+ //FT::State state;
+
+ replication_strategy->replicate_request(
+ state,
+ rollback,
+ update.object_id
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+ int Replication_Service::acquire_read (void)
+ {
+ int r = replication_strategy->acquire_read();
+ ACE_DEBUG((LM_DEBUG, "Read Lock acquired %d\n", r));
+ return r;
+ }
+
+ int Replication_Service::acquire_write (void)
+ {
+ int r= replication_strategy->acquire_write();
+ ACE_DEBUG((LM_DEBUG, "Write Lock acqured %d\n", r));
+ return r;
+ }
+
+ int Replication_Service::release (void)
+ {
+ int r= replication_strategy->release();
+ ACE_DEBUG((LM_DEBUG, "Lock Released %d\n", r));
+ return r;
+ }
+
+ ACE_FACTORY_DEFINE (TAO_FTRTEC, Replication_Service);
+
+ ACE_STATIC_SVC_DEFINE (Replication_Service,
+ ACE_TEXT ("FTRTEC_Replication"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (Replication_Service),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h
new file mode 100644
index 00000000000..0af8d63cf78
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Service.h
@@ -0,0 +1,62 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Replication_Service.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef REPLCATION_SERVICE_H
+#define REPLCATION_SERVICE_H
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "FTEC_Become_Primary_Listener.h"
+#include "tao/PortableInterceptorC.h"
+#include "ace/Service_Object.h"
+#include "ftrtec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace FTRTEC
+{
+ class Replication_Service : public TAO_FTEC_Become_Primary_Listener,
+ public ACE_Service_Object
+ {
+ public:
+ static Replication_Service* instance();
+
+ Replication_Service();
+ ~Replication_Service();
+
+ virtual int init (int argc,
+ ACE_TCHAR* []);
+
+ virtual void become_primary();
+
+ void check_validity(ACE_ENV_SINGLE_ARG_DECL);
+
+ typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation)
+ (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ void replicate_request(const FtRtecEventChannelAdmin::Operation& update,
+ RollbackOperation rollback
+ ACE_ENV_ARG_DECL);
+
+ int acquire_read (void);
+ int acquire_write (void);
+ int release (void);
+ };
+
+
+ ACE_STATIC_SVC_DECLARE_EXPORT (TAO_FTRTEC, Replication_Service)
+ ACE_STATIC_SVC_REQUIRE(Replication_Service);
+ ACE_FACTORY_DECLARE (TAO_FTRTEC, Replication_Service)
+}
+
+#endif //REPLCATION_SERVICE_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp
new file mode 100644
index 00000000000..30f23c60bef
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.cpp
@@ -0,0 +1,31 @@
+// $Id$
+
+#include "Replication_Strategy.h"
+#include "FTEC_Event_Channel.h"
+
+ACE_RCSID (EventChannel,
+ Replication_Strategy,
+ "$Id$")
+
+
+Replication_Strategy::Replication_Strategy()
+{
+}
+
+
+Replication_Strategy::~Replication_Strategy()
+{
+}
+
+
+void
+Replication_Strategy::check_validity(ACE_ENV_SINGLE_ARG_DECL)
+{
+}
+
+
+Replication_Strategy*
+Replication_Strategy::make_primary_strategy()
+{
+ return this;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h
new file mode 100644
index 00000000000..9bf56d85384
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Replication_Strategy.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Replication_Strategy.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef REPLICATION_STRATEGY_H
+#define REPLICATION_STRATEGY_H
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "tao/PortableInterceptorC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Event_Channel_Impl;
+class Replication_Strategy
+{
+public:
+ Replication_Strategy();
+ virtual ~Replication_Strategy();
+
+ virtual void check_validity(ACE_ENV_SINGLE_ARG_DECL);
+
+ typedef void (FtRtecEventChannelAdmin::EventChannelFacade::*RollbackOperation)
+ (const FtRtecEventChannelAdmin::ObjectId& ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+
+ virtual void replicate_request(const FTRT::State& state,
+ RollbackOperation rollback,
+ const FtRtecEventChannelAdmin::ObjectId& oid
+ ACE_ENV_ARG_DECL)=0;
+
+ virtual Replication_Strategy* make_primary_strategy();
+
+ virtual int acquire_read (void)=0;
+ virtual int acquire_write (void)=0;
+ virtual int release (void)=0;
+
+};
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp
new file mode 100644
index 00000000000..7c87e793d5e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.cpp
@@ -0,0 +1,279 @@
+// $Id$
+
+#include "Request_Context_Repository.h"
+#include "../Utils/resolve_init.h"
+#include "../Utils/UUID.h"
+
+ACE_RCSID (EventChannel,
+ Request_Context_Repository,
+ "$Id$")
+
+namespace {
+PortableInterceptor::SlotId object_id_slot;
+PortableInterceptor::SlotId cached_result_slot;
+PortableInterceptor::SlotId seq_num_slot;
+PortableInterceptor::SlotId ft_request_service_context_slot;
+PortableInterceptor::SlotId transaction_depth_slot;
+CORBA::ORB_ptr orb;
+}
+
+
+void
+Request_Context_Repository::allocate_slots(PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL)
+{
+ object_id_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ cached_result_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ seq_num_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ft_request_service_context_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ transaction_depth_slot = info->allocate_slot_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+void
+Request_Context_Repository::init(CORBA::ORB_ptr the_orb)
+{
+ orb = the_orb;
+}
+
+void Request_Context_Repository::generate_object_id(FtRtecEventChannelAdmin::ObjectId& oid)
+{
+ oid.length(sizeof(UUID));
+ UUID::create(oid.get_buffer());
+ set_object_id(oid
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void
+Request_Context_Repository::set_object_id(const FtRtecEventChannelAdmin::ObjectId& object_id
+ ACE_ENV_ARG_DECL)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Any a;
+ a <<= object_id;
+ pic->set_slot(object_id_slot, a
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK;
+}
+
+FtRtecEventChannelAdmin::ObjectId_var
+get_object_id(CORBA::Any_var a
+ ACE_ENV_ARG_DECL)
+{
+ FtRtecEventChannelAdmin::ObjectId* object_id;
+ FtRtecEventChannelAdmin::ObjectId_var result;
+
+ if ((*a >>= object_id) ==0)
+ ACE_THROW_RETURN(CORBA::NO_MEMORY(), result);
+
+
+ ACE_NEW_THROW_EX(result,
+ FtRtecEventChannelAdmin::ObjectId(*object_id),
+ CORBA::NO_MEMORY());
+ return result;
+}
+
+
+FtRtecEventChannelAdmin::ObjectId_var
+Request_Context_Repository::get_object_id(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var());
+
+ CORBA::Any_var a = pic->get_slot(object_id_slot
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var());
+
+ return ::get_object_id(a
+ ACE_ENV_ARG_PARAMETER);
+}
+
+FtRtecEventChannelAdmin::ObjectId_var
+Request_Context_Repository::get_object_id(PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any_var a = ri->get_slot(object_id_slot
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(FtRtecEventChannelAdmin::ObjectId_var);
+
+ return ::get_object_id(a
+ ACE_ENV_ARG_PARAMETER);
+
+}
+
+void
+Request_Context_Repository::set_cached_result(PortableInterceptor::ServerRequestInfo_ptr ri,
+ const CORBA::Any& result
+ ACE_ENV_ARG_DECL)
+{
+ ri->set_slot(cached_result_slot, result ACE_ENV_ARG_PARAMETER);
+}
+
+CORBA::Any_ptr
+Request_Context_Repository::get_cached_result(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ CORBA::Any_var a = pic->get_slot(cached_result_slot
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ return a._retn();
+}
+
+bool Request_Context_Repository::is_executed_request(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Any_var any = get_cached_result(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN(false);
+
+ CORBA::TypeCode_var type = any->type();
+ return type->kind() != CORBA::tk_null;
+}
+
+void Request_Context_Repository::set_sequence_number(PortableInterceptor::ServerRequestInfo_ptr ri,
+ FTRT::SequenceNumber seq_num
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any a;
+
+ a <<= seq_num;
+
+ ri->set_slot(seq_num_slot, a ACE_ENV_ARG_PARAMETER);
+}
+
+void
+Request_Context_Repository::set_sequence_number(FTRT::SequenceNumber seq_num
+ ACE_ENV_ARG_DECL)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Any a;
+
+ a <<= seq_num;
+
+ pic->set_slot(seq_num_slot, a ACE_ENV_ARG_PARAMETER);
+}
+
+
+FTRT::SequenceNumber
+Request_Context_Repository::get_sequence_number(ACE_ENV_SINGLE_ARG_DECL)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ CORBA::Any_var a = pic->get_slot(seq_num_slot ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ FTRT::SequenceNumber result = 0;
+ *a >>= result;
+ return result;
+}
+
+FTRT::SequenceNumber
+Request_Context_Repository::get_sequence_number(
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any_var a = ri->get_slot(seq_num_slot ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ FTRT::SequenceNumber result = 0;
+ *a >>= result;
+ return result;
+}
+
+void
+Request_Context_Repository::set_ft_request_service_context(
+ PortableInterceptor::ServerRequestInfo_ptr ri,
+ IOP::ServiceContext_var service_context
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any a;
+ a <<= service_context.in();
+ ri->set_slot(ft_request_service_context_slot,a
+ ACE_ENV_ARG_PARAMETER);
+}
+
+CORBA::Any_var
+Request_Context_Repository::get_ft_request_service_context(
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+{
+ return ri->get_slot(ft_request_service_context_slot
+ ACE_ENV_ARG_PARAMETER);
+}
+
+void
+Request_Context_Repository::set_transaction_depth(
+ PortableInterceptor::ServerRequestInfo_ptr ri,
+ FTRT::TransactionDepth depth
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any a;
+ a <<= depth;
+ ri->set_slot(transaction_depth_slot,a
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void
+Request_Context_Repository::set_transaction_depth(
+ FTRT::TransactionDepth depth
+ ACE_ENV_ARG_DECL)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Any a;
+ a <<= depth;
+ pic->set_slot(transaction_depth_slot,a
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+
+FTRT::TransactionDepth
+Request_Context_Repository::get_transaction_depth(
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Any_var a = ri->get_slot(transaction_depth_slot
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ FTRT::TransactionDepth result=0;
+ a >>= result;
+ return result;
+
+}
+
+FTRT::TransactionDepth
+Request_Context_Repository::get_transaction_depth(
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableInterceptor::Current_var pic =
+ resolve_init<PortableInterceptor::Current>(orb, "PICurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Any_var a = pic->get_slot(transaction_depth_slot
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FTRT::TransactionDepth result=0;
+ a >>= result;
+ return result;
+
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h
new file mode 100644
index 00000000000..2818a3bf747
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Request_Context_Repository.h
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Request_Context_Repository.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef REQUEST_CONTEXT_REPOSITORY_H
+#define REQUEST_CONTEXT_REPOSITORY_H
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "tao/PortableInterceptorC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_FTEC_Event_Channel_Impl;
+
+
+/**
+ * @class Request_Context_Repository
+ *
+ * @brief This class is used to transfer the information between thread context
+ * information and the request context in the portable interceptors. It
+ * encapulates the PICurrent to provide a type safe way for the transfer of
+ * FTEC specific information inside and outside protable interceptors.
+ */
+class Request_Context_Repository
+{
+public:
+
+ void init(CORBA::ORB_ptr orb);
+
+ /**
+ * Used by ORBInitializer to allocate required slots for
+ * FTEC.
+ */
+ void allocate_slots(PortableInterceptor::ORBInitInfo_ptr info
+ ACE_ENV_ARG_DECL);
+
+
+ void generate_object_id(FtRtecEventChannelAdmin::ObjectId& object_id
+ ACE_ENV_ARG_DECL);
+ void set_object_id(const FtRtecEventChannelAdmin::ObjectId& object_id
+ ACE_ENV_ARG_DECL);
+ FtRtecEventChannelAdmin::ObjectId_var get_object_id(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+ FtRtecEventChannelAdmin::ObjectId_var
+ get_object_id(PortableInterceptor::ServerRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL);
+
+ void set_cached_result(PortableInterceptor::ServerRequestInfo_ptr ri,
+ const CORBA::Any& result
+ ACE_ENV_ARG_DECL);
+
+ CORBA::Any_ptr get_cached_result(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+ bool is_executed_request();
+
+ void set_sequence_number(PortableInterceptor::ServerRequestInfo_ptr ri,
+ FTRT::SequenceNumber
+ ACE_ENV_ARG_DECL);
+
+ void set_sequence_number(FTRT::SequenceNumber
+ ACE_ENV_ARG_DECL);
+ FTRT::SequenceNumber get_sequence_number(PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL);
+
+ FTRT::SequenceNumber get_sequence_number(ACE_ENV_SINGLE_ARG_DECL);
+
+ void set_ft_request_service_context(
+ PortableInterceptor::ServerRequestInfo_ptr ri,
+ IOP::ServiceContext_var service_context
+ ACE_ENV_ARG_DECL);
+
+ CORBA::Any_var get_ft_request_service_context(
+ PortableInterceptor::ClientRequestInfo_ptr
+ riACE_ENV_ARG_DECL);
+
+ void set_transaction_depth(
+ PortableInterceptor::ServerRequestInfo_ptr ri,
+ FTRT::TransactionDepth depth
+ ACE_ENV_ARG_DECL);
+
+ void set_transaction_depth(
+ FTRT::TransactionDepth depth
+ ACE_ENV_ARG_DECL);
+
+ FTRT::TransactionDepth get_transaction_depth(
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+
+ FTRT::TransactionDepth get_transaction_depth(
+ PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL);
+};
+
+#endif /// REQUEST_CONTEXT_REPOSITORY_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp
new file mode 100644
index 00000000000..1e59eda5240
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.cpp
@@ -0,0 +1,86 @@
+// $Id$
+
+#include "FTEC_Fault_Listener.h"
+#include "SCTP_Fault_Detector.h"
+
+ACE_RCSID (EventChannel,
+ SCTP_Fault_Detector,
+ "$Id$")
+
+#ifndef SCTP_HEARTBEAT_ITVL
+#define SCTP_HEARTBEAT_ITVL 19
+#endif
+#ifndef SOL_SCTP
+#define SOL_SCTP 132
+#endif
+
+
+SCTP_Connector::SCTP_Connector()
+: heart_beat_(0)
+{
+}
+
+int
+SCTP_Connector::connect (ACE_SOCK_SEQPACK_Association &new_association,
+ const ACE_Addr &remote_sap,
+ const ACE_Time_Value *timeout,
+ const ACE_Addr &local_sap,
+ int reuse_addr,
+ int /* flags */,
+ int /* perms */,
+ int protocol)
+{
+ ACE_TRACE ("SCTP_Connector::connect");
+
+ if (this->shared_open (new_association,
+ remote_sap.get_type (),
+ protocol,
+ reuse_addr) == -1)
+ return -1;
+ else if (this->shared_connect_start (new_association,
+ timeout,
+ local_sap) == -1)
+ return -1;
+
+ if (new_association.set_option(SOL_SCTP,
+ SCTP_HEARTBEAT_ITVL,
+ &heart_beat_,
+ sizeof(heart_beat_)) == -1)
+ return -1;
+
+ int result = ACE_OS::connect (new_association.get_handle (),
+ ACE_reinterpret_cast (sockaddr *,
+ remote_sap.get_addr ()),
+ remote_sap.get_size ());
+
+ return this->shared_connect_finish (new_association,
+ timeout,
+ result);
+}
+
+
+inline void SCTP_Connector::set_heart_beat(int hb)
+{
+ heart_beat_ = hb;
+}
+
+
+STCP_Fault_Detector::~STCP_Fault_Detector()
+{
+}
+
+
+int STCP_Fault_Detector::parse_conf(int argc, char** argv)
+{
+ ACE_TRACE ("STCP_Fault_Detector::parse_conf");
+
+ for (int curarg = 0; curarg < argc; curarg++)
+ if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-HeartBeat")) == 0)
+ {
+ curarg++;
+ if (curarg < argc)
+ connector_.set_heart_beat(atoi(argv[curarg]));
+ }
+ return 0;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h
new file mode 100644
index 00000000000..abc33a9a1fb
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/SCTP_Fault_Detector.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file SCTP_Fault_Detector.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef SCTP_FAULT_DETECTOR_H
+#define SCTP_FAULT_DETECTOR_H
+
+#include "ace/Acceptor.h"
+#include "ace/Connector.h"
+#include "ace/SOCK_SEQPACK_Association.h"
+#include "ace/SOCK_SEQPACK_Acceptor.h"
+#include "ace/SOCK_SEQPACK_Connector.h"
+#include "ConnectionHandler_T.h"
+#include "Fault_Detector_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+// make sure that the code compiles cleanly even if SCTP is not
+// available. If SCTP is not installed, program will exit early in
+// main() with an error message
+#ifdef ACE_HAS_SCTP
+extern "C" {
+#include <netinet/sctp.h>
+};
+#else
+#ifndef IPPROTO_SCTP
+#define IPPROTO_SCTP 132
+#endif // !IPPROTO_SCTP
+#define SCTP_NODELAY 1
+#endif // ACE_HAS_SCTP
+
+
+typedef ACE_Acceptor<ConnectionAcceptHandler<ACE_SOCK_SEQPACK_ASSOCIATION>, ACE_SOCK_SEQPACK_ACCEPTOR>
+ SCTP_ConnectionAcceptHandler;
+typedef ConnectionDetectHandler<ACE_SOCK_SEQPACK_ASSOCIATION> STCP_ConnectionDetectHandler;
+
+class SCTP_Connector : public ACE_SOCK_SEQPACK_Connector
+{
+public:
+ SCTP_Connector();
+ int connect (ACE_SOCK_SEQPACK_Association &new_association,
+ const ACE_Addr &remote_sap,
+ const ACE_Time_Value *timeout = 0,
+ const ACE_Addr &local_sap = ACE_Addr::sap_any,
+ int reuse_addr = 0,
+ int flags = 0,
+ int perms = 0,
+ int protocol = 132);
+ void set_heart_beat(int hb);
+private:
+ int heart_beat_;
+};
+
+class STCP_Fault_Detector : public Fault_Detector_T<
+ SCTP_ConnectionAcceptHandler,
+ SCTP_Connector,
+ STCP_ConnectionDetectHandler >
+{
+public:
+ virtual ~STCP_Fault_Detector();
+private:
+ virtual int parse_conf(int argc, char** argv);
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp
new file mode 100644
index 00000000000..12d8de6e9e3
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.cpp
@@ -0,0 +1,138 @@
+// $Id$
+
+#include "Set_Update_Interceptor.h"
+#include "orbsvcs/FTRTC.h"
+#include "Request_Context_Repository.h"
+
+ACE_RCSID (EventChannel,
+ Set_Update_Intercetpor,
+ "$Id$")
+
+TAO_Set_Update_Interceptor::
+TAO_Set_Update_Interceptor ()
+: myname_ ("TAO_Set_Update_Interceptor")
+{
+}
+
+TAO_Set_Update_Interceptor::~TAO_Set_Update_Interceptor (void)
+{
+}
+
+char *
+TAO_Set_Update_Interceptor::name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+TAO_Set_Update_Interceptor::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void
+TAO_Set_Update_Interceptor::send_poll (
+ PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Do Nothing
+}
+
+void
+TAO_Set_Update_Interceptor::send_request (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::String_var operation = ri->operation (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (strcmp(operation.in(), "set_update")==0 ||
+ strcmp(operation.in(), "oneway_set_update") ==0) {
+ CORBA::Any_var a = Request_Context_Repository().get_ft_request_service_context(ri
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ IOP::ServiceContext* sc;
+
+ if ((*a >>= sc) ==0)
+ return;
+
+ ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ FTRT::TransactionDepth transaction_depth =
+ Request_Context_Repository().get_transaction_depth(ri);
+ TAO_OutputCDR cdr;
+ ACE_Message_Block mb;
+
+ if (transaction_depth) {
+ if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)))
+ ACE_THROW (CORBA::MARSHAL ());
+
+ // Add Transaction Depth Context
+ if ((cdr << transaction_depth) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+ sc->context_id = FTRT::FT_TRANSACTION_DEPTH;
+
+ ACE_CDR::consolidate(&mb, cdr.begin());
+ sc->context_data.replace(mb.length(), &mb);
+
+ ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ cdr.reset();
+ }
+
+ // Add Sequence Number Context
+
+ FTRT::SequenceNumber sequence_number =
+ Request_Context_Repository().get_sequence_number(ri ACE_ENV_ARG_PARAMETER);
+
+ ACE_DEBUG((LM_DEBUG, "send_request : sequence_number = %d\n", sequence_number));
+ if (sequence_number != 0) {
+ if (!(cdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)))
+ ACE_THROW (CORBA::MARSHAL ());
+ if ((cdr << sequence_number) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+ sc->context_id = FTRT::FT_SEQUENCE_NUMBER;
+
+ ACE_CDR::consolidate(&mb, cdr.begin());
+ sc->context_data.replace(mb.length(), &mb);
+
+ ri->add_request_service_context (*sc, 0 ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ }
+}
+
+void
+TAO_Set_Update_Interceptor::receive_reply (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_UNUSED_ARG(ri);
+}
+
+void
+TAO_Set_Update_Interceptor::receive_other (
+ PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+}
+
+void
+TAO_Set_Update_Interceptor::receive_exception (
+ PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ ACE_UNUSED_ARG(ri);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h
new file mode 100644
index 00000000000..45265241b33
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Set_Update_Interceptor.h
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Set_Update_Interceptor.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_SET_UPDATE_INTERCEPTOR_H
+#define TAO_SET_UPDATE_INTERCEPTOR_H
+
+#include "tao/PortableInterceptorC.h"
+#include "tao/LocalObject.h"
+//#include "tao/TimeBaseC.h"
+#include "ace/Atomic_Op.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+// This is to remove "inherits via dominance" warnings from MSVC.
+#if defined (_MSC_VER)
+# pragma warning (disable : 4250)
+#endif /* _MSC_VER */
+
+/**
+ * @class TAO_FT_ClientRequest_Interceptor
+ *
+ * @brief Interceptors for adding service context to set_update() and
+ * oneway_set_update() methods.
+ *
+ */
+
+class TAO_Set_Update_Interceptor
+ : public virtual PortableInterceptor::ClientRequestInterceptor,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ TAO_Set_Update_Interceptor ();
+ // ctor.
+
+ virtual ~TAO_Set_Update_Interceptor ();
+ // dtor.
+
+ virtual char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_poll (PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_other (PortableInterceptor::ClientRequestInfo_ptr
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+};
+
+#endif // TAO_SET_UPDATE_INTERCEPTOR_H
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp
new file mode 100644
index 00000000000..96709d233ba
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.cpp
@@ -0,0 +1,59 @@
+// $Id$
+
+#include "Update_Manager.h"
+
+ACE_RCSID (EventChannel,
+ Update_Manager,
+ "$Id$")
+
+
+Update_Manager::Update_Manager(ACE_Auto_Event& evt,
+ int num_backups,
+ int transaction_depth,
+ bool& success)
+: evt_(evt)
+, replied_(num_backups)
+, suicide_condition_(num_backups)
+, num_backups_(num_backups)
+, transaction_level_(transaction_depth)
+, success_(success)
+{
+ suicide_condition_.flip();
+ signal_condition_.resize(transaction_depth, true);
+ signal_condition_.resize(num_backups);
+}
+
+Update_Manager::~Update_Manager()
+{
+}
+
+void Update_Manager::handle_reply(int id)
+{
+ ACE_Guard<ACE_Thread_Mutex> guard(mutex_);
+ replied_[id] = true;
+
+ if ((replied_ & signal_condition_) == signal_condition_) {
+ success_ = true;
+ evt_.signal();
+ }
+ if (replied_ == suicide_condition_)
+ delete this;
+}
+
+void Update_Manager::handle_exception(int id)
+{
+ ACE_Guard<ACE_Thread_Mutex> guard(mutex_);
+ replied_[id] = true;
+ ++transaction_level_;
+
+ if (num_backups_ > transaction_level_) {
+ signal_condition_[transaction_level_]=true;
+ }
+ else {
+ success_ = false;
+ evt_.signal();
+ }
+ if (replied_ == suicide_condition_)
+ delete this;
+}
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h
new file mode 100644
index 00000000000..1bb99332f38
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Update_Manager.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Update_Manager.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef UPDATE_MANAGER_H
+#define UPDATE_MANAGER_H
+
+#include "ace/Synch_T.h"
+#include "Dynamic_Bitset.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+typedef Dynamic_Bitset bit_vector;
+
+
+class Update_Manager
+{
+public:
+ Update_Manager(ACE_Auto_Event& evt,
+ int num_backups,
+ int transaction_depth,
+ bool& success);
+ ~Update_Manager();
+
+ void handle_reply(int id);
+ void handle_exception(int id);
+
+private:
+ ACE_Auto_Event& evt_;
+ bit_vector replied_;
+ bit_vector signal_condition_;
+ bit_vector suicide_condition_;
+ int num_backups_;
+ int transaction_level_;
+ bool& success_;
+ ACE_Thread_Mutex mutex_;
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp
new file mode 100644
index 00000000000..f540dee6335
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.cpp
@@ -0,0 +1,95 @@
+// $Id$
+
+#include "UpdateableHandler.h"
+#include "Update_Manager.h"
+#include "AMI_Primary_Replication_Strategy.h"
+#include "../Utils/resolve_init.h"
+
+ACE_RCSID (EventChannel,
+ UpdateableHandler,
+ "$Id$")
+
+
+UpdateableHandler::UpdateableHandler(AMI_Primary_Replication_Strategy* strategy)
+: strategy_(strategy)
+{
+}
+
+UpdateableHandler::~UpdateableHandler()
+{
+}
+
+FTRT::AMI_UpdateableHandler_ptr UpdateableHandler::activate(
+ Update_Manager* mgr, int id,
+ PortableServer::ObjectId& object_id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ object_id.length(sizeof(mgr) + sizeof(id));
+ memcpy(object_id.get_buffer(), &mgr, sizeof(mgr));
+ memcpy(object_id.get_buffer() + sizeof(mgr), &id, sizeof(id));
+ strategy_->poa()->activate_object_with_id(object_id,
+ this
+ ACE_ENV_ARG_PARAMETER);
+ CORBA::Object_var object = strategy_->poa()->id_to_reference(
+ object_id
+ ACE_ENV_ARG_PARAMETER);
+
+ return FTRT::AMI_UpdateableHandler::_narrow(object.in() ACE_ENV_ARG_PARAMETER);
+}
+
+
+
+void UpdateableHandler::dispatch(UpdateableHandler::Handler handler ACE_ENV_ARG_DECL)
+{
+ PortableServer::Current_var current =
+ resolve_init<PortableServer::Current>(strategy_->orb(),
+ "POACurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::ObjectId_var object_id =
+ current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ Update_Manager* mgr;
+ int id;
+
+ memcpy(&mgr, object_id->get_buffer(), sizeof(mgr));
+ memcpy(&id, object_id->get_buffer()+sizeof(mgr), sizeof(id));
+
+ ACE_DEBUG((LM_DEBUG, "%d\n", id));
+
+ (mgr->*handler)(id);
+
+ strategy_->poa()->deactivate_object(object_id.in());
+}
+
+void UpdateableHandler::set_update (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_DEBUG((LM_DEBUG,"Received reply from "));
+ dispatch(&Update_Manager::handle_reply);
+}
+void UpdateableHandler::set_update_excep (
+ FTRT::AMI_UpdateableExceptionHolder * excep_holder
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_DEBUG((LM_DEBUG, "Received Exception from"));
+ ACE_TRY {
+ excep_holder->raise_set_update();
+ }
+ ACE_CATCHANY {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A corba exception\n");
+ }
+ ACE_ENDTRY;
+
+ dispatch(&Update_Manager::handle_exception);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h
new file mode 100644
index 00000000000..639504f0345
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/UpdateableHandler.h
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file UpdateableHandler.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef UPDATEABLEHANDLER_H
+#define UPDATEABLEHANDLER_H
+#include "orbsvcs/FTRTS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class AMI_Primary_Replication_Strategy;
+class Update_Manager;
+
+class UpdateableHandler : public POA_FTRT::AMI_UpdateableHandler
+{
+public:
+ UpdateableHandler(AMI_Primary_Replication_Strategy* strategy);
+ ~UpdateableHandler();
+
+ FTRT::AMI_UpdateableHandler_ptr activate(
+ Update_Manager* mgr, int id,
+ PortableServer::ObjectId& oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+ typedef void (Update_Manager::*Handler)(int);
+
+ void dispatch(Handler handler ACE_ENV_ARG_DECL) ;
+
+ virtual void set_update (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+ virtual void set_update_excep (
+ FTRT::AMI_UpdateableExceptionHolder * excep_holder
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+private:
+ AMI_Primary_Replication_Strategy* strategy_;
+};
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp
new file mode 100644
index 00000000000..1a837b0d343
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.cpp
@@ -0,0 +1,45 @@
+// $Id$
+
+#include "create_persistent_poa.h"
+
+ACE_RCSID (EventChannel,
+ create_persistent_poa,
+ "$Id$")
+
+PortableServer::POA_var create_persistent_poa(PortableServer::POA_var root_poa,
+ PortableServer::POAManager_var mgr,
+ const char* name,
+ CORBA::PolicyList& policy_list
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ PortableServer::POA_var result;
+ PortableServer::LifespanPolicy_var lifespan =
+ root_poa->create_lifespan_policy(PortableServer::PERSISTENT
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // create a USER_ID IdAssignmentPolicy object
+ PortableServer::IdAssignmentPolicy_var assign =
+ root_poa->create_id_assignment_policy(PortableServer::USER_ID
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ // create PolicyList.
+ size_t orig_len = policy_list.length();
+ policy_list.length(orig_len+2);
+ ACE_CHECK;
+ policy_list[orig_len+0]=
+ PortableServer::LifespanPolicy::_duplicate(lifespan.in());
+ ACE_CHECK;
+ policy_list[orig_len+1]=
+ PortableServer::IdAssignmentPolicy::_duplicate(assign.in());
+ ACE_CHECK;
+
+ // create the child POA
+ result = root_poa->create_POA(name, mgr.in(), policy_list
+ ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK;
+
+ return result;
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h
new file mode 100644
index 00000000000..53ca31e052a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/create_persistent_poa.h
@@ -0,0 +1,25 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file create_persistent_poa.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef CREATE_PERSISTENT_POA_H
+#define CREATE_PERSISTENT_POA_H
+#include "tao/PortableServer/PortableServerC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+PortableServer::POA_var create_persistent_poa(PortableServer::POA_var root_poa,
+ PortableServer::POAManager_var mgr,
+ const char* name,
+ CORBA::PolicyList& policy_list
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h
new file mode 100644
index 00000000000..38cb1774e84
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/ftrtec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TAO_FTRTEC
+// ------------------------------
+#ifndef TAO_FTRTEC_EXPORT_H
+#define TAO_FTRTEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TAO_FTRTEC_HAS_DLL)
+# define TAO_FTRTEC_HAS_DLL 1
+#endif /* ! TAO_FTRTEC_HAS_DLL */
+
+#if defined (TAO_FTRTEC_HAS_DLL) && (TAO_FTRTEC_HAS_DLL == 1)
+# if defined (TAO_FTRTEC_BUILD_DLL)
+# define TAO_FTRTEC_Export ACE_Proper_Export_Flag
+# define TAO_FTRTEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TAO_FTRTEC_BUILD_DLL */
+# define TAO_FTRTEC_Export ACE_Proper_Import_Flag
+# define TAO_FTRTEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TAO_FTRTEC_BUILD_DLL */
+#else /* TAO_FTRTEC_HAS_DLL == 1 */
+# define TAO_FTRTEC_Export
+# define TAO_FTRTEC_SINGLETON_DECLARATION(T)
+# define TAO_FTRTEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TAO_FTRTEC_HAS_DLL == 1 */
+
+// Set TAO_FTRTEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TAO_FTRTEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TAO_FTRTEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TAO_FTRTEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TAO_FTRTEC_NTRACE */
+
+#if (TAO_FTRTEC_NTRACE == 1)
+# define TAO_FTRTEC_TRACE(X)
+#else /* (TAO_FTRTEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define TAO_FTRTEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (TAO_FTRTEC_NTRACE == 1) */
+
+#endif /* TAO_FTRTEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp
new file mode 100644
index 00000000000..e1302565b9e
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.cpp
@@ -0,0 +1,460 @@
+#include "FTEC_Gateway.h"
+#include "activate_with_id.h"
+#include "UUID.h"
+#include "resolve_init.h"
+#include "FtRtecEventCommS.h"
+
+ACE_RCSID (Utils,
+ FTEC_Gateway,
+ "$Id$")
+
+#if !defined(__ACE_INLINE__)
+#include "FTEC_Gateway.inl"
+#endif /* __ACE_INLINE__ */
+
+
+namespace TAO_FTRTEC {
+class FTEC_Gateway_ConsumerAdmin
+ : public POA_RtecEventChannelAdmin::ConsumerAdmin
+{
+public:
+ FTEC_Gateway_ConsumerAdmin(FTEC_Gateway_Impl* impl);
+ ~FTEC_Gateway_ConsumerAdmin();
+ // = The RtecEventChannelAdmin::ConsumerAdmin methods...
+ virtual RtecEventChannelAdmin::ProxyPushSupplier_ptr
+ obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ FTEC_Gateway_Impl* impl_;
+};
+
+class FTEC_Gateway_SupplierAdmin
+ : public POA_RtecEventChannelAdmin::SupplierAdmin
+{
+public:
+ FTEC_Gateway_SupplierAdmin(FTEC_Gateway_Impl* impl);
+ ~FTEC_Gateway_SupplierAdmin();
+ // = The RtecEventChannelAdmin::SupplierAdmin methods...
+ virtual RtecEventChannelAdmin::ProxyPushConsumer_ptr
+ obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ FTEC_Gateway_Impl* impl_;
+};
+
+class FTEC_Gateway_ProxyPushSupplier
+ : public POA_RtecEventChannelAdmin::ProxyPushSupplier
+{
+public:
+ FTEC_Gateway_ProxyPushSupplier(FTEC_Gateway_Impl* impl);
+ ~FTEC_Gateway_ProxyPushSupplier();
+ // = The RtecEventChannelAdmin::ProxyPushSupplier methods...
+ virtual void connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS &qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected,
+ RtecEventChannelAdmin::TypeError));
+ virtual void disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ FTEC_Gateway_Impl* impl_;
+};
+
+class FTEC_Gateway_ProxyPushConsumer
+ : public POA_RtecEventChannelAdmin::ProxyPushConsumer
+{
+public:
+ FTEC_Gateway_ProxyPushConsumer(FTEC_Gateway_Impl* impl);
+ ~FTEC_Gateway_ProxyPushConsumer();
+
+ virtual void push (const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // = The RtecEventChannelAdmin::ProxyPushConsumer methods...
+ virtual void connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS& qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected));
+ virtual void disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ FTEC_Gateway_Impl* impl_;
+};
+
+class PushConsumerHandler : public POA_FtRtecEventComm::AMI_PushConsumerHandler
+{
+public:
+ PushConsumerHandler();
+ ~PushConsumerHandler();
+ virtual void push ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void push_excep (FtRtecEventComm::AMI_PushConsumerExceptionHolder * excep_holder)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+};
+
+struct FTEC_Gateway_Impl
+{
+ CORBA::ORB_var orb;
+ PortableServer::POA_var poa;
+ FtRtecEventChannelAdmin::EventChannel_var ftec;
+ RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin;
+ RtecEventChannelAdmin::SupplierAdmin_var supplier_admin;
+ FTEC_Gateway_ConsumerAdmin consumer_admin_servant;
+ FTEC_Gateway_SupplierAdmin supplier_admin_servant;
+ FTEC_Gateway_ProxyPushSupplier proxy_supplier_servant;
+ FTEC_Gateway_ProxyPushConsumer proxy_consumer_servant;
+ PushConsumerHandler push_handler_servant;
+ FtRtecEventComm::AMI_PushConsumerHandler_var push_handler;
+ FTEC_Gateway_Impl();
+};
+
+FTEC_Gateway_Impl::FTEC_Gateway_Impl()
+: consumer_admin_servant(this),
+ supplier_admin_servant(this),
+ proxy_supplier_servant(this),
+ proxy_consumer_servant(this)
+{
+}
+
+FTEC_Gateway::FTEC_Gateway(CORBA::ORB_ptr orb, FtRtecEventChannelAdmin::EventChannel_ptr ftec)
+: impl_(new FTEC_Gateway_Impl)
+{
+ impl_->orb = CORBA::ORB::_duplicate(orb);
+ impl_->ftec = FtRtecEventChannelAdmin::EventChannel::_duplicate(ftec);
+}
+
+FTEC_Gateway::~FTEC_Gateway()
+{
+ delete impl_;
+}
+
+RtecEventChannelAdmin::EventChannel_ptr
+FTEC_Gateway::activate(PortableServer::POA_ptr poa ACE_ENV_ARG_DECL)
+{
+ PortableServer::IdUniquenessPolicy_var id_uniqueness_policy =
+ poa->create_id_uniqueness_policy(PortableServer::MULTIPLE_ID
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ PortableServer::LifespanPolicy_var lifespan =
+ poa->create_lifespan_policy(PortableServer::PERSISTENT
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ // create a USER_ID IdAssignmentPolicy object
+ PortableServer::IdAssignmentPolicy_var assign =
+ poa->create_id_assignment_policy(PortableServer::USER_ID
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ CORBA::PolicyList policy_list;
+ policy_list.length(3);
+
+ policy_list[0] = PortableServer::IdUniquenessPolicy::_duplicate(
+ id_uniqueness_policy.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ policy_list[1]=
+ PortableServer::LifespanPolicy::_duplicate(lifespan.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ policy_list[2]=
+ PortableServer::IdAssignmentPolicy::_duplicate(assign.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ impl_->poa = poa->create_POA("gateway_poa", mgr.in(), policy_list
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ id_uniqueness_policy->destroy();
+ lifespan->destroy();
+ assign->destroy();
+
+ PortableServer::ObjectId oid;
+ oid.length(16);
+ UUID::create(oid.get_buffer());
+
+ RtecEventChannelAdmin::EventChannel_var gateway;
+
+ activate_object_with_id(gateway.out(), impl_->poa, this, oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ ++oid[9];
+ activate_object_with_id(impl_->consumer_admin.out(),
+ impl_->poa,
+ &impl_->consumer_admin_servant,
+ oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+ ++oid[9];
+ activate_object_with_id(impl_->supplier_admin.out(),
+ impl_->poa,
+ &impl_->supplier_admin_servant,
+ oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(0);
+
+ return gateway._retn();
+}
+
+//= The RtecEventChannelAdmin::EventChannel methods
+RtecEventChannelAdmin::ConsumerAdmin_ptr
+FTEC_Gateway::for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return RtecEventChannelAdmin::ConsumerAdmin::_duplicate(impl_->consumer_admin.in());
+}
+
+RtecEventChannelAdmin::SupplierAdmin_ptr
+FTEC_Gateway::for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_DEBUG((LM_DEBUG, "FTEC_Gateway::for_suppliers\n"));
+ return RtecEventChannelAdmin::SupplierAdmin::_duplicate(impl_->supplier_admin.in());
+}
+
+void FTEC_Gateway::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ impl_->ftec->destroy();
+}
+
+RtecEventChannelAdmin::Observer_Handle
+FTEC_Gateway::append_observer (RtecEventChannelAdmin::Observer_ptr observer
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER))
+{
+ return impl_->ftec->append_observer(observer ACE_ENV_ARG_PARAMETER);
+}
+
+void FTEC_Gateway::remove_observer (RtecEventChannelAdmin::Observer_Handle handle
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER))
+{
+ impl_->ftec->remove_observer(handle ACE_ENV_ARG_PARAMETER);
+}
+
+
+/// FTEC_Gateway_ConsumerAdmin
+
+FTEC_Gateway_ConsumerAdmin::FTEC_Gateway_ConsumerAdmin(FTEC_Gateway_Impl* impl)
+: impl_(impl)
+{
+}
+
+FTEC_Gateway_ConsumerAdmin::~FTEC_Gateway_ConsumerAdmin()
+{
+}
+
+RtecEventChannelAdmin::ProxyPushSupplier_ptr
+FTEC_Gateway_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ PortableServer::ObjectId** remote_proxy_oid_ptr;
+ ACE_NEW_THROW_EX(remote_proxy_oid_ptr, PortableServer::ObjectId*, CORBA::NO_MEMORY());
+
+ PortableServer::ObjectId local_oid;
+ local_oid.length(sizeof(remote_proxy_oid_ptr));
+ memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr));
+
+ RtecEventChannelAdmin::ProxyPushSupplier_ptr result;
+ activate_object_with_id(result, impl_->poa,
+ &impl_->proxy_supplier_servant,
+ local_oid ACE_ENV_ARG_PARAMETER);
+ return result;
+}
+
+/// FTEC_Gateway_SupplierAdmin
+
+FTEC_Gateway_SupplierAdmin::FTEC_Gateway_SupplierAdmin(FTEC_Gateway_Impl* impl)
+: impl_(impl)
+{
+}
+
+FTEC_Gateway_SupplierAdmin::~FTEC_Gateway_SupplierAdmin()
+{
+}
+
+// = The RtecEventChannelAdmin::SupplierAdmin methods...
+RtecEventChannelAdmin::ProxyPushConsumer_ptr
+FTEC_Gateway_SupplierAdmin::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** remote_proxy_oid_ptr;
+ ACE_NEW_THROW_EX(remote_proxy_oid_ptr, PortableServer::ObjectId*, CORBA::NO_MEMORY());
+
+ PortableServer::ObjectId local_oid;
+ local_oid.length(sizeof(remote_proxy_oid_ptr));
+ memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr));
+
+ RtecEventChannelAdmin::ProxyPushConsumer_ptr result;
+ activate_object_with_id(result, impl_->poa,
+ &impl_->proxy_consumer_servant,
+ local_oid ACE_ENV_ARG_PARAMETER);
+ return result;
+}
+
+
+PortableServer::ObjectId**
+get_remote_oid_ptr(CORBA::ORB_ptr orb ACE_ENV_ARG_DECL_NOT_USED)
+{
+ PortableServer::Current_var current =
+ resolve_init<PortableServer::Current>(orb,
+ "POACurrent"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::ObjectId_var object_id =
+ current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::ObjectId** result;
+ memcpy(&result, &object_id[0], sizeof(PortableServer::ObjectId**));
+ return result;
+}
+
+/// FTEC_Gateway_ProxyPushSupplier
+
+FTEC_Gateway_ProxyPushSupplier::FTEC_Gateway_ProxyPushSupplier(FTEC_Gateway_Impl* impl)
+: impl_(impl)
+{
+}
+
+FTEC_Gateway_ProxyPushSupplier::~FTEC_Gateway_ProxyPushSupplier()
+{
+}
+
+
+// = The RtecEventChannelAdmin::ProxyPushSupplier methods...
+void FTEC_Gateway_ProxyPushSupplier::connect_push_consumer (
+ RtecEventComm::PushConsumer_ptr push_consumer,
+ const RtecEventChannelAdmin::ConsumerQOS &qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected,
+ RtecEventChannelAdmin::TypeError))
+{
+
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ *oid_ptr = impl_->ftec->connect_push_consumer(push_consumer, qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void FTEC_Gateway_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ impl_->ftec->disconnect_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ delete *oid_ptr;
+ delete oid_ptr;
+}
+
+void FTEC_Gateway_ProxyPushSupplier::suspend_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ impl_->ftec->suspend_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void FTEC_Gateway_ProxyPushSupplier::resume_connection (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ impl_->ftec->resume_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+/// FTEC_Gateway_ProxyPushConsumer
+
+FTEC_Gateway_ProxyPushConsumer::FTEC_Gateway_ProxyPushConsumer(FTEC_Gateway_Impl* impl)
+: impl_(impl)
+{
+}
+
+FTEC_Gateway_ProxyPushConsumer::~FTEC_Gateway_ProxyPushConsumer()
+{
+}
+
+
+// = The RtecEventChannelAdmin::ProxyPushConsumer methods...
+
+void FTEC_Gateway_ProxyPushConsumer::push (const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ /*
+ if (CORBA::is_nil(impl_->push_handler.in())) {
+ impl_->push_handler = impl_->push_handler_servant._this();
+ }
+
+ impl_->ftec->sendc_push (impl_->push_handler.in(),
+ **oid_ptr,
+ data ACE_ENV_ARG_PARAMETER);
+ */
+ impl_->ftec->push(**oid_ptr, data);
+ ACE_CHECK;
+}
+
+void FTEC_Gateway_ProxyPushConsumer::connect_push_supplier (
+ RtecEventComm::PushSupplier_ptr push_supplier,
+ const RtecEventChannelAdmin::SupplierQOS& qos
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ RtecEventChannelAdmin::AlreadyConnected))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ *oid_ptr = impl_->ftec->connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void FTEC_Gateway_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ impl_->ftec->disconnect_push_consumer(**oid_ptr ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ delete *oid_ptr;
+ delete oid_ptr;
+}
+
+PushConsumerHandler::PushConsumerHandler()
+{
+}
+
+PushConsumerHandler::~PushConsumerHandler()
+{
+}
+
+void PushConsumerHandler::push ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+void PushConsumerHandler::push_excep (FtRtecEventComm::AMI_PushConsumerExceptionHolder * excep_holder)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_UNUSED_ARG(excep_holder);
+}
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h
new file mode 100644
index 00000000000..27c7b3f4fd8
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file FTEC_Gateway.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef FTEC_GATEWAY_H
+#define FTEC_GATEWAY_H
+
+#include "ace/pre.h"
+
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "orbsvcs/RtecEventChannelAdminS.h"
+
+namespace TAO_FTRTEC
+{
+ struct FTEC_Gateway_Impl;
+ class TAO_FtRtEvent_Export FTEC_Gateway :
+ public POA_RtecEventChannelAdmin::EventChannel
+ {
+ public:
+ FTEC_Gateway(CORBA::ORB_ptr orb,
+ FtRtecEventChannelAdmin::EventChannel_ptr ftec);
+ ~FTEC_Gateway();
+
+ RtecEventChannelAdmin::EventChannel_ptr activate
+ (PortableServer::POA_ptr poa
+ ACE_ENV_ARG_DECL);
+
+ RtecEventChannelAdmin::EventChannel_ptr
+ _this(ACE_ENV_SINGLE_ARG_DECL);
+
+ //= The RtecEventChannelAdmin::EventChannel methods
+ virtual RtecEventChannelAdmin::ConsumerAdmin_ptr
+ for_consumers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::SupplierAdmin_ptr
+ for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC((CORBA::SystemException));
+
+ virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC((CORBA::SystemException));
+
+ virtual RtecEventChannelAdmin::Observer_Handle
+ append_observer
+ (RtecEventChannelAdmin::Observer_ptr observer
+ ACE_ENV_ARG_DECL) ACE_THROW_SPEC((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER));
+
+ virtual void remove_observer
+ (RtecEventChannelAdmin::Observer_Handle
+ ACE_ENV_ARG_DECL) ACE_THROW_SPEC((
+ CORBA::SystemException,
+ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
+ RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER));
+ private:
+ struct FTEC_Gateway_Impl *impl_;
+ };
+}
+
+#if defined(__ACE_INLINE__)
+#include "FTEC_Gateway.inl"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl
new file mode 100644
index 00000000000..9ea4dcc4a43
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/FTEC_Gateway.inl
@@ -0,0 +1,10 @@
+// $Id : $
+
+namespace TAO_FTRTEC {
+ ACE_INLINE RtecEventChannelAdmin::EventChannel_ptr
+ FTEC_Gateway::_this(ACE_ENV_SINGLE_ARG_DECL)
+ {
+ PortableServer::POA_var poa = _default_POA();
+ return activate(poa.in());
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h
new file mode 100644
index 00000000000..47a187bc3b4
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ScopeGuard.h
@@ -0,0 +1,296 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file ScopeGuard.h
+ *
+ * $Id$
+ *
+ * @brief This is the code published at
+ * http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/alexandr.htm
+ */
+//=============================================================================
+
+#ifndef SCOPEGUARD_H_
+#define SCOPEGUARD_H_
+
+template <class T>
+class RefHolder
+{
+ T& ref_;
+public:
+ RefHolder(T& ref) : ref_(ref) {}
+ operator T& () const
+ {
+ return ref_;
+ }
+private:
+ // Disable assignment - not implemented
+ RefHolder& operator=(const RefHolder&);
+};
+
+template <class T>
+inline RefHolder<T> ByRef(T& t)
+{
+ return RefHolder<T>(t);
+}
+
+class ScopeGuardImplBase
+{
+ ScopeGuardImplBase& operator =(const ScopeGuardImplBase&);
+protected:
+ ~ScopeGuardImplBase()
+ {
+ }
+ ScopeGuardImplBase(const ScopeGuardImplBase& other) throw()
+ : dismissed_(other.dismissed_)
+ {
+ other.Dismiss();
+ }
+ template <typename J>
+ static void SafeExecute(J& j) throw()
+ {
+ if (!j.dismissed_)
+ try
+ {
+ j.Execute();
+ }
+ catch(...)
+ {
+ }
+ }
+
+ mutable bool dismissed_;
+public:
+ ScopeGuardImplBase() throw() : dismissed_(false)
+ {
+ }
+ void Dismiss() const throw()
+ {
+ dismissed_ = true;
+ }
+};
+
+typedef const ScopeGuardImplBase& ScopeGuard;
+
+template <typename F>
+class ScopeGuardImpl0 : public ScopeGuardImplBase
+{
+public:
+ static ScopeGuardImpl0<F> MakeGuard(F fun)
+ {
+ return ScopeGuardImpl0<F>(fun);
+ }
+ ~ScopeGuardImpl0() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ fun_();
+ }
+protected:
+ ScopeGuardImpl0(F fun) : fun_(fun)
+ {
+ }
+ F fun_;
+};
+
+template <typename F>
+inline ScopeGuardImpl0<F> MakeGuard(F fun)
+{
+ return ScopeGuardImpl0<F>::MakeGuard(fun);
+}
+
+template <typename F, typename P1>
+class ScopeGuardImpl1 : public ScopeGuardImplBase
+{
+public:
+ static ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1)
+ {
+ return ScopeGuardImpl1<F, P1>(fun, p1);
+ }
+ ~ScopeGuardImpl1() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ fun_(p1_);
+ }
+protected:
+ ScopeGuardImpl1(F fun, P1 p1) : fun_(fun), p1_(p1)
+ {
+ }
+ F fun_;
+ const P1 p1_;
+};
+
+template <typename F, typename P1>
+inline ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1)
+{
+ return ScopeGuardImpl1<F, P1>::MakeGuard(fun, p1);
+}
+
+template <typename F, typename P1, typename P2>
+class ScopeGuardImpl2: public ScopeGuardImplBase
+{
+public:
+ static ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2)
+ {
+ return ScopeGuardImpl2<F, P1, P2>(fun, p1, p2);
+ }
+ ~ScopeGuardImpl2() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ fun_(p1_, p2_);
+ }
+protected:
+ ScopeGuardImpl2(F fun, P1 p1, P2 p2) : fun_(fun), p1_(p1), p2_(p2)
+ {
+ }
+ F fun_;
+ const P1 p1_;
+ const P2 p2_;
+};
+
+template <typename F, typename P1, typename P2>
+inline ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2)
+{
+ return ScopeGuardImpl2<F, P1, P2>::MakeGuard(fun, p1, p2);
+}
+
+template <typename F, typename P1, typename P2, typename P3>
+class ScopeGuardImpl3 : public ScopeGuardImplBase
+{
+public:
+ static ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3)
+ {
+ return ScopeGuardImpl3<F, P1, P2, P3>(fun, p1, p2, p3);
+ }
+ ~ScopeGuardImpl3() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ fun_(p1_, p2_, p3_);
+ }
+protected:
+ ScopeGuardImpl3(F fun, P1 p1, P2 p2, P3 p3) : fun_(fun), p1_(p1), p2_(p2), p3_(p3)
+ {
+ }
+ F fun_;
+ const P1 p1_;
+ const P2 p2_;
+ const P3 p3_;
+};
+
+template <typename F, typename P1, typename P2, typename P3>
+inline ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3)
+{
+ return ScopeGuardImpl3<F, P1, P2, P3>::MakeGuard(fun, p1, p2, p3);
+}
+
+//************************************************************
+
+template <class Obj, typename MemFun>
+class ObjScopeGuardImpl0 : public ScopeGuardImplBase
+{
+public:
+ static ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun)
+ {
+ return ObjScopeGuardImpl0<Obj, MemFun>(obj, memFun);
+ }
+ ~ObjScopeGuardImpl0() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ (obj_.*memFun_)();
+ }
+protected:
+ ObjScopeGuardImpl0(Obj& obj, MemFun memFun)
+ : obj_(obj), memFun_(memFun) {}
+ Obj& obj_;
+ MemFun memFun_;
+};
+
+template <class Obj, typename MemFun>
+inline ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun)
+{
+ return ObjScopeGuardImpl0<Obj, MemFun>::MakeObjGuard(obj, memFun);
+}
+
+template <class Obj, typename MemFun, typename P1>
+class ObjScopeGuardImpl1 : public ScopeGuardImplBase
+{
+public:
+ static ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1)
+ {
+ return ObjScopeGuardImpl1<Obj, MemFun, P1>(obj, memFun, p1);
+ }
+ ~ObjScopeGuardImpl1() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ (obj_.*memFun_)(p1_);
+ }
+protected:
+ ObjScopeGuardImpl1(Obj& obj, MemFun memFun, P1 p1)
+ : obj_(obj), memFun_(memFun), p1_(p1) {}
+ Obj& obj_;
+ MemFun memFun_;
+ const P1 p1_;
+};
+
+template <class Obj, typename MemFun, typename P1>
+inline ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1)
+{
+ return ObjScopeGuardImpl1<Obj, MemFun, P1>::MakeObjGuard(obj, memFun, p1);
+}
+
+template <class Obj, typename MemFun, typename P1, typename P2>
+class ObjScopeGuardImpl2 : public ScopeGuardImplBase
+{
+public:
+ static ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2)
+ {
+ return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>(obj, memFun, p1, p2);
+ }
+ ~ObjScopeGuardImpl2() throw()
+ {
+ SafeExecute(*this);
+ }
+ void Execute()
+ {
+ (obj_.*memFun_)(p1_, p2_);
+ }
+protected:
+ ObjScopeGuardImpl2(Obj& obj, MemFun memFun, P1 p1, P2 p2)
+ : obj_(obj), memFun_(memFun), p1_(p1), p2_(p2) {}
+ Obj& obj_;
+ MemFun memFun_;
+ const P1 p1_;
+ const P2 p2_;
+};
+
+template <class Obj, typename MemFun, typename P1, typename P2>
+inline ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2)
+{
+ return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>::MakeObjGuard(obj, memFun, p1, p2);
+}
+
+#define CONCATENATE_DIRECT(s1, s2) s1##s2
+#define CONCATENATE(s1, s2) CONCATENATE_DIRECT(s1, s2)
+#define ANONYMOUS_VARIABLE(str) CONCATENATE(str, __LINE__)
+
+#define ON_BLOCK_EXIT ScopeGuard ANONYMOUS_VARIABLE(scopeGuard) = MakeGuard
+#define ON_BLOCK_EXIT_OBJ ScopeGuard ANONYMOUS_VARIABLE(scopeGuard) = MakeObjGuard
+
+#endif //SCOPEGUARD_H_
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp
new file mode 100644
index 00000000000..ee80e9d837a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.cpp
@@ -0,0 +1,172 @@
+//$Id$
+#include "UUID.h"
+
+ACE_RCSID (Utils,
+ UUID,
+ "$Id$")
+#if !defined(__ACE_INLINE__)
+#include "UUID.inl"
+#endif /* __ACE_INLINE__ */
+
+static union
+{
+ struct
+ {
+ ACE_UINT32 rand1;
+ ACE_UINT16 rand2;
+ } rand_node;
+ ACE_OS::macaddr_node_t mac_address;
+} node;
+
+int
+hex_to_byte (char h)
+{
+ if (h >= '0' && h <= '9') return h - '0';
+ if (h >= 'A' && h <= 'F') return h - 'A' + 10;
+ if (h >= 'a' && h <= 'f') return h - 'a' + 10;
+ return -1;
+}
+
+int
+hexbyte_to_byte (const char *hexbyte)
+{
+ int hi = hex_to_byte(*hexbyte);
+ if (hi == -1) return -1;
+ ++hexbyte;
+
+ int low = hex_to_byte(*hexbyte);
+ if (low == -1) return -1;
+ return (hi << 4) | low;
+}
+
+static const int counts[] = { 4, 2, 2, 2, 6 };
+static const char *seperators = "----";
+
+/**
+ * construct an UUID from the string representation
+ */
+UUID::UUID (const char *string_rep)
+{
+ if (this->from_string(string_rep) == false)
+ rep_.timestamp.hi = 0;
+}
+
+bool
+UUID::from_string (const char *string_rep)
+{
+ int offset = 0;
+
+ for (int i = 0; i < 5; ++i)
+ {
+ for (int j = 0; j < counts[i]; ++j)
+ {
+ int r = hexbyte_to_byte(string_rep);
+ if (r == -1)
+ {
+ return false;
+ }
+
+ rep_.uuid[offset++] = static_cast<unsigned char>(r);
+ string_rep += 2;
+ }
+
+ if (*string_rep++ != seperators[i])
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+inline char *
+bytes_to_hex (const unsigned char *bytes,
+ char *dest,
+ int len)
+{
+ static const char *table = "0123456789abcdef";
+ for (int i = 0; i < len; ++i)
+ {
+ *dest++ = table[bytes[i] >> 4];
+ *dest++ = table[bytes[i] & 0x0f];
+ }
+
+ return dest;
+}
+
+/**
+ * convert to a string representation
+ */
+void
+UUID::to_string (char *string_rep) const
+{
+ for (int i = 0; i < 5; ++i)
+ {
+ string_rep = bytes_to_hex(rep_.uuid,
+ string_rep,
+ counts[i]);
+ *string_rep++ = seperators[i];
+ }
+}
+
+void
+UUID::create (unsigned char *buffer)
+{
+ static ACE_RANDR_TYPE seed;
+
+ if (seed == 0) seed = ACE_OS::getpid();
+
+ // test if node is properly initialized
+ if (node.rand_node.rand1 == 0)
+ {
+ // initialize the node
+ if (ACE_OS::getmacaddress(&node.mac_address) == -1)
+ {
+ node.rand_node.rand1 = ACE_OS::rand_r(seed);
+ node.rand_node.rand2 = (unsigned short) ACE_OS::rand_r(seed);
+ }
+ }
+
+ // Days in years
+ static ACE_UINT64 SecondsToJan1970 =
+ (static_cast<ACE_UINT64>(365)*(1970-1583) // Days in years
+ + (1970-1583)/4 // Leap days
+ - 3 // Allow for 1700, 1800, 1900 not leap years
+ + 31 // Days in December 1583
+ + 30 // Days in November 1583
+ + 16)*60*60*24; // Days from 15th October
+
+
+ ACE_Time_Value now = ACE_OS::gettimeofday();
+ ACE_UINT64 timestamp =
+ (
+ SecondsToJan1970 +
+ now.sec()
+ ) *
+ 10000000 +
+ now.usec() *
+ 10
+
+ // multiplex timestamp with thread id to ensure the uniqueness between thread
+ +
+ static_cast<ACE_UINT16>(ACE_OS::thr_self());
+
+ buffer[0] = (unsigned char) (timestamp & 0xff);
+ buffer[1] = (unsigned char) ((timestamp >> 8) & 0xff);
+ buffer[2] = (unsigned char) ((timestamp >> 16) & 0xff);
+ buffer[3] = (unsigned char) ((timestamp >> 24) & 0xff);
+ buffer[4] = (unsigned char) ((timestamp >> 32) & 0xff);
+ buffer[5] = (unsigned char) ((timestamp >> 40) & 0xff);
+ buffer[6] = (unsigned char) ((timestamp >> 48) & 0xff);
+
+ // Version number is 1
+ buffer[7] = (unsigned char) (((timestamp >> 56) & 0x0f) + 0x10);
+
+ ACE_UINT16 clockSequence = static_cast<
+ ACE_UINT16>(ACE_OS::rand_r(seed) & 0x2ff);
+
+ buffer[8] = (unsigned char) ((clockSequence >> 8) & 0x1f);
+ buffer[9] = (unsigned char) (clockSequence & 0x1f);
+
+ memcpy(buffer + 10, &node, 6);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h
new file mode 100644
index 00000000000..856d996532a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.h
@@ -0,0 +1,118 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file UUID.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef UUID_H
+#define UUID_H
+#include "ace/pre.h"
+
+#include "ftrtevent_export.h"
+#include "ace/OS.h"
+#include "ace/SString.h"
+
+#if defined(TAO_EXPORT_MACRO)
+#undef TAO_EXPORT_MACRO
+#endif
+#define TAO_EXPORT_MACRO FtRtEvent_Export
+
+#if defined(TAO_EXPORT_NESTED_CLASSES)
+#if defined(TAO_EXPORT_NESTED_MACRO)
+#undef TAO_EXPORT_NESTED_MACRO
+#endif /* defined (TAO_EXPORT_NESTED_MACRO) */
+#define TAO_EXPORT_NESTED_MACRO FtRtEvent_Export
+#endif /* TAO_EXPORT_NESTED_CLASSES */
+
+/**
+ * This is an implementation of Global Unique Identifier
+ * which follows the document draft-leach-uuids-guids-01.txt. The
+ * class layout is compatible with the binary representation of
+ * UUID specified by that document. The default constructor
+ * is used to create an new global unique id, not a NULL UUID.
+ * This class does not use dynamic memory allocation and does
+ * not throw any exception except to_string(ACE_CString&).
+ */
+class TAO_FtRtEvent_Export UUID
+{
+ public:
+ enum
+ {
+ BINRARY_LENGTH= 16,
+
+ // the required length for the string representation including the termination '\0'
+ STRING_LENGTH = 37
+ };
+
+ /* Construct an Global Unique Identifier. */
+ UUID(void);
+
+ /* This is used to create an uninitialized UUID. */
+ UUID(int);
+
+ /*
+ * Construct an UUID from the binary represetation. If you want to avoid a memory
+ * copy operation for this constructor. You can safely reinterpret_cast the 16
+ * bytes buffer into the UUID object and use all the member functions provided in
+ * this class except is_valid() which is only useful if a UUID object is
+ * constructed from the string representation.
+ */
+ UUID(const unsigned char *buffer);
+
+ /*
+ * Construct an UUID from the string representation. Use is_valid() to test if the
+ * construction is successful or not.
+ */
+ UUID(const char *);
+
+ /* Construct an uuid from the string representation. */
+ bool from_string(const char *string_rep);
+
+ bool operator==(const UUID &other) const;
+ bool operator!=(const UUID &other) const;
+
+ /*
+ * Test if the UUID is valid. Used after constructing an UUID from an string
+ * representation. This is done by testing whether the time_hi and time_mid fields
+ * of the timestamp are 0. By current time, those two field shouldn't be 0 at all.
+ */
+ bool is_valid(void) const;
+
+ /*
+ * convert to a string representation the buffer size provided must be at least
+ * STRING_LENGTH
+ */
+ void to_string(char *string_rep) const;
+
+ void to_string(ACE_CString &string) const;
+
+ /*
+ * convert to a string representation the buffer size provided must be at least
+ * BINRARY_LENGTH
+ */
+ void to_binary(unsigned char *binary_rep) const;
+
+ /* create an UUID in the specified buffer */
+ static void create(unsigned char *buffer);
+ private:
+ union
+ {
+ struct
+ {
+ ACE_UINT32 low;
+ ACE_UINT32 hi;
+ } timestamp;
+ unsigned char uuid[BINRARY_LENGTH];
+ } rep_;
+};
+
+#if defined(__ACE_INLINE__)
+#include "UUID.inl"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl
new file mode 100644
index 00000000000..3093cf873dd
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/UUID.inl
@@ -0,0 +1,52 @@
+// $Id$
+
+ACE_INLINE
+UUID::UUID()
+{
+ create(rep_.uuid);
+}
+
+ACE_INLINE
+UUID::UUID(int)
+{
+}
+
+/// construct an UUID from the binary represetation
+ACE_INLINE
+UUID::UUID(const unsigned char* id)
+{
+ memcpy(rep_.uuid, id, 16);
+}
+
+ACE_INLINE
+bool UUID::operator == (const UUID& other) const
+{
+ return memcmp(this->rep_.uuid, other.rep_.uuid, BINRARY_LENGTH) == 0;
+}
+
+ACE_INLINE
+bool UUID::operator != (const UUID& other) const
+{
+ return !(*this == other);
+}
+
+
+ACE_INLINE
+bool UUID::is_valid() const
+{
+ return !this->rep_.timestamp.hi;
+}
+
+
+ACE_INLINE
+void UUID::to_binary(unsigned char* binary_rep) const
+{
+ memcpy(binary_rep, rep_.uuid, 16);
+}
+
+ACE_INLINE
+void UUID::to_string(ACE_CString& string) const
+{
+ string.resize(STRING_LENGTH-1);
+ this->to_string(&string[0]);
+}
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h
new file mode 100644
index 00000000000..7a80a82a28b
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/activate_with_id.h
@@ -0,0 +1,33 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file activate_with_id.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef ACTIVATE_WITH_ID_H
+#define ACTIVATE_WITH_ID_H
+
+template<class T>
+void
+activate_object_with_id (T * &result,
+ PortableServer::POA_var poa,
+ PortableServer::ServantBase *servant,
+ const PortableServer::ObjectId &oid
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ poa->activate_object_with_id(oid,
+ servant ACE_ENV_ARG_PARAMETER);
+
+ ACE_CHECK_RETURN(T::_nil());
+
+ CORBA::Object_var object = poa->
+ id_to_reference(oid ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(T::_nil());
+
+ result = T::_narrow(object.in() ACE_ENV_ARG_PARAMETER);
+}
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h
new file mode 100644
index 00000000000..03c2575ce12
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/ftrtevent_export.h
@@ -0,0 +1,67 @@
+
+ // -*- C++ -*-
+
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TAO_FtRtEvent
+// ------------------------------
+#ifndef TAO_FTRTEVENT_EXPORT_H
+#define TAO_FTRTEVENT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined(TAO_FTRTEVENT_HAS_DLL)
+#define TAO_FTRTEVENT_HAS_DLL 1
+#endif /* ! TAO_FTRTEVENT_HAS_DLL */
+
+#if defined(TAO_FTRTEVENT_HAS_DLL) \
+&& (TAO_FTRTEVENT_HAS_DLL == 1)
+#if defined(TAO_FTRTEVENT_BUILD_DLL)
+#define TAO_FtRtEvent_Export \
+ ACE_Proper_Export_Flag
+#define TAO_FTRTEVENT_SINGLETON_DECLARATION (T) ACE_EXPORT_SINGLETON_DECLARATION(T)
+#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \
+ CLASS, \
+ LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, \
+ CLASS, \
+ LOCK)
+#else /* TAO_FTRTEVENT_BUILD_DLL */
+#define TAO_FtRtEvent_Export \
+ ACE_Proper_Import_Flag
+#define TAO_FTRTEVENT_SINGLETON_DECLARATION (T) ACE_IMPORT_SINGLETON_DECLARATION(T)
+#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \
+ CLASS, \
+ LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, \
+ CLASS, \
+ LOCK)
+#endif /* TAO_FTRTEVENT_BUILD_DLL */
+#else /* TAO_FTRTEVENT_HAS_DLL == 1 */
+#define TAO_FtRtEvent_Export
+#define TAO_FTRTEVENT_SINGLETON_DECLARATION(T)
+#define TAO_FTRTEVENT_SINGLETON_DECLARE (SINGLETON_TYPE, \
+ CLASS, \
+ LOCK)
+#endif /* TAO_FTRTEVENT_HAS_DLL == 1 */
+
+// Set TAO_FTRTEVENT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined(TAO_FTRTEVENT_NTRACE)
+#if (ACE_NTRACE == 1)
+#define TAO_FTRTEVENT_NTRACE 1
+#else /* (ACE_NTRACE == 1) */
+#define TAO_FTRTEVENT_NTRACE 0
+#endif /* (ACE_NTRACE == 1) */
+#endif /* !TAO_FTRTEVENT_NTRACE */
+
+#if (TAO_FTRTEVENT_NTRACE == 1)
+#define TAO_FTRTEVENT_TRACE(X)
+#else /* (TAO_FTRTEVENT_NTRACE == 1) */
+#if !defined(ACE_HAS_TRACE)
+#define ACE_HAS_TRACE
+#endif /* ACE_HAS_TRACE */
+#define TAO_FTRTEVENT_TRACE(X) ACE_TRACE_IMPL(X)
+#include "ace/Trace.h"
+#endif /* (TAO_FTRTEVENT_NTRACE == 1) */
+#endif /* TAO_FTRTEVENT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h
new file mode 100644
index 00000000000..0cefc3da7e9
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/resolve_init.h
@@ -0,0 +1,66 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file resolve_init.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+#ifndef RESOVLE_INIT_H
+#define RESOVLE_INIT_H
+
+template<class T>
+typename T::_ptr_type
+resolve_init (CORBA::ORB_ptr orb,
+ const char *id ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ typename T::_var_type ref;
+ CORBA::Object_var obj;
+ ACE_TRY
+ {
+ CORBA::Object_var obj;
+ obj = orb->resolve_initial_references(id ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ref = T::_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
+ }
+
+ ACE_CATCHANY
+ {
+ ACE_ERROR((
+ LM_ERROR,
+ " (%P|%t) Unable to initialize %s.\n",
+ id
+ ));
+ if (!CORBA::is_nil(obj.in()))
+ ACE_ERROR((
+ LM_ERROR,
+ " due to narrowing problem\n"
+ ));
+ ACE_RE_THROW;
+ }
+
+ ACE_ENDTRY;
+ return ref._retn();
+}
+
+#ifdef TAO_Naming_Export
+template<class T>
+typename T::_ptr_type
+resolve (CosNaming::NamingContext_ptr context,
+ const CosNaming::Name &id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+{
+ CORBA::Object_var obj;
+ obj = context->resolve(id ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN(T::_nil());
+
+ ACE_ASSERT(!CORBA::is_nil(obj.in()));
+
+ typename T::_var_type ref = T::_narrow(obj.in() ACE_ENV_ARG_PARAMETER);
+ return ref._retn();
+}
+#endif
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl b/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl
new file mode 100644
index 00000000000..866640ef114
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtecEventChannelAdmin.idl
@@ -0,0 +1,194 @@
+// -*- IDL -*-
+
+//=============================================================================
+/**
+ * @file FtRtecEventChannelAdmin.idl
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang
+ */
+//=============================================================================
+
+#ifndef TAO_FTRTEC_EVENTCHANNELADMIN_IDL
+#define TAO_FTRTEC_EVENTCHANNELADMIN_IDL
+
+#include "orbsvcs/RtecEventChannelAdmin.idl"
+#include "FTRT.idl"
+#include "FTRT_GroupManager.idl"
+#include "FtRtecEventComm.idl"
+
+module FtRtecEventChannelAdmin
+{
+ typedef FtRtecEventComm::ObjectId ObjectId;
+
+ struct ProxyPushConsumerConnectionInfo
+ {
+ RtecEventComm::PushSupplier push_supplier;
+ RtecEventChannelAdmin::SupplierQOS qos;
+ };
+
+ union ProxyPushConsumerConnectionParamter switch (boolean)
+ {
+ case FALSE:
+ case TRUE:
+ ProxyPushConsumerConnectionInfo info;
+ };
+
+ struct ProxyPushConsumerStat
+ {
+ ObjectId object_id;
+ ProxyPushConsumerConnectionParamter parameter;
+ };
+
+
+ struct ProxyPushSupplierConnectionInfo
+ {
+ RtecEventComm::PushConsumer push_consumer;
+ RtecEventChannelAdmin::ConsumerQOS qos;
+ };
+
+ union ProxyPushSupplierConnectionParamter switch (boolean)
+ {
+ case FALSE:
+ case TRUE:
+ ProxyPushSupplierConnectionInfo info;
+ };
+
+ struct ProxyPushSupplierStat
+ {
+ ObjectId object_id;
+ boolean suspended;
+ ProxyPushSupplierConnectionParamter parameter;
+ };
+
+ typedef sequence<ProxyPushConsumerStat> ProxyConsumerStates;
+ typedef sequence<ProxyPushSupplierStat> ProxySupplierStates;
+
+ struct ConsumerAdminState
+ {
+ ProxySupplierStates proxies;
+ };
+
+ struct SupplierAdminState
+ {
+ ProxyConsumerStates proxies;
+ };
+
+ struct CachedResult
+ {
+ long retention_id;
+ any result;
+ };
+
+
+ struct CacheEntry
+ {
+ string client_id;
+ CachedResult cached_result;
+ };
+
+ typedef sequence<CacheEntry> CachedOptionResults;
+
+ struct EventChannelState
+ {
+ CachedOptionResults cached_operation_results;
+ SupplierAdminState supplier_admin_state;
+ ConsumerAdminState consumer_admin_state;
+ };
+
+ struct Connect_push_consumer_param
+ {
+ RtecEventComm::PushConsumer push_consumer;
+ RtecEventChannelAdmin::ConsumerQOS qos;
+ };
+
+ struct Connect_push_supplier_param
+ {
+ RtecEventComm::PushSupplier push_supplier;
+ RtecEventChannelAdmin::SupplierQOS qos;
+ };
+
+ enum OperationType {
+ OBTAIN_PUSH_SUPPLIER,
+ OBTAIN_PUSH_CONSUMER,
+ DISCONNECT_PUSH_SUPPLIER,
+ DISCONNECT_PUSH_CONSUMER,
+ SUSPEND_CONNECTION,
+ RESUME_CONNECTION,
+ CONNECT_PUSH_SUPPLIER,
+ CONNECT_PUSH_CONSUMER
+ };
+
+ union OperationParam switch(OperationType) {
+ case CONNECT_PUSH_SUPPLIER:
+ Connect_push_supplier_param connect_supplier_param;
+ case CONNECT_PUSH_CONSUMER:
+ Connect_push_consumer_param connect_consumer_param;
+ };
+
+
+ struct Operation {
+ ObjectId object_id;
+ OperationParam param;
+ };
+
+ interface EventChannelFacade : FtRtecEventComm::PushConsumer {
+ /**
+ * Directly connect to push consumer. This method is
+ * equivalent to the effect of executing the following
+ * 3 methods.
+ *
+ * consumer_admin = ec->for_consumers();
+ * proxy_supplier = consumer_admin->obtain_push_supplier();
+ * proxy_supplier->connect_push_consumer(push_consumer,
+ * qos);
+ *
+ * @returns the ObjectId of proxy_push_supplier
+ */
+ ObjectId connect_push_consumer(
+ in RtecEventComm::PushConsumer push_consumer,
+ in RtecEventChannelAdmin::ConsumerQOS qos)
+ raises(RtecEventChannelAdmin::TypeError);
+
+ /**
+ * Directly connect to push supplier. This method is
+ * equivalent to the effect of executing the following
+ * 3 methods.
+ *
+ * supplier_admin = ec->for_suppliers();
+ * push_consumer = supplier_admin->obtain_push_supplier();
+ * push_consumer->connect_push_consumer(proxy_supplier,
+ * qos);
+ *
+ * @returns the ObjectId of proxy_push_consumer
+ */
+ ObjectId connect_push_supplier(
+ in RtecEventComm::PushSupplier push_supplier,
+ in RtecEventChannelAdmin::SupplierQOS qos);
+
+ void disconnect_push_supplier(in ObjectId oid)
+ raises(FtRtecEventComm::InvalidObjectID);
+ void disconnect_push_consumer(in ObjectId oid)
+ raises(FtRtecEventComm::InvalidObjectID);
+ void suspend_push_supplier(in ObjectId oid)
+ raises(FtRtecEventComm::InvalidObjectID);
+ void resume_push_supplier(in ObjectId oid)
+ raises(FtRtecEventComm::InvalidObjectID);
+ };
+
+ exception InvalidState{};
+
+ interface EventChannel : RtecEventChannelAdmin::EventChannel
+ , EventChannelFacade
+ , FTRT::Updateable
+ , FTRT::ObjectGroupManager
+ {
+ };
+
+ typedef sequence<EventChannel> EventChannelList;
+
+};
+
+#endif
+
diff --git a/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl b/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl
new file mode 100644
index 00000000000..d722141fb03
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtecEventComm.idl
@@ -0,0 +1,33 @@
+// -*- IDL -*-
+
+//=============================================================================
+/**
+ * @file FtRtEventComm.idl
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang
+ */
+//=============================================================================
+
+#ifndef FTRTECEVNETCOMM_H
+#define FTRTECEVNETCOMM_H
+
+#include "OctetSeq.pidl"
+#include "orbsvcs/RtecEventComm.idl"
+
+module FtRtecEventComm {
+
+ typedef CORBA::OctetSeq ObjectId;
+
+ exception InvalidObjectID {
+ };
+
+ interface PushConsumer {
+ void push(in ObjectId oid, in RtecEventComm::EventSet data)
+ raises(InvalidObjectID);
+ };
+
+};
+
+#endif
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp
index 6e373d47fa4..32e3cbf1e52 100644
--- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp
+++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Monitor.cpp
@@ -42,9 +42,10 @@ TAO_LB_CPU_Monitor::TAO_LB_CPU_Monitor (const char * location_id,
else
{
this->location_[0].id = CORBA::string_dup (location_id);
-
- if (location_kind != 0)
- this->location_[0].kind = CORBA::string_dup (location_kind);
+ this->location_[0].kind =
+ (location_kind == 0
+ ? CORBA::string_dup ("User Specified")
+ : CORBA::string_dup (location_kind));
}
}
@@ -129,7 +130,11 @@ TAO_LB_CPU_Monitor::loads (ACE_ENV_SINGLE_ARG_DECL)
# else
+# if defined (ACE_HAS_SYS_LOADAVG_H)
const int samples = ::getloadavg (loadavg, 1);
+# else
+ const int samples = 0;
+# endif /* ACE_HAS_SYS_LOADAVG_H */
# endif /* linux
&& ((__GLIBC__ == 2 && __GLIBC_MINOR__ < 2)
diff --git a/TAO/orbsvcs/orbsvcs/Makefile b/TAO/orbsvcs/orbsvcs/Makefile
index 9464da34798..0995a110611 100644
--- a/TAO/orbsvcs/orbsvcs/Makefile
+++ b/TAO/orbsvcs/orbsvcs/Makefile
@@ -83,8 +83,6 @@ ifndef TAO_ORBSVCS
TAO_ORBSVCS += ImplRepo
- TAO_ORBSVCS += RTCosScheduling
-
endif # minimum_corba
ifeq ($(ssl),1)
@@ -165,11 +163,6 @@ ifneq (,$(findstring RTKokyuEvent, $(TAO_ORBSVCS)))
MKLIST += Makefile.RTKokyuEvent
endif
endif
-ifneq (,$(findstring RTCosScheduling, $(TAO_ORBSVCS)))
- ifeq (,$(findstring Makefile.RTCosScheduling, $(MKLIST)))
- MKLIST += Makefile.RTCosScheduling
- endif
-endif
ifneq (,$(findstring RTCORBAEvent, $(TAO_ORBSVCS)))
ifeq (,$(findstring Makefile.RTCORBAEvent, $(MKLIST)))
MKLIST += Makefile.RTCORBAEvent
diff --git a/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling b/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling
deleted file mode 100644
index 556719e798a..00000000000
--- a/TAO/orbsvcs/orbsvcs/Makefile.RTCosScheduling
+++ /dev/null
@@ -1,193 +0,0 @@
-#----------------------------------------------------------------------------
-# GNU Makefile
-#
-# @file Makefile.RTCosScheduling
-#
-# $Id$
-#
-# This file was automatically generated by MPC. Any changes made directly to
-# this file will be lost the next time it is generated.
-#
-#----------------------------------------------------------------------------
-MAKEFILE = Makefile.RTCosScheduling
-DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling
-LIB = libTAO_RTCosScheduling.a
-SHLIB = libTAO_RTCosScheduling.$(SOEXT)
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif
-ifndef CIAO_ROOT
- CIAO_ROOT = $(TAO_ROOT)/CIAO
-endif
-
-TAO_IDL = ../../../bin/tao_idl
-IDL_FILES = RTCosScheduling
-IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-RTCosScheduling = \
- RTCosScheduling/RTCosScheduling_ClientScheduler_i \
- RTCosScheduling/RTCosScheduling_PCP_Manager \
- RTCosScheduling/RTCosScheduling_ServerScheduler_i
-
-ifndef ORBSVCS_COMPONENTS
- ORBSVCS_COMPONENTS = \
- RTCosScheduling
-endif # ORBSVCS_COMPONENTS
-
-ifneq (,$(findstring RTCosScheduling, $(ORBSVCS_COMPONENTS)))
- FILES += $(RTCosScheduling)
-endif # RTCosScheduling
-
-VPATH = .:RTCosScheduling
-
-#----------------------------------------------------------------------------
-# Include macros and targets
-#----------------------------------------------------------------------------
-ACE_SHLIBS = -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
-include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
-## We don't need the ACELIB setting from wrapper_macros.GNU
-ACELIB =
-include $(TAO_ROOT)/rules.tao.GNU
-
-# To build multiple executables in the same directory on AIX, it works
-# best to have a template directory per project.
-# The compiler/linker isn't too smart about instantiating templates...
-ifdef TEMPINCDIR
-TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling
-
-all: $(TEMPINCDIR)
-
-$(TEMPINCDIR):
- @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR)
-
-endif
-
-CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq ($(interceptors),1)
-ifeq ($(rt_corba),1)
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-
-ifeq (,$(TAO_ORBSVCS))
-ifeq ($(interceptors),1)
-ifeq ($(rt_corba),1)
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-else
-ifeq ($(interceptors),1)
-ifeq ($(rt_corba),1)
- ifeq (RTCosScheduling, $(findstring RTCosScheduling, $(TAO_ORBSVCS)))
- else
- LIB =
- SHLIB =
- endif
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-else
- LIB =
- SHLIB =
- all: require_warning
-endif
-endif
-
-LSRC = $(addsuffix .cpp, $(FILES))
-ifeq (,$(TAO_ORBSVCS))
-BUILD += ORBSVCS_COMPONENTS
-else
- ifeq (RTCosScheduling, $(findstring RTCosScheduling, $(TAO_ORBSVCS)))
- BUILD += ORBSVCS_COMPONENTS
- endif
-endif
-
-ifneq ($(SHLIB),)
-all: idl_stubs
-
-# This rule forces make to run the idl_stubs
-# target before building any of the source files.
-RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp RTCosScheduling/RTCosScheduling_PCP_Manager.cpp RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp: idl_stubs
-endif
-
-include $(ACE_ROOT)/include/makeinclude/macros.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-
-INSTALL_CHECK = ../../../lib
-ifeq ($(INSTALL_CHECK),.)
- INSLIB = $(PWD)
-else
- INSLIB = $(INSTALL_CHECK)
-endif
-
-include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
-include $(TAO_ROOT)/taoconfig.mk
-
-CPPFLAGS += -I../../orbsvcs -I../.. -I../../tao -I../../..
-ifeq ($(shared_libs),1)
- ifneq ($(SHLIB),)
- CPPFLAGS += -DTAO_RTCOSSCHEDULING_BUILD_DLL
- endif
-endif
-ifeq ($(static_libs),1)
- ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
- endif
-endif
-
-
-LDFLAGS += -L../../../lib
-
-TAO_IDLFLAGS += -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling/RTCosScheduling_export.h -Gv -I../.. -I../../orbsvcs -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h
-#----------------------------------------------------------------------------
-# Local targets
-#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo interceptors rt_corba
-
-../../../lib:
- -@mkdir -p "../../../lib"
-
-
-.PHONY: ORBSVCS_COMPONENTS
-ORBSVCS_COMPONENTS:
- @sh ../../../bin/ace_components --orbsvcs --append '$(ORBSVCS_COMPONENTS)'
-
-compclean:
- @sh ../../../bin/ace_components --orbsvcs --remove
-
-ADDITIONAL_IDL_TARGETS =
-# IDL File Directory: .
-
-ifneq ($(ADDITIONAL_IDL_TARGETS),)
-idl_stubs: $(ADDITIONAL_IDL_TARGETS)
-endif
-
-.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-realclean: clean compclean
- -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifneq ($(GENERATED_DIRTY),)
- -$(RM) -r $(GENERATED_DIRTY)
-endif
-
diff --git a/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP b/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP
index 49ccd2053b2..00a89e5ab66 100644
--- a/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP
+++ b/TAO/orbsvcs/orbsvcs/Makefile.SSLIOP
@@ -86,7 +86,9 @@ CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs $(PLATFORM_SSL_CPPFLAGS)
LDFLAGS += -L$(TAO_ROOT)/tao -L$(TAO_ROOT)/orbsvcs/orbsvcs $(PLATFORM_SSL_LDFLAGS)
LIBS += $(PLATFORM_SSL_LIBS)
+ifeq ($(HPUX_VERS),)
ACE_SHLIBS = -lTAO_Security -lTAO_PortableServer -lTAO -lACE_SSL -lACE -lssl -lcrypto
+endif # HPUX_VERS
# Extra dependencies not caught by make depend.
diff --git a/TAO/orbsvcs/orbsvcs/Makefile.bor b/TAO/orbsvcs/orbsvcs/Makefile.bor
index 73f9542287f..8201132bc1c 100644
--- a/TAO/orbsvcs/orbsvcs/Makefile.bor
+++ b/TAO/orbsvcs/orbsvcs/Makefile.bor
@@ -25,7 +25,6 @@ MAKEFILES = \
FaultTolerance.bor \
PortableGroup.bor \
CosLoadBalancing.bor \
- IFRService.bor \
- RTCosScheduling.bor
+ IFRService.bor
!include <$(ACE_ROOT)/include/makeinclude/recurse.bor>
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor b/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor
deleted file mode 100644
index 4b207a989be..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.bor
+++ /dev/null
@@ -1,97 +0,0 @@
-# Makefile for building the TAO_RTCosScheduling library with Borland C++ Builder
-
-NAME = TAO_RTCosScheduling
-
-TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe
-
-OBJFILES = \
- $(OBJDIR)\RTCosSchedulingC.obj \
- $(OBJDIR)\RTCosSchedulingS.obj \
- $(OBJDIR)\RTCosScheduling_ClientScheduler_i.obj \
- $(OBJDIR)\RTCosScheduling_PCP_Manager.obj \
- $(OBJDIR)\RTCosScheduling_ServerScheduler_i.obj
-
-LFLAGS = \
- -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \
- -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \
- -j..\..\tao\RTPortableServer\$(CONFIG_SUBDIR) -j..\..\tao\RTPortableServer \
- -L..\..\tao\RTPortableServer\$(CONFIG_SUBDIR) -L..\..\tao\RTPortableServer \
- -j..\..\tao\RTCORBA\$(CONFIG_SUBDIR) -j..\..\tao\RTCORBA \
- -L..\..\tao\RTCORBA\$(CONFIG_SUBDIR) -L..\..\tao\RTCORBA \
- -j..\..\tao\PortableServer\$(CONFIG_SUBDIR) -j..\..\tao\PortableServer \
- -L..\..\tao\PortableServer\$(CONFIG_SUBDIR) -L..\..\tao\PortableServer \
- -j..\..\tao\IORInterceptor\$(CONFIG_SUBDIR) -j..\..\tao\IORInterceptor \
- -L..\..\tao\IORInterceptor\$(CONFIG_SUBDIR) -L..\..\tao\IORInterceptor \
- -j..\..\tao\ValueType\$(CONFIG_SUBDIR) -j..\..\tao\ValueType \
- -L..\..\tao\ValueType\$(CONFIG_SUBDIR) -L..\..\tao\ValueType \
- -j..\..\tao\ObjRefTemplate\$(CONFIG_SUBDIR) -j..\..\tao\ObjRefTemplate \
- -L..\..\tao\ObjRefTemplate\$(CONFIG_SUBDIR) -L..\..\tao\ObjRefTemplate \
- -j..\..\tao\$(CONFIG_SUBDIR) -j..\..\tao \
- -L..\..\tao\$(CONFIG_SUBDIR) -L..\..\tao \
- -j..\..\..\ace\$(CONFIG_SUBDIR) -j..\..\..\ace \
- -L..\..\..\ace\$(CONFIG_SUBDIR) -L..\..\..\ace \
- -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \
- -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \
- -j$(CORE_BINDIR) \
- -L$(CORE_BINDIR)
-
-LIBFILES = \
- TAO_RTPortableServer$(LIB_DECORATOR).lib \
- TAO_RTCORBA$(LIB_DECORATOR).lib \
- TAO_PortableServer$(LIB_DECORATOR).lib \
- TAO_IORInterceptor$(LIB_DECORATOR).lib \
- TAO_Valuetype$(LIB_DECORATOR).lib \
- TAO_ObjRefTemplate$(LIB_DECORATOR).lib \
- TAO$(LIB_DECORATOR).lib \
- ACE$(LIB_DECORATOR).lib \
-
-
-IDLFILES = \
- $(IDLDIR)\RTCosScheduling.idl
-
-!ifdef STATIC
-LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
-DLL_FLAGS =
-!else
-LIB_FLAGS =
-DLL_FLAGS = -DTAO_RTCOSSCHEDULING_BUILD_DLL
-!endif
-
-CFLAGS = \
- -I..\..\orbsvcs \
- -I..\.. \
- -I..\..\tao \
- -I..\..\.. \
- $(LIB_FLAGS) \
- $(DLL_FLAGS)
-
-CPPDIR = .;RTCosScheduling
-
-IDLDIR = .
-
-INCLUDES = \
- RTCosScheduling\RTCosScheduling_ClientScheduler_i.h \
- RTCosScheduling\RTCosScheduling_PCP_Manager.h \
- RTCosScheduling\RTCosScheduling_ServerScheduler_i.h \
- RTCosScheduling\RTCosScheduling_ClientScheduler_i.i \
- RTCosScheduling\RTCosScheduling_PCP_Manager.i \
- RTCosScheduling\RTCosScheduling_ServerScheduler_i.i \
- RTCosScheduling.idl
-
-INCDIR_NAME = orbsvcs
-
-all: idl_src_files
-
-BASE_BINDIR = ..\..\..\lib
-
-!include <$(ACE_ROOT)\include\makeinclude\build_library.bor>
-
-#
-# IDL Build rules
-#
-
-idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp)
-
-# IDL File Directory: .
-$(IDLDIR)\RTCosSchedulingS.cpp $(IDLDIR)\RTCosSchedulingC.cpp: $(IDLDIR)\RTCosScheduling.idl
- $(TAO_IDL) -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $**
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp b/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp
deleted file mode 100644
index c2e8ecc13b2..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.dsp
+++ /dev/null
@@ -1,194 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=RTCosScheduling - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.mak" CFG="RTCosScheduling - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib"
-# PROP Intermediate_Dir "Release\RTCosScheduling"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /Zi /GR /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D NDEBUG /D WIN32 /D _WINDOWS /D TAO_RTCOSSCHEDULING_BUILD_DLL /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib" /nologo /version:1.3.4 /subsystem:windows /pdb:"..\..\..\lib\TAO_RTCosScheduling.pdb" /dll /machine:I386 /out:"..\..\..\lib\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib"
-# PROP Intermediate_Dir "Debug\RTCosScheduling"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D _DEBUG /D WIN32 /D _WINDOWS /D TAO_RTCOSSCHEDULING_BUILD_DLL /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib" /nologo /version:1.3.4 /subsystem:windows /pdb:"..\..\..\lib\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:I386 /out:"..\..\..\lib\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 Release"
-# Name "RTCosScheduling - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\Release\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl b/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl
deleted file mode 100644
index 10d68c8815c..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.idl
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- idl -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling.idl
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-/**
- * This directory contains the idl for the RTCORBA 1.0 Scheduling Service.
- * To generate the stubs and skeletons, run
- * tao_idl -I $TAO_ROOT/ RTCosScheduling.idl
- *
- */
-
-
-#ifndef _RT_COS_SCHEDULING_
-#define _RT_COS_SCHEDULING_
-
-#include <orb.idl>
-#include "tao/PortableServer/PortableServer.pidl"
-
-/**
- * @module RTCosScheduling
- *
- * @brief This module contains the interfaces for the RTCORBA 1.0
- * Scheduling Service.
- */
-
-
-module RTCosScheduling {
-
- /**
- * This exception is thrown by schedule activity when an activity name
- * is passed that is associated with a priority in the config file.
- * It is thrown by schedule_object when an object name is passed in
- * that was not assiciated with a resource priority ceiling in the
- * config file.
- */
- exception UnknownName {};
-
- /**
- * @interface ClientScheduler
- *
- * @brief This interface is used by clients who wish to
- * schedule activities using the RT CORBA 1.0 Scheduling Service.
- */
- local interface ClientScheduler {
-
- /**
- * schedule_activity associates an activity name with a known priority
- * for that activity. It then sets RT Current to that priority.
- * If the name passed does not have a priority associated then
- * schedule_activity throws an UnknownName exception.
- *
- * @param activity_name is the name of the activity that the client
- * would like to run. The activity_name is associated with a
- * priority by schedule_activity and RT Current is set to that
- * priority.
- */
- void schedule_activity(in string activity_name )
- raises (UnknownName);
- };
-
- /**
- * @interface ServerScheduler
- *
- * @brief This interface is used by nodes that hold a local object
- * reference.
- */
- local interface ServerScheduler {
-
- /**
- * create_POA is called by servers that would like to use the
- * RT CORBA 2.0 Scheduling Service.
- *
- * @param parent The poa to base the RT POA upon
- * @param adapter_name the adapter name for the poa
- * @param a_POAManager the poa_manager
- * @param policies the list of non real time policies to be set
- *
- */
- PortableServer::POA create_POA (
- in PortableServer::POA parent,
- in string adapter_name,
- in PortableServer::POAManager a_POAManager,
- in CORBA::PolicyList policies)
- raises (PortableServer::POA::AdapterAlreadyExists,
- PortableServer::POA::InvalidPolicy);
-
- /**
- * schedule_object is called on servers to associate a
- * CORBA object reference with a name. This allows the
- * scheduling service to map a server object name to a resource
- * ceiling. An UnknownName exception is found if the object name
- * is not found in the config file.
- */
- void schedule_object(in Object obj, in string name)
- raises (UnknownName);
-
- };
-
-};
-
-
-#endif // _RT_COS_SCHEDULING_IDL_
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc b/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc
deleted file mode 100644
index 36a3e8e30dc..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.mpc
+++ /dev/null
@@ -1,19 +0,0 @@
-project : orbsvcslib, rtportableserver {
- requires += interceptors
- sharedname = TAO_RTCosScheduling
- idlflags += -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling/RTCosScheduling_export.h
- dynamicflags += TAO_RTCOSSCHEDULING_BUILD_DLL
- tagchecks += RTCosScheduling
-
- IDL_Files {
- RTCosScheduling.idl
- }
- Source_Files(ORBSVCS_COMPONENTS) {
- RTCosScheduling {
- RTCosScheduling
- }
- }
- Template_Files {
- }
-}
-
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp b/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp
deleted file mode 100644
index 8075948b282..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling.vcp
+++ /dev/null
@@ -1,424 +0,0 @@
-# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Dynamic-Link Library" 0x8502
-# TARGTYPE "Win32 (WCE x86) Dynamic-Link Library" 0x8302
-# TARGTYPE "Win32 (WCE emulator) Dynamic-Link Library" 0xa602
-
-CFG=RTCosScheduling - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.vcn".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling.vcn" CFG="RTCosScheduling - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Dynamic-Link Library")
-!MESSAGE "RTCosScheduling - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /libpath:"..\..\tao\RTPortableServer\ARM" /libpath:"..\..\tao\RTCORBA\ARM" /libpath:"..\..\tao\PortableServer\ARM" /libpath:"..\..\tao\IORInterceptor\ARM" /libpath:"..\..\tao\ValueType\ARM" /libpath:"..\..\tao\ObjRefTemplate\ARM" /libpath:"..\..\tao\ARM" /libpath:"..\..\..\ace\ARM" /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\ARM\TAO_RTCosScheduling.pdb" /dll /debug /machine:ARM /out:"..\..\..\lib\ARM\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /libpath:"..\..\tao\RTPortableServer\ARM" /libpath:"..\..\tao\RTCORBA\ARM" /libpath:"..\..\tao\PortableServer\ARM" /libpath:"..\..\tao\IORInterceptor\ARM" /libpath:"..\..\tao\ValueType\ARM" /libpath:"..\..\tao\ObjRefTemplate\ARM" /libpath:"..\..\tao\ARM" /libpath:"..\..\..\ace\ARM" /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\ARM\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:ARM /out:"..\..\..\lib\ARM\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosScheduling.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosScheduling.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosScheduling.dll"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\lib\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\orbsvcs" /i "..\.." /i "..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\orbsvcs" /I "..\.." /I "..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /D TAO_RTCOSSCHEDULING_BUILD_DLL /FR /FD /c
-# SUBTRACT CPP /Fr /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /libpath:"..\..\tao\RTPortableServer\IX86" /libpath:"..\..\tao\RTCORBA\IX86" /libpath:"..\..\tao\PortableServer\IX86" /libpath:"..\..\tao\IORInterceptor\IX86" /libpath:"..\..\tao\ValueType\IX86" /libpath:"..\..\tao\ObjRefTemplate\IX86" /libpath:"..\..\tao\IX86" /libpath:"..\..\..\ace\IX86" /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /entry:"_DllMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.pdb" /dll /debug /machine:IX86 /out:"..\..\..\lib\IX86\TAO_RTCosSchedulingd.dll"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling - Win32 (WCE x86) Release"
-# Name "RTCosScheduling - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I..\.. -I..\..\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/README b/TAO/orbsvcs/orbsvcs/RTCosScheduling/README
deleted file mode 100644
index 6f0261edead..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/README
+++ /dev/null
@@ -1,301 +0,0 @@
-README,v 1.0 2003/08/21
-
-RTCORBA 1.0 Scheduling Service.
-
-Matt Murphy <murphym@cs.uri.edu>
-University of Rhode Island
-
-This is an implementation of the RTCORBA 1.0 Scheduling Service.
-Per section 3 of the RTCORBA 1.0 specification (OMG), the scheduling
-service is comprised of two local interfaces, a ClientScheduler and
-a ServerScheduler.
-
-
-Build Issues:
----------
-Run tao_idl -I $TAO_ROOT/ RTCosScheduling.pidl
-Some versions of TAO incorrectly include the line
-#include "tao/PortableServer/PortableServerS.h"
-in RTCosSchedulingS.h when making the IDL. Before running
-make on your program, please check if this line was included in
-RTCosSchedulingS.h, and if so, comment it out.
-Run make -f Makefile.RTCosScheduling from ../
-
-
-
-Synopsis:
----------
-The RTCosScheduler allows clients to schedule tasks according to
-scheduling information determined a priori. This scheduling information
-is stored in a config file so that both the client and the server has
-access to it. (If the client and server exists on different nodes then
-place a copy of the config file on each node.)
-
-Per the RTCORBA 1.0 spec, clients use a ClientScheduler object and
-servers use a ServerScheduler object to schedule activities on the
-system. Since each may or may not use its scheduler, there are four
-possible scenarios in which the system may run. These are:
-
-1. Client uses ClientScheduler, Server uses ServerScheduler.
- In this case the system follows the rules set forth in the
- "Scheduling Service" section of this document below.
-
-2. Client uses ClientScheduler, Server does not use ServerScheduler.
- In this case activities are scheduled on the client
- and run at the mapped Real Time priority set forth in the config
- file while executing on the client. However, any activity on the
- server does not run at a real time priority. This means that
- Multiprocessor Priority Ceiling Protocol does not manage activities
- on the server. Currently, the client has no way of knowing that
- activity on the server did not follow the MPCP protocol. Future
- enhancements to the RTCORBA 1.0 scheduling service should notify
- the client (perhaps through a flag to a client interceptor) that
- the server did not use MPCP. Please note that this scenario is generally
- not recommended as there is a strong possibility for
- priority inversion or unexpected blocking in this situation
- since any and all server activity that uses the ServerScheduler
- will run at a higher priority that server activity that does not.
- Use scenario 1 above. Here, the server's priority lowers from
- RTCORBA::maxPriority to RTCORBA::minPriority and things will
- execute on a best effort basis.
-
-3. Client does not use ClientScheduler, Server uses ServerScheduler.
- In this case the client does not use priorities set forth in the
- config file. The ServerScheduler, on the other hand, does use
- MPCP to schedule execution on the server. It uses the priority sent
- to the server by the client, which is the default priority that the
- client ran at (since the client priority was not changed by
- schedule_activity(). This follows the scenario of the ServerScheduler
- set forth below. Please note that it is recommended that you use
- scenario 1, above, instead so that the client sends appropriate priorities
- to the server.
-
-4. Client does not use ClientScheduler, server does not use
- ServerScheduler.
- In this case neither the client nor the server take advantage of
- the RTCORBA 1.0 Scheduler.
-
-
-
-Scheduling Service:
-------------------
-ClientScheduler:
-Clients wishing to use the ClientScheduler to schedule activities
-must first create a local ClientScheduler object reference. The
-ClientScheduler is declared as:
-
-RTCosScheduling_ClientScheduler_i (
- CORBA::ORB_var orb, /// Orb reference
- char* node, /// Node the client resides on
- char* file); /// Config file holding scheduling information
-
-
-The ClientScheduler constructor parses the config file and populates
-an ACE_MAP with the activity/priority associations for the node on
-which the client resides. It also constructs a ClientScheduler_Interceptor
-that adds a service context the send_request interceptor that contains
-the priority the client is running at when the call is made.
-
-Once initialized, calls to the ClientScheduler schedule_activity(
-const char * activity_name) method will match the activity_name
-parameter to the CORBA priority value in the ACE_Map. It linearly
-maps CORBA priority to a local OS priority and sets the local OS
-priority using RT Current. If the activity name provided is not
-valid (i.e. not found in the config file), a
-RTCosScheduling::UnknownName exception is thrown.
-
-The ClientScheduler also registers an client side interceptor with the
-orb. This ClientScheduler_Interceptor finds the CORBA priority that the
-client is running at when the remote method call is made and adds this priority
-to a service context for the ServerScheduler_Interceptor to use. Initial
-tests find that this interceptor adds 0.00015 seconds of execution on an
-Intel 3.0 GHz processor.
-
-
-ServerScheduler:
-Servers that contain local objects that will accept CORBA calls must
-create a local ServerScheduler object. The ServerScheduler uses
-TAO's PortableInterceptors to intercept incoming client requests and
-schedule execution on the server. These interceptors are registered
-by the ORB_Core as explained in the create_POA method below.
-The ServerScheduler is defined as:
-
- RTCosScheduling_ServerScheduler_i (
- char *node, /// Node the ServerScheduler resides on
- char *file, /// Config file holding scheduling information
- char *shared_file, /// File used for shared memory
- int numthreads); /// Number of threads to create in the threadpool
-
-During initialization, the ServerScheduler finds the appropriate node
-information in the config file and stores resources (key) on the node
-and the appropriate priority ceiling (value) in a map. It also reads
-in the base priority for the resource.
-
-The ServerScheduler constructor then registers the PortableInterceptors
-necessary to scheduler execution on the server. It also set up the
-linear mapping policy and a reference to the RT Current object, both
-of which are used for adjusting the server's local OS priority when
-using the priority ceiling control protocol.
-
-Once the ServerScheduler object is constructed, users may create an
-orb and establish any non real time POA policies they wish to install by
-calling the ServerScheduler's create_POA method.
-
-ServerScheduler's create_POA method creates a real time POA that will
-set and enforce all non-real time policies. This method also sets the
-real time POA to enforce the Server Declared Priority Model Policy and
-creates a threadpool responsible for executing calls to the server.
-Server Declared Priority Model is used so that the server threads may run at
-a high enough priority to intercept requests as soon as they come in.
-If Client Propagated Priority Ceilings were used, incoming requests would not
-be intercepted until all existing servant execution is completed. This is
-because MPCP elevates the priority of servant execution to be higher than
-the client priorities.
-
-Recall that the number of threads in the threadpool was supplied by the
-ServerScheduler constructor. The create_POA method is defined as:
-
- virtual ::PortableServer::POA_ptr create_POA (
- PortableServer::POA_ptr parent, /// Non RT POA parent
- const char * adapter_name, /// Name for the POA
- PortableServer::POAManager_ptr a_POAManager, /// Manager for the POA
- const CORBA::PolicyList & policies /// List of non RT policies
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((
- CORBA::SystemException
- , PortableServer::POA::AdapterAlreadyExists
- , PortableServer::POA::InvalidPolicy
- ));
-
-
-Once a RT POA has been created, schedule_object is called to store CORBA
-Object references (key) with a name (value) in an ACE_MAP. An
-RTCosScheduling::UnknownName exception is thrown if the schedule_object
-name parameter is not found in the resource map (i.e. it was not in the
-config file.)
-The schedule_object method is declared as:
- virtual void schedule_object (
- CORBA::Object_ptr obj, /// A CORBA object reference
- const char * name /// Name to associate with obj
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((
- CORBA::SystemException
- , RTCosScheduling::UnknownName
- ));
-
-
-Once all objects that will receive client requests have been scheduled
-using schedule_object, clients are free to make calls on those objects.
-The scheduling service interceptors catch these calls and perform the
-necessary priority ceiling control measures to ensure that the calls
-are executed in the appropriate order. The ServerScheduler_Interceptor
-receive_request method intercepts all incoming request immediately since it
-is set to run at RTCORBA::maxPriority (the highest priority on the server
-OS). It then gets the client priority sent in the service context as well
-as the resource ceiling for the object and the base priority for the server.
-Initial tests indicate that the receive_request interceptor takes around
-0.002 seconds to complete on an Intel 3.0 GHz processor.
-
-Given these values it is able to use the Multiprocessor Priority Ceiling
-Protocol to schedule execution on the server to handle the request. MPCP
-schedules all global critical sections at a higher priority than tasks on
-the local processor by adding the client priority to the base
-priority of the servant, then adding the resource ceiling of the resource
-to the base priority to find the appropriate priority ceiling. For more
-information about MPCP, please refer to the book "Real Time Systems",
-By Jane Liu (2000).
-
-Please not that the locking mechanisms are stored in shared memory
-on the server. This means that the locks cannot be stored in linked lists
-and are therefore manipulated using memory offsets. The total number of
-locks that may be stored in shared memory is currently set at 1024.
-
-When remote execution is complete the send_reply interceptor resets the thread
-to listen at RTCORBA::maxPriority and removes the task form the Invocation
-list. Initial test indicate that the send_reply interceptor takes 0.000075
-seconds to complete on an Intel 3.0 GHz processor.
-
-
-Scheduling Service Config File:
-The scheduling service config file holds the information necessary to
-schedule the system. Task and resource ceiling information is stored for
-each of the nodes as follows:
-
-Node 1 /// The node name is 1
-
-Resources:
-BP 6000 /// The base priority for the resource
-Server1 1000 /// A list of resources and their priority ceiling
-Server2 2000
-END /// The end of the resource list
-
-Tasks: /// A list of tasks that will execute on the node
-Client1 1000
-Client2 3000
-Client3 5000
-END /// The end of the task list.
-
-Please note that these associations are tab delimited. Please do not include
-comments in the scheduling service config file. The priorities associated
-with each task and resource are considered to be CORBA priorities, and
-will be mapped to local OS level priorities using the Linear Mapping
-model. Per the OMG RT CORBA spec, CORBA priorities have a valid range up
-to 32767, where a larger value indicates a higher priority. The current
-config file assumes that the Multiprocessor Priority Ceiling Protocol is
-used.
-
-Known Issues:
-TAO does not currently support request buffering, and there are no immediate
-plans to do so. Consequently, the RT CORBA 1.0 Scheduling Service is
-limited in that it will only function properly in systems that do not
-require request buffering on the servant side.
-
-There is a bug in TAO in which mapped priorities are mapped a second time
-when using Client Propagated Priority Ceiling Protocol. This in effect
-lowers the priority that the servant receives. This happens to each
-priority, so there should be no effect on the system.
-
-The config file assumes CORBA priorities in the range of 0 to 32767.
-The Linear Priority Mapping Manager will map these to valid local OS
-priorities. Take care though, in determining the priority range in
-the config file, as low numbers or numbers very close in value may
-produce priority inversion and other issues. For example, if the CORBA
-priorities used for three tasks are 100 200 300, these will all map to
-OS priority 1 in on some real time Linux systems. Please take this into
-account when determining the CORBA priority range to use.
-
-The 1.0 Scheduling service currently works with one orb and one POA.
-If someone tries to install more than one scheduling service (client or server
-side) on a single POA, then it should not add a second interceptor. Please
-use a single scheduling service per POA. Furthermore, there is a bug when
-more than one orb is created, an invalid policy exception is thrown during the
-second call to create_POA. This bug is actively being investigated. In the
-meantime please use the scheduling service with one ORB.
-
-
-
-Future Enhancements:
-ACE_XML
-The current RT CORBA 1.0 Scheduling Service uses a private method to
-read the config file. This will soon be replaced with a new XML based config
-file using ACE_XML to parse the config file.
-
-Priority Lanes
-Although not currently implemented, Priority Lanes and Thread Borrowing
-may increase performance as they would help to prevent lower priority
-tasks from exhausting all threads. This is considered a possible future
-enhancement.
-
-Client Interceptor
-A client interceptor that sends a flag to notify the server interceptor if
-schedule_activity() was used to set the client priority. If
-schedule_activity() was not used, then the server should probably not try
-and schedule server execution using MPCP. Doing so adds competition to other
-method calls by other client requests that were scheduled with
-schedule_activity().
-
-References
-The Object Management Group, Real Time CORBA 1.0 Specification, www.omg.org
-Liu, Jane, Real Time Systems, Prentice Hall, 2000
-
-
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp
deleted file mode 100644
index 3a1ebb803b3..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.cpp
+++ /dev/null
@@ -1,450 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ClientScheduler_i.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#include "RTCosScheduling_ClientScheduler_i.h"
-
-#if !defined (__ACE_INLINE__)
-#include "RTCosScheduling_ClientScheduler_i.i"
-#endif /* __ACE_INLINE__ */
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-
-/**
- * Note - Before making this file with Makefile.RTCosScheduling, please make
- * sure that you first comment out the following line from the
- * RTCosSchedulingS.h file:
- * //#include "tao/PortableServer/PortableServerS.h"
- */
-
-#include "tao/ORB_Core.h"
-#include "tao/LocalObject.h"
-#include "tao/PortableInterceptorC.h"
-
-namespace TAO
-{
-
-/// Constructor
-RTCosScheduling_ClientScheduler_i::RTCosScheduling_ClientScheduler_i (
- const CORBA::ORB_var orb,
- char *node_name,
- char *file)
-{
- ACE_TRY_NEW_ENV
- {
- /// Read the resources and ceilings from the config file
- /// and put them into the activity_map_
- if ( !ACE_OS::strcmp(file,"") || file == NULL)
- {
- ACE_DEBUG((LM_DEBUG,
- "No config supplied to the ServerScheduler, "
- "Server will not scheudle object execution "
- "(ServerScheduler interceptor not installed)"));
- }
- else if (!tasks(node_name, file, &activity_map_))
- {
- ACE_DEBUG((LM_DEBUG,"Invalid Filename given, aborting!\n"));
- ACE_OS::exit(1);
- }
- // The tasks were successfully read in, create the client interceptor
- else
- {
-#ifdef TAO_HAS_INTERCEPTORS
- ACE_NEW_THROW_EX(this->client_interceptor_,
- RTCosScheduling_ClientScheduler_Interceptor(orb),
- CORBA::NO_MEMORY());
- ACE_CHECK;
-
- TAO_ORB_Core *orb_core = orb->orb_core();
-
- /// First, get a list of all interceptors currently registered
- TAO_ClientRequestInterceptor_List::TYPE &interceptors =
- orb_core->client_request_interceptors();
-
-
- /// Now check to see if the ServerScheduler Interceptor has already
- /// been registered
- u_int i;
- u_int unregistered = 1;
- for (i = 0; i < interceptors.size() && unregistered; ++i)
- {
- if (ACE_OS::strncmp(interceptors[i]->_interface_repository_id (),
- this->client_interceptor_->_interface_repository_id(),
- ACE_OS::strlen(
- this->client_interceptor_->_interface_repository_id()-2))
- == 0)
- {
- /// The interceptor is already registered,
- /// don't try to register it again
- unregistered = 0;
- }
- }
-
- /// if the ServerScheduler Interceptor was not registered by
- /// another POA then register it now
- if (unregistered)
- {
- orb_core->add_interceptor(this->client_interceptor_
- ACE_ENV_ARG_PARAMETER);
- }
-#endif /* TAO_HAS_INTERCEPTORS */
-
- /// Now resolve a reference to the Real Time ORB
- CORBA::Object_var rt_obj =
- orb->resolve_initial_references("RTORB"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // Get a reference to the real time orb
- RTCORBA::RTORB_var rt_orb =
- RTCORBA::RTORB::_narrow (rt_obj.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- /// resolve a reference to RT Current
- rt_obj =
- orb->resolve_initial_references ("RTCurrent"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- this->current_ =
- RTCORBA::Current::_narrow (rt_obj.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK
-
- /// Resolve a reference to the Linear Priority Mapping Manager
- rt_obj =
- orb->resolve_initial_references("PriorityMappingManager"
- ACE_ENV_ARG_PARAMETER);
- RTCORBA::PriorityMappingManager_var mapping_manager =
- RTCORBA::PriorityMappingManager::_narrow(rt_obj.in()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- /// Create the Linear Priority Mapping Manager
- ACE_NEW_THROW_EX(this->pm_,
- TAO_Linear_Priority_Mapping(
- ACE_SCHED_FIFO),
- CORBA::NO_MEMORY());
- // WHERE the parameter is one of SCHED_OTHER, SCHED_FIFO, or SCHED_RR
-
- mapping_manager->mapping(this->pm_);
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_ERROR((LM_ERROR, "Could not configure the orb"));
- ACE_OS::exit(1);
- }
- ACE_ENDTRY;
-}
-
-
-/// Implementation skeleton destructor
-RTCosScheduling_ClientScheduler_i::~RTCosScheduling_ClientScheduler_i (void)
-{
- delete this->pm_;
-#ifdef TAO_HAS_INTERCEPTORS
- delete this->client_interceptor_;
-#endif /* TAO_HAS_INTERCEPTORS */
-}
-
-
-void RTCosScheduling_ClientScheduler_i::schedule_activity (
- const char * activity_name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((
- CORBA::SystemException,
- RTCosScheduling::UnknownName))
-{
- /// Look up the priority using the activity name in the activity map
- COS_SCHEDULER_ACTIVITY_VALUE priority;
- CORBA::Short result =
- this->activity_map_.find(activity_name,
- priority);
-
- /// If the activity/priority was found, set the current to the
- /// appropriate priority.
- if (result != -1)
- {
- this->current_->the_priority(priority
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
- /// If the activity was not found, throw an UnknownName exception.
- else
- {
- ACE_THROW (RTCosScheduling::UnknownName());
- }
-}
-
-
-int
-RTCosScheduling_ClientScheduler_i::tasks(
- const char *node_name,
- const char *file_name,
- CosSchedulerActivityMap *activity_map)
-{
- /// get the activity list just for the particular node
- const unsigned int BUF_MAX = 256;
-
- FILE *fp = ACE_OS::fopen(file_name, "r");
- /// Make sure we can open the file
- if (fp == NULL)
- {
- /// Error return of we cannot open the file.
- ACE_ERROR_RETURN((LM_ERROR,
- "Could not find the config file %s, aborting\n",
- file_name),
- 0);
- }
-
-
- char line[BUF_MAX], key[16];
- ACE_OS::strsncpy(key, "Node ", sizeof(key));
- ACE_OS::strcat(key, node_name);
-
- /// Skip to the appropriate node
- ACE_OS::clearerr(fp);
- do
- {
- ACE_OS::fgets(line, BUF_MAX, fp);
- }
- while (ACE_OS::strncmp(line, key, ACE_OS::strlen(key)) != 0);
-
- /// Make sure we did not hit the end of file
- if (ACE_OS::last_error() == EOF)
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Node %s not found in config file\n",
- node_name),
- 0);
- }
-
- /// Skip to the appropriate task section of the node
- ACE_OS::clearerr(fp);
- do
- {
- ACE_OS::fgets(line, BUF_MAX, fp);
- }
- while (ACE_OS::strncmp(line, "Tasks:", ACE_OS::strlen("Tasks:")) != 0);
-
- /// Make sure we did not hit the end of file
- if (ACE_OS::last_error() == EOF)
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Task list not found for node %s\n",
- node_name),
- 0);
- }
-
- CORBA::Short done = 0;
- COS_SCHEDULER_ACTIVITY_KEY name;
- COS_SCHEDULER_ACTIVITY_VALUE priority;
- u_int delimiter;
-
- /// read each activity/priority pair from the config file
- while (!done)
- {
- /// get the activity name
- ACE_OS::fgets(line, BUF_MAX, fp);
-
- /// check to make sure we have not reached the end of the list.
- if (ACE_OS::strncmp(line, "END", ACE_OS::strlen("END")) != 0)
- {
- name = ACE_CString(line);
- delimiter = name.find('\t');
- priority = ACE_OS::atoi(ACE_OS::strchr(line, '\t'));
- if (delimiter < name.length() && delimiter > 0)
- {
- activity_map->bind(name.substr(0, delimiter), priority);
- }
- else
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Error in reading activities from %s",
- file_name),
- 0);
- }
- }
- else
- {
- done = 1;
- }
- }
-
- return 1;
-}
-
-RTCosScheduling_ClientScheduler_Interceptor::RTCosScheduling_ClientScheduler_Interceptor() : name_("RTCosScheduling_Client_Interceptor")
-{
- ACE_TRY_NEW_ENV
- {
- /// resolve a reference to RT Current
- int argc = 0;
- CORBA::ORB_var orb = CORBA::ORB_init (argc,
- 0,
- 0
- ACE_ENV_ARG_PARAMETER);
- CORBA::Object_var obj =
- orb->resolve_initial_references ("RTCurrent"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_OS::exit(1);
- }
- else
- {
- this->current_ =
- RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER);
- }
- ACE_CHECK;
-
- obj =
- orb->resolve_initial_references("CodecFactory"
- ACE_ENV_ARG_PARAMETER);
-
- IOP::CodecFactory_var codec_factory;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Could not initialize client interceptor, aborting!\n"));
- ACE_OS::exit(1);
- }
- else
- {
- codec_factory = IOP::CodecFactory::_narrow(obj.in());
- }
-
-
- IOP::Encoding encoding;
- encoding.format = IOP::ENCODING_CDR_ENCAPS;
- encoding.major_version = 1;
- encoding.minor_version = 2;
-
- this->codec_ = codec_factory->create_codec(encoding);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "There was an error constructing the "
- "ClientScheduler Interceptor\n");
- }
- ACE_ENDTRY;
-}
-
-
-RTCosScheduling_ClientScheduler_Interceptor::RTCosScheduling_ClientScheduler_Interceptor(
- const CORBA::ORB_var orb) : name_("RTCosScheduling_Client_Interceptor")
-{
- ACE_TRY_NEW_ENV
- {
- /// resolve a reference to RT Current
- CORBA::Object_var obj =
- orb->resolve_initial_references ("RTCurrent"
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_OS::exit(1);
- }
- else
- {
- this->current_ =
- RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER);
- }
- ACE_TRY_CHECK;
-
- obj =
- orb->resolve_initial_references("CodecFactory"
- ACE_ENV_ARG_PARAMETER);
-
- // set up the codec factory to create the codec necessary to
- // encode the octet stream for the service context
- IOP::CodecFactory_var codec_factory;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Could not initialize client interceptor, aborting!\n"));
- ACE_OS::exit(1);
- }
- else
- {
- codec_factory = IOP::CodecFactory::_narrow(obj.in());
- }
-
-
- IOP::Encoding encoding;
- encoding.format = IOP::ENCODING_CDR_ENCAPS;
- encoding.major_version = 1;
- encoding.minor_version = 2;
-
- // Create the codec
- this->codec_ = codec_factory->create_codec(encoding);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in creating Client Interceptor\n");
- }
- ACE_ENDTRY;
-}
-
-
-void
-RTCosScheduling_ClientScheduler_Interceptor::send_request (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_UNUSED_ARG(ri);
- ACE_TRY
- {
-
- // Get the Corba priority that the activity is currently running at
- CORBA::Any the_priority_as_any;
- the_priority_as_any <<=
- this->current_->the_priority();
- ACE_TRY_CHECK;
-
- // Set up a service context to hold the priority
- IOP::ServiceContext sc;
- sc.context_id = IOP::RTCorbaPriority;
-
- // Convert the priority to an octet stream
- // (that is how service contexts send data)
- sc.context_data =
- ACE_reinterpret_cast(
- IOP::ServiceContext::_tao_seq_Octet_context_data &,
- *this->codec_->encode(the_priority_as_any));
- ACE_TRY_CHECK;
-
- // add the service context
- ri->add_request_service_context(sc, 0);
- ACE_TRY_CHECK;
-
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "ERROR - in Client interceptor\n");
- ACE_TRY_THROW (CORBA::INTERNAL ());
- }
- ACE_ENDTRY;
-}
-
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h
deleted file mode 100644
index d5a216ee469..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ClientScheduler_i.h
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#ifndef CLIENT_SCHEDULER_I_H
-#define CLIENT_SCHEDULER_I_H
-
-#include /**/ "ace/pre.h"
-
-/**
- * Note - Before making this file with Makefile.RTCosScheduling, please make
- * sure that you first comment out the following line from the
- * RTCosSchedulingS.h file:
- * //#include "tao/PortableServer/PortableServerS.h"
- */
-
-#include "ace/Map_T.h"
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#if defined (__BORLANDC__)
-#pragma option push -w-rvl -w-rch -w-ccc -w-inl
-#endif /* __BORLANDC__ */
-
-
-#if defined(_MSC_VER)
-#if (_MSC_VER >= 1200)
-#pragma warning(push)
-#endif /* _MSC_VER >= 1200 */
-#pragma warning(disable:4250)
-#endif /* _MSC_VER */
-
-#include "ace/SString.h"
-#include <orbsvcs/RTCosSchedulingC.h>
-#include <orbsvcs/RTCosScheduling/RTCosScheduling_export.h>
-#include "tao/RTCORBA/Priority_Mapping_Manager.h"
-#include "tao/RTCORBA/Linear_Priority_Mapping.h"
-
-
-namespace TAO {
-
-#ifndef COS_SCHEDULER_ACTIVITY_MAP
-#define COS_SCHEDULER_ACTIVITY_MAP
- /**
- * This typedef is used in RTCosScheduling_ClientScheduler
- * to map activity names,stored as an ACE_CString,
- * to CORBA priorities
- */
- typedef ACE_CString COS_SCHEDULER_ACTIVITY_KEY;
- typedef CORBA::Long COS_SCHEDULER_ACTIVITY_VALUE;
-
- typedef ACE_Map_Manager_Adapter<
- COS_SCHEDULER_ACTIVITY_KEY,
- COS_SCHEDULER_ACTIVITY_VALUE,
- ACE_Noop_Key_Generator<COS_SCHEDULER_ACTIVITY_KEY> >
- CosSchedulerActivityMap;
-#endif /* ACTIVITY_MAP */
-
-#if TAO_HAS_INTERCEPTORS
-/**
- * @class ClientRequestInterceptor
- *
- * @brief Simple concrete client request interceptor.
- */
-class RTCosScheduling_ClientScheduler_Interceptor
- : public PortableInterceptor::ClientRequestInterceptor
-{
-public:
-
- RTCosScheduling_ClientScheduler_Interceptor();
- RTCosScheduling_ClientScheduler_Interceptor(const CORBA::ORB_var orb);
-
- virtual ~RTCosScheduling_ClientScheduler_Interceptor() { }
- /**
- * @name Methods Required by the Client Request Interceptor
- * Interface
- *
- * These are methods that must be implemented since they are pure
- * virtual in the abstract base class. They are the canonical
- * methods required for all client request interceptors.
- */
- //@{
- /// Return the name of this ClientRequestInterceptor.
- //
- virtual char * name (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void send_request (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- virtual void send_poll (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void receive_reply (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- virtual void receive_exception (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- virtual void receive_other (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
- //@}
-
-private:
-
- /// The name of the interceptor
- const char* name_;
-
- /// reference to set local priority
- RTCORBA::Current_var current_;
-
- IOP::Codec_var codec_;
-
-};
-#endif /* TAO_HAS_INTERCEPTORS */
-
-/**
- * @class RTCosScheduling_ClientScheduler
- *
- * @brief Used in conjunction with the class ServerScheduler to
- * provide RTCORBA 1.0 compliant scheduling
- *
- * This class provides the framework necessary for a client node
- * to retrieve scheduling information from a config file and set
- * the local OS priority.
- *
- */
-class TAO_RTCosScheduling_Export RTCosScheduling_ClientScheduler_i :
- public virtual RTCosScheduling::ClientScheduler,
- public virtual CORBA::LocalObject
-{
-
- public:
-//@{
- /*
- * Constructs a new ClientScheduler object for use on a client
- * that wishes to use the RTCORBA 1.0 Scheduling Service.
- *
- * @param orb The orb
- * @param node The name of the node the client resides on
- */
- RTCosScheduling_ClientScheduler_i (CORBA::ORB_var orb,
- char* node,
- char* file);
-
- ///Destructor
- virtual ~RTCosScheduling_ClientScheduler_i (void);
-
-
- /**
- * Called by clients to set the local thread priority to
- * that specified in the scheduling config file
- *
- * @param activity_name the name of the activity that signifies
- * the desired priority
- */
- virtual void schedule_activity (
- const char *activity_name
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((
- CORBA::SystemException,
- RTCosScheduling::UnknownName));
-//@}
-
- private:
- /// The map to match activity names with corba priorities
- CosSchedulerActivityMap activity_map_;
-
- /// RT Current, to change the priority of the thread
- RTCORBA::Current_var current_;
-
- /// RT Corba Priority Mapping
- RTCORBA::PriorityMapping *pm_;
-
-#if TAO_HAS_INTERCEPTORS
- /// The Server Interceptor that handles the PCP control
- RTCosScheduling_ClientScheduler_Interceptor *client_interceptor_;
-#endif /* TAO_HAS_INTERCEPTORS */
-
- int tasks(const char *node_name,
- const char *file_name,
- CosSchedulerActivityMap *activity_map);
-
-};
-
-}
-
-#if defined (__ACE_INLINE__)
-#include "RTCosScheduling_ClientScheduler_i.i"
-#endif /* __ACE_INLINE__ */
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-#pragma warning(pop)
-#endif /* _MSC_VER */
-
-#if defined (__BORLANDC__)
-#pragma option pop
-#endif /* __BORLANDC__ */
-
-
-
-#include /**/ "ace/post.h"
-#endif /* CLIENT_SCHEDULER_I */
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i
deleted file mode 100644
index 3f30182575f..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.i
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ClientScheduler_i.i
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-ACE_INLINE char *
-TAO::RTCosScheduling_ClientScheduler_Interceptor::name (
- ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException))
-{
-return CORBA::string_dup(this->name_);
-}
-
-ACE_INLINE void
-TAO::RTCosScheduling_ClientScheduler_Interceptor::destroy (
- ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException))
-{
-}
-
-ACE_INLINE void
-TAO::RTCosScheduling_ClientScheduler_Interceptor::send_poll (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_UNUSED_ARG(ri);
-}
-
-ACE_INLINE void
-TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_reply (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_UNUSED_ARG(ri);
-}
-
-ACE_INLINE void
-TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_exception (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_UNUSED_ARG(ri);
-}
-
-ACE_INLINE void
-TAO::RTCosScheduling_ClientScheduler_Interceptor::receive_other (
- PortableInterceptor::ClientRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC ((CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_UNUSED_ARG(ri);
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp
deleted file mode 100644
index d7ff04632eb..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.cpp
+++ /dev/null
@@ -1,531 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_PCP_Manager.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#include "RTCosScheduling_PCP_Manager.h"
-
-#if !defined (__ACE_INLINE__)
-#include "RTCosScheduling_PCP_Manager.i"
-#endif /* __ACE_INLINE__ */
-
-
-
-namespace TAO {
-
-struct
-CosSchedulingLockNode *CosSchedulingLockNode::next()
-{
- /// INT_MAX is a special value indicating the end of a list
- if (this->next_offset_ == INT_MAX)
- {
- return 0;
- }
- else
- {
- return ACE_reinterpret_cast(CosSchedulingLockNode *,
- (ACE_reinterpret_cast(int, this) + this->next_offset_)
- );
- }
-}
-
-void
-CosSchedulingLockNode::next(struct CosSchedulingLockNode *next_lock)
-{
- /// INT_MAX is a special value indicating the end of a list
- if (next_lock == 0)
- {
- this->next_offset_ = INT_MAX;
- }
- else
- {
- this->next_offset_ =
- (ACE_reinterpret_cast(int, next_lock) -
- ACE_reinterpret_cast(int, this));
- }
-}
-
-const CosSchedulingLockNode& CosSchedulingLockNode::operator=(const CosSchedulingLockNode& L)
-{
- this->threadID_ = L.threadID_;
- this->priority_ceiling_ = L.priority_ceiling_;
- this->priority_ = L.priority_;
- this->elevated_priority_ = L.elevated_priority_;
-
- return *this;
-}
-
-CosSchedulingLockList::CosSchedulingLockList(CosSchedulingLockNode *lock_array,
- int size,
- ACE_SYNCH_MUTEX *mutex)
-{
- ACE_TRY_NEW_ENV
- {
- /*
- * The pointers to the beginnings of the lists must be globally visible,
- * so I have chosen to use the first three locks in the array.
- * lock_array[0].next() (== free_->next() ) -> start of free list
- * lock_array[1].next() (== granted_->next()) -> start of granted list
- * lock_array[2].next() (== pending_->next()) -> start of pending list
- */
-
- /// start of the free list
- lock_array[0].next(&lock_array[3]);
-
- /// start with an empty granted list
- lock_array[1].next(0);
-
- /// start with an empty pending list
- lock_array[2].next(0);
-
- /// initialize the free list (link together the elements in the array)
- for (int i = 3; i < (size - 1); ++i)
- {
- lock_array[i].next(&lock_array[i + 1]);
- ACE_NEW_THROW_EX(lock_array[i].condition_,
- ACE_Thread_Condition<ACE_Thread_Mutex>(*mutex),
- CORBA::NO_MEMORY());
- }
- ACE_TRY_CHECK;
- lock_array[size - 1].next(0); /// terminate the free list
-
-
- /// Update the positions
- this->free_ = &lock_array[0];
- this->granted_ = &lock_array[1];
- this->pending_ = &lock_array[2];
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in generating Locklist on ServerScheduler\n");
- }
- ACE_ENDTRY;
-}
-
-void
-CosSchedulingLockList::destroy(int size)
-{
- for (int i = 3; i < size; ++i)
- {
- this->free_[i].condition_->remove();
- delete &free_[i].condition_;
- }
-}
-
-int
-CosSchedulingLockList::grant_lock(const CosSchedulingLockNode& L)
-{
- if (this->free_->next() == 0)
- {
- return 0; /// no free nodes left
- }
- /// take a node from the free list
- CosSchedulingLockNode *new_lock = this->free_->next();
- this->free_->next(this->free_->next()->next());
- *new_lock = L;
-
- if ((this->granted_->next() == 0)
- || (this->granted_->next()->priority_ceiling_ <= L.priority_ceiling_))
- {
- /// insert at the head of the list
- new_lock->next(this->granted_->next());
- this->granted_->next(new_lock);
- }
- else
- {
- /// find the proper location to insert
- /// the new lock (ordered by priority ceiling)
- CosSchedulingLockNode *current_lock = granted_->next();
- while ((current_lock->next() != 0)
- && (current_lock->next()->priority_ceiling_ > L.priority_ceiling_))
- {
- current_lock = current_lock->next();
- }
- new_lock->next(current_lock->next());
- current_lock->next(new_lock);
- }
-
- return 1;
-}
-
-int
-CosSchedulingLockList::defer_lock(const CosSchedulingLockNode& L,
- ACE_SYNCH_MUTEX & mutex)
-{
- if (this->free_->next() == 0)
- {
- return 0; /// no free nodes left
- }
- CosSchedulingLockNode *new_lock = free_->next();
- this->free_->next(free_->next()->next());
- *new_lock = L;
-
- if ((this->pending_->next() == 0)
- ||(this->pending_->next()->priority_ <= L.priority_))
- {
- /// insert at the head of the list
- new_lock->next(this->pending_->next());
- this->pending_->next(new_lock);
- }
- else
- {
- /// find the proper location to insert the new lock
- CosSchedulingLockNode *current_lock = pending_->next();
- while ((current_lock->next() != 0)
- && (current_lock->next()->priority_ceiling_ > L.priority_ceiling_))
- {
- current_lock = current_lock->next();
- }
- new_lock->next(current_lock->next());
- current_lock->next(new_lock);
- }
-
-
- if (new_lock->condition_)
- {
- new_lock->condition_->wait(mutex);
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-
-int
-CosSchedulingLockList::release_lock(CosSchedulingLockNode& L)
-{
- if (this->granted_->next() == 0)
- {
- return 0; /// empty list of granted locks
- }
-
- if (this->granted_->next()->threadID_ == L.threadID_)
- {
- /// remove the lock at the head of the list and put it on the free list
-
- /// Set the Lock to the next one in the granted list
- L = *(this->granted_->next());
-
- /// (sets next offset from previous statement)
- L.next(this->granted_->next()->next());
-
- /// set the next granted's next one to be the next free one
- this->granted_->next()->next(this->free_->next());
-
- /// Set the next free one to be the next granted one
- this->free_->next(this->granted_->next());
-
- /// Set the next granted on to be the Lock's next one
- this->granted_->next(L.next());
-
- /// Set the Locks next on to NULL
- L.next(0);
-
- return 1;
- }
-
- /// find the lock to remove
- CosSchedulingLockNode *current_lock = granted_->next();
- while ((current_lock->next() != 0)
- && (current_lock->next()->threadID_ != L.threadID_))
- {
- current_lock = current_lock->next();
- }
- if (current_lock->next() != 0)
- {
- /// removes lock and prepends to the free list, as above
- L = *(current_lock->next());
- L.next(current_lock->next()->next());
- current_lock->next()->next(this->free_->next());
- this->free_->next(current_lock->next());
- current_lock->next(L.next());
- L.next(0);
- return 1;
- }
-
- return 0;
-}
-
-int
-CosSchedulingLockList::remove_deferred_lock(CosSchedulingLockNode& L)
-{
- if (this->pending_->next() == 0)
- {
- return 0; /// empty list of pending locks
- }
-
- /// take pending lock off the head of the list
- /// (highest priority request) and add to the free list
- L = *(this->pending_->next());
- L.next(this->pending_->next()->next());
- this->pending_->next()->next(free_->next());
- this->free_->next(this->pending_->next());
- this->pending_->next(L.next());
- L.next(0);
- return 1;
-}
-
-PCP_Manager::PCP_Manager(CosSchedulingLockList *locks,
- ACE_SYNCH_MUTEX *mutex,
- RTCORBA::Current_var current)
-: locks_(locks),
- mutex_(mutex),
- current_(current)
-{
- /// Get the thread ID
- this->threadID_ = (ACE_OS::getpid() << 16) + ACE_Thread::self();
-}
-
-void
-PCP_Manager::lock(int priority_ceiling, int priority)
-{
- ACE_TRY_NEW_ENV
- {
-
- /// we do not want the thread to be pre-empted inside
- /// this critical section, so we
- /// will set its priority to the highest possible
- // This is not completely necessary since the server should be running
- // at RTCORBA::maxPriority
- this->current_->the_priority(RTCORBA::maxPriority);
- this->mutex_->acquire();
- ACE_TRY_CHECK;
-
- /// create a structure to store my own lock request
- CosSchedulingLockNode MyLock;
- MyLock.threadID_ = this->threadID_;
- MyLock.priority_ceiling_ = MyLock.elevated_priority_ = priority_ceiling;
- MyLock.priority_ = priority;
- /// Start by assuming we don't have the lock then go look for it
- int HaveLock = 0;
- while (!HaveLock)
- {
- /// retrieve the highest priority ceiling from the list
- CosSchedulingLockNode *highest_lock = this->locks_->highest_ceiling();
- int prio_ceiling;
- /// check to see if are at the highest priority,
- /// if so set the priority ceiling
- if (highest_lock)
- {
- prio_ceiling = highest_lock->priority_ceiling_;
- }
- else
- {
- prio_ceiling = -1;
- }
-
- /// if I hold the highest ceiling or my priority is higher than the
- /// highest ceiling, just get the lock
- if ((highest_lock == 0) ||
- (highest_lock->threadID_ == this->threadID_) ||
- (highest_lock->priority_ceiling_ < priority))
- {
- /// Try and grant the lock, if it is not granted,
- /// then there are unfortunately no more lock nodes
- if (!this->locks_->grant_lock (MyLock))
- {
- ACE_ERROR ((LM_ERROR,
- "Fatal error--out of lock nodes!!!"));
- }
- /// Lock obtained from grant_lock, don't loop again
- HaveLock = 1;
- }
- else
- {
- /// There is another lock out there active, put this one
- /// in the list of pending locks
- if (this->locks_->defer_lock(MyLock, *this->mutex_))
- {
- /// done waiting for it, remove it from the pending
- /// lock list, will try again to grant on next loop
- /// iteration
- this->locks_->remove_deferred_lock (MyLock);
- }
- else
- {
- ACE_ERROR((LM_ERROR,
- "Error in deferring lock\n"));
- }
- ACE_TRY_CHECK;
- }
- }
-
- /// remove mutex on the lock list
- this->mutex_->release();
- ACE_TRY_CHECK;
-
- /// at this point we have the right to set the OS priority
- /// Do so at the priority ceiline.
- this->current_->the_priority(priority_ceiling);
-
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in locking the node for ServerScheduler\n");
- }
- ACE_ENDTRY;
-}
-
-void PCP_Manager::release_lock()
-{
- ACE_TRY_NEW_ENV
- {
- /// To prevent pre-emption in the critical section,
- /// which could lead to unbounded blocking
- this->current_->the_priority(RTCORBA::maxPriority);
-
- /// set up the mutex
- this->mutex_->acquire();
- ACE_TRY_CHECK;
-
- /// remove the lock node from the list of locks
- CosSchedulingLockNode L;
- L.threadID_ = this->threadID_;
- this->locks_->release_lock(L);
-
- /// Done with the list, release the mutex
- this->mutex_->release();
- ACE_TRY_CHECK;
-
- /// Let the highest priority lock signal the condition variable
- CosSchedulingLockNode *waiter = this->locks_->highest_priority();
- if (waiter)
- {
- waiter->condition_->signal();
- }
- ACE_TRY_CHECK;
-
- /// We do not need to restore priority because we have already set this
- // thread to wait at RTCORBA::maxPriority at the start of this method
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in unlocking the node for ServerScheduler\n");
- }
- ACE_ENDTRY;
-}
-
-
-PCP_Manager_Factory::PCP_Manager_Factory(char *shared_file)
-{
- ACE_TRY_NEW_ENV
- {
-#if !defined (ACE_LACKS_MMAP)
- char temp_file[MAXPATHLEN + 1];
-
- /// Get the temporary directory
- if (ACE::get_temp_dir (temp_file,
- MAXPATHLEN - ACE_OS_String::strlen(shared_file))
- == -1)
- ACE_ERROR ((LM_ERROR,
- "Temporary path too long\n"));
- ACE_TRY_CHECK;
-
- /// Add the filename to the end
- ACE_OS_String::strcat (temp_file, shared_file);
-
- /// Store in the global variable.
- this->shm_key_ = temp_file;
-
-#ifndef ACE_LACKS_MKSTEMP
- if (ACE_OS::mkstemp (this->shm_key_) == 0
-#else
- char *new_key = ACE_OS::mktemp (this->shm_key_);
- if (ACE_OS::fopen(new_key, "w") != NULL
-#endif /* ACE_LACKS_MKSTEMP */
- || (ACE_OS::unlink (this->shm_key_) == -1
-#ifndef ACE_HAS_WINCE
- && errno == EPERM
-#endif /* ACE_HAS_WINCE */
- ))
- ACE_ERROR ((LM_ERROR,
- "(%P|%t) %p\n",
- this->shm_key_));
- ACE_TRY_CHECK;
-
-#else /* !ACE_LACKS_MMAP */
- ACE_ERROR ((LM_INFO,
- "mmap is not supported on this platform\n"));
-#endif /* !ACE_LACKS_MMAP */
-
- /// determine space requirements for the lock list
- u_int CosSchedulingLockList_space =
- LOCK_ARRAY_SIZE * sizeof (CosSchedulingLockNode);
-
- /// allocate space in shared memory for size of the lock list
- int result =
- this->mem_.open(this->shm_key_, CosSchedulingLockList_space);
-
- /// Make sure shared memory CosSchedulingLockList is ok, scheduling
- /// service cannot run without it.
- if (result == -1)
- {
- ACE_ERROR((LM_ERROR,
- "Error in creating the shared memory segment to hold "
- "Lock information, aborting ServerScheduler.\n"));
- ACE_OS::exit(1);
- }
-
- ACE_CHECK;
-
- /// Make the shared memory a place for a lock list
- this->lock_array_ = ACE_static_cast(CosSchedulingLockNode *,
- this->mem_.malloc(CosSchedulingLockList_space));
- if (this->lock_array_ == 0)
- {
- ACE_ERROR((LM_ERROR,
- "Error in creating Lock Array, locking impossible.\n"));
- }
- ACE_TRY_CHECK;
-
- /// get the pointer to the list of locks and
- /// construct a lock list manager object
- if (this->lock_array_ == 0)
- {
- ACE_ERROR((LM_ERROR,
- "No Pointer for LockArray, aborting\n"));
- ACE_OS::exit(1);
- }
- else
- {
- /// construct the new lock list in shared memory
- ACE_NEW_THROW_EX(this->locks_,
- CosSchedulingLockList(this->lock_array_,
- LOCK_ARRAY_SIZE,
- &this->mutex_),
- CORBA::NO_MEMORY()
- );
- ACE_TRY_CHECK;
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in Setting lock factory for ServerScheduler\n");
- }
- ACE_ENDTRY;
-}
-
-PCP_Manager_Factory::~PCP_Manager_Factory()
-{
- /// throw out all the old Locks
- this->locks_->destroy(LOCK_ARRAY_SIZE);
- /// and delete the shared memory
- this->mem_.remove();
- delete this->locks_;
-}
-
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h
deleted file mode 100644
index ee789204bd5..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.h
+++ /dev/null
@@ -1,314 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_PCP_Manager.h
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- * @author based upon work by Greg Cooper
- * @author University of Rhode Island
- */
-//=============================================================================
-
-#ifndef PCP_MANAGER_H
-#define PCP_MANAGER_H
-#include /**/ "ace/pre.h"
-
-#include "ace/Synch.h"
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-#pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Shared_Memory_MM.h"
-#include "ace/Map_T.h"
-#include "ace/SString.h"
-#include "tao/RTCORBA/RTCORBA.h"
-
-
-#if defined(_MSC_VER)
-#if (_MSC_VER >= 1200)
-#pragma warning(push)
-#endif /* _MSC_VER >= 1200 */
-#pragma warning(disable:4250)
-#endif /* _MSC_VER */
-
-#if defined (__BORLANDC__)
-#pragma option push -w-rvl -w-rch -w-ccc -w-inl
-#endif /* __BORLANDC__ */
-
-
-
-namespace TAO {
-
-
-#if !defined (LOCK_ARRAY_SIZE)
- #define LOCK_ARRAY_SIZE 1024
-#endif /* LOCK_ARRAY_SIZE */
-
-#ifndef COS_SCHEDULING_CONTAINERS
-#define COS_SCHEDULING_CONTAINERS
- /*
- * ResourceCeilingMap
- *
- * This typedef is used in the RTCORBA 1.0 Scheduling Service to
- * map names of resources on a server with priority ceilings.
- */
- typedef ACE_CString COS_SCHEDULING_RESOURCE_KEY;
- typedef int COS_SCHEDULING_RESOURCE_VALUE;
-
- typedef ACE_Map_Manager_Adapter<
- COS_SCHEDULING_RESOURCE_KEY,
- COS_SCHEDULING_RESOURCE_VALUE,
- ACE_Noop_Key_Generator<COS_SCHEDULING_RESOURCE_KEY> > CosSchedulingResourceMap;
-#endif /* COS_SCHEDULING_CONTAINERS */
-
-
-/**
-* @class CosSchedulingLockList
-*
-* @brief This program provides an abstract mechanism
-* for the PCP_Manager class to store its lists of locks in
-* shared memory. It provides an efficient allocation and
-* retrieval system and uses a pseudo-linked-list based on
-* offsets (rather than absolute pointers) which allows it
-* to work regardless of where it is mapped in a process's
-* address space. This means it can be used in a shared
-* memory segment.
-*
-*/
-struct CosSchedulingLockNode
-{
- /// unique ID of the thread owning the lock
- int threadID_;
-
- /// the lock's priority ceiling
- int priority_ceiling_;
-
- /// the thread's original global priority
- int priority_;
-
- /// the thread's elevated priority
- int elevated_priority_;
-
- /// offset to the next lock in the list
- int next_offset_;
-
- /// Condition Variable to wait on Mutex
- ACE_Thread_Condition<ACE_Thread_Mutex> *condition_;
-
- /**
- * Translates the offset to the next lock
- * to a pointer and returns it
- */
- struct CosSchedulingLockNode *next();
-
- /**
- * Translates the pointer into an offset and
- * stores it in the structure
- */
- void next(struct CosSchedulingLockNode *Next);
-
- /**
- * Copies the relevant fields while preserving those which should not be
- *modified
- */
- const CosSchedulingLockNode& operator=(const CosSchedulingLockNode& L);
-
-};
-
-class CosSchedulingLockList
-{
- public:
- /**
- * Creates a CosSchedulingLockList structure using the storage in lock_array:
- * if Init is 1, the array is initialized to indicate that
- * none of the nodes are in use
- *
- * @param lock_array The shared memory space for the CosSchedulingLockList
- * @param size The size of the lock list
- * @param mutex the mutex that guards the CosSchedulingLockList
- */
- CosSchedulingLockList(CosSchedulingLockNode *lock_array, int size, ACE_Thread_Mutex *mutex);
-
- /**
- * Calls ACE_Thread::remove() on all conditions in the list;
- * should only be called when SchedInit terminates
- * (may not be necessary then)
- *
- * @param size the number of locks to destroy, starting at head
- */
- void destroy(int size);
-
- /**
- * Adds L to the granted list, if space is available
- * (returns success); the list of granted locks is kept sorted
- * by priority-ceiling so that the highest ceiling can
- * be found quickly at the head
- *
- * @param L the CosSchedulingLockNode to add to the granted list.
- */
- int grant_lock(const CosSchedulingLockNode& L);
-
- /**
- * Adds L to the pending list, if space is available
- * (returns success); the list of pending locks is kept
- * sorted by priority so that the highest priority thread
- * awaiting a lock will be at the head; returns pointer to
- * condition variable upon success, NULL otherwise
- *
- * @param L The lock to add to the pending list.
- * @param mutex The mutex that guards the locks.
- */
- int defer_lock(const CosSchedulingLockNode& L,
- ACE_Thread_Mutex &mutex);
-
- /**
- * Removes a node from the granted lock list whose threadID_
- * matches that of L, replacing L with the removed lock
- *
- * @param L released lock
- */
- int release_lock(CosSchedulingLockNode& L);
-
- /**
- * Removes the first node from the pending lock list,
- * replacing L with the removed lock
- *
- * @param L Reference to the lock that is removed from pending
- */
- int remove_deferred_lock(CosSchedulingLockNode& L);
-
- /**
- * Returns a pointer to the node containing the highest ceiling (the
- * first node in the list of held locks)
- */
- CosSchedulingLockNode *highest_ceiling();
-
-
- /**
- * Returns a pointer to the node with the highest priority
- * (from the first node in the list of pending locks
- */
- CosSchedulingLockNode *highest_priority();
-
- private:
-
- /// A list of free locks
- CosSchedulingLockNode *free_;
-
- /// A list of Free locks
- CosSchedulingLockNode *granted_;
-
- /// A list of pending locks awaiting to be locked
- CosSchedulingLockNode *pending_;
-
-};
-
-
-/**
-* @class PCP_Manager
-*
-* @brief PCP_Manager handles Priority Ceiling Control Protocol for the
-* RTCORBA 1.0 ServerScheduler
-* Each thread needs a PCP_Manager object: these are created by the
-* PCP_Manager_Factory object, of which only one is needed per process
-*
-*/
-class PCP_Manager
-{
-public:
-
- /**
- * Initializes a PCP_Manager object with the given lists, mutex,
- * condition variable, and priority mapper.
- *
- * @param locks A list of the locks to use in the PCP_Manager.
- * @param mutex The mutex to guard the locks.
- */
- PCP_Manager(CosSchedulingLockList *locks,
- ACE_SYNCH_MUTEX *mutex,
- RTCORBA::Current_var current);
-
- /**
- * Acquires a lock on a shared resource using the
- * priority ceiling protocol
- *
- * @param PriorityCeiling The priority ceiling of the lock
- * @param priority The priority to lock at.
- */
- void lock(int PriorityCeiling, int Priority);
-
- /**
- * Releases a lock previously granted with lock()
- */
- void release_lock();
-
- /**
- * Returns the mThreadID data member
- */
- int threadID();
-
- private:
- int threadID_; /// ID of thread owning this object
- CosSchedulingLockList *locks_; /// combined list of locks
- ACE_SYNCH_MUTEX *mutex_; /// Mutex to guard lock list
- RTCORBA::Current_var current_; /// reference to set local priority
-
-};
-
-/**
-* @class PCP_Manager_Factory
-*
-* @brief Creates PCP_Managers. Each process needs only one of
-* these objects: it can create a PCP_Manager object for each
-* thread as need arises.
-*/
-class PCP_Manager_Factory
-{
-public:
-
- /**
- * Initializes a PCP_Manager_Factory: each process should only
- * do this once. It attaches a shared memory segment and retrieves
- * pointers to the granted and pending lock lists as well as
- * the mutex and condition variable.
- */
- PCP_Manager_Factory(char *shared_file);
-
- ~PCP_Manager_Factory();
-
- /**
- * Creates a new PCP manager object using the lists and
- * synchronization objects found in shared memory.
- */
- PCP_Manager New_PCP_Manager(RTCORBA::Current_var current);
-
- private:
- CosSchedulingLockList *locks_; /// lists of granted and pending locks
- ACE_SYNCH_MUTEX mutex_; /// The mutex for locking the lock list
- ACE_Shared_Memory_MM mem_; /// shared memory space
- char *shm_key_; /// Key for shared memory
- CosSchedulingLockNode *lock_array_; /// The lock list
-
-};
-
-
-}
-
-#if defined (__ACE_INLINE__)
-#include "RTCosScheduling_PCP_Manager.i"
-#endif /* __ACE_INLINE__ */
-
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-#pragma warning(pop)
-#endif /* _MSC_VER */
-
-#if defined (__BORLANDC__)
-#pragma option pop
-#endif /* __BORLANDC__ */
-
-#include /**/ "ace/post.h"
-#endif /* PCP_MANAGER_H */
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i
deleted file mode 100644
index ec0aa3de003..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_PCP_Manager.i
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_PCP_Manager.i
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- * @author based upon work by Greg Cooper
- * @author University of Rhode Island
- */
-//=============================================================================
-
-/**
- * Returns a pointer to the node containing the highest ceiling (the
- * first node in the list of held locks)
- */
-ACE_INLINE TAO::CosSchedulingLockNode *
-TAO::CosSchedulingLockList::highest_ceiling()
-{
- return this->granted_->next();
-}
-
-
-/**
- * Returns a pointer to the node with the highest priority
- * (from the first node in the list of pending locks
- */
-ACE_INLINE TAO::CosSchedulingLockNode *
-TAO::CosSchedulingLockList::highest_priority()
-{
- return this->pending_->next();
-}
-
-
-/**
- * Returns the mThreadID data member
- */
-ACE_INLINE int
-TAO::PCP_Manager::threadID()
-{
- return this->threadID_;
-}
-
-
-/**
- * Creates a new PCP manager object using the lists and
- * synchronization objects found in shared memory.
- */
-ACE_INLINE TAO::PCP_Manager
-TAO::PCP_Manager_Factory::New_PCP_Manager(RTCORBA::Current_var current)
-{
- return TAO::PCP_Manager(this->locks_, &this->mutex_, current);
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp
deleted file mode 100644
index 38a0c267bda..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.cpp
+++ /dev/null
@@ -1,748 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ServerScheduler_i.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#include "RTCosScheduling_ServerScheduler_i.h"
-
-#if !defined (__ACE_INLINE__)
-#include "RTCosScheduling_ServerScheduler_i.i"
-#endif /* __ACE_INLINE__ */
-
-
-
-#include "tao/ORB_Core.h"
-#include "tao/PortableServer/POA.h"
-#include "tao/RTCORBA/Linear_Priority_Mapping.h"
-#include "tao/RTCORBA/Priority_Mapping_Manager.h"
-#include "tao/RTPortableServer/RTPortableServer.h"
-
-
-namespace TAO {
-
-RTCosScheduling_ServerScheduler_i::
- RTCosScheduling_ServerScheduler_i (char *node,
- char *file,
- char *shared_file,
- int numthreads
- )
-: num_threads_(numthreads),
- shared_file_(shared_file)
-{
- /// Read the Resources and ceilings from the config file
- /// and put them into the resource_map_
- if ( !ACE_OS::strcmp(file,"") || file == NULL || !TAO_HAS_INTERCEPTORS)
- {
- ACE_DEBUG((LM_DEBUG,
- "Server will not schedule object execution "
- "(ServerScheduler interceptor not installed)"));
- }
- else if (!resources(node, file, &this->resource_map_))
- {
- ACE_OS::exit(1);
- }
-}
-
-
-// Implementation skeleton destructor
-RTCosScheduling_ServerScheduler_i::~RTCosScheduling_ServerScheduler_i (void)
-{
- delete this->pm_;
-}
-
-
-int
-RTCosScheduling_ServerScheduler_i::configure_ORB(TAO_ORB_Core *orb_core)
-{
- ACE_TRY_NEW_ENV
- {
-
- // Get an object reference to orb from the orb core
- CORBA::ORB_ptr orb = orb_core->orb();
-
-#if TAO_HAS_INTERCEPTORS
- /// Construct the interceptor that the Scheduling service uses
- RTCosScheduling_ServerScheduler_Interceptor *server_interceptor = 0;;
- ACE_NEW_THROW_EX(server_interceptor,
- RTCosScheduling_ServerScheduler_Interceptor(orb,
- this->shared_file_,
- &this->object_name_map_,
- &this->resource_map_),
- CORBA::NO_MEMORY());
- ACE_TRY_CHECK;
-
- /// First, get a list of all interceptors currently registered
- TAO_ServerRequestInterceptor_List::TYPE &interceptors =
- orb_core->server_request_interceptors();
-
-
- /// Now check to see if the ServerScheduler Interceptor has already
- /// been registered
- u_int i;
- u_int unregistered = 1;
- for (i = 0; i < interceptors.size() && unregistered; ++i)
- {
- if (ACE_OS::strncmp(
- interceptors[i]->_interface_repository_id (),
- server_interceptor->_interface_repository_id(),
- ACE_OS::strlen(
- server_interceptor->_interface_repository_id())-2)
- == 0)
- {
- /// The interceptor is already registered,
- /// don't try to register it again
- unregistered = 0;
- }
- }
-
- if (unregistered)
- {
- orb_core->add_interceptor(server_interceptor
- ACE_ENV_ARG_PARAMETER);
- }
-#endif /* TAO_HAS_INTERCEPTORS */
-
- /// Resolve a reference to the Linear Priority Mapping Manager
- CORBA::Object_var rt_obj =
- orb->resolve_initial_references("PriorityMappingManager"
- ACE_ENV_ARG_PARAMETER);
- if (CORBA::is_nil(rt_obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Priority Mapping Manager not available, "
- "RT not used on server!\n"));
- return 0;
- }
- RTCORBA::PriorityMappingManager_var mapping_manager =
- RTCORBA::PriorityMappingManager::_narrow(rt_obj.in()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- /// Create the Linear Priority Mapping Manager
- ACE_NEW_THROW_EX(this->pm_,
- TAO_Linear_Priority_Mapping(
- ACE_SCHED_FIFO),
- CORBA::NO_MEMORY());
- // WHERE the parameter is one of SCHED_OTHER, SCHED_FIFO, or SCHED_RR
-
- mapping_manager->mapping(this->pm_);
- ACE_TRY_CHECK;
-
- }
- ACE_CATCHANY
- {
- ACE_ERROR((LM_ERROR, "Could not configure the orb"));
- ACE_OS::exit(1);
- }
- ACE_ENDTRY;
- return 1;
-}
-
-
-::PortableServer::POA_ptr RTCosScheduling_ServerScheduler_i::create_POA (
- PortableServer::POA_ptr parent,
- const char * adapter_name,
- PortableServer::POAManager_ptr a_POAManager,
- const CORBA::PolicyList & policies)
- ACE_THROW_SPEC (( CORBA::SystemException
- , PortableServer::POA::AdapterAlreadyExists
- , PortableServer::POA::InvalidPolicy))
-{
- ACE_TRY_NEW_ENV
- {
- // We should hopefully be using more than one thread
-#if defined (ACE_HAS_THREADS)
- u_int has_threads = 2;
-#else
- u_int has_threads = 1;
-#endif /* ACE_HAS_THREADS */
-
- /// Get the ORB core from the POA Manager
- TAO_POA *tao_poa = parent->_tao_poa_downcast();
- TAO_ORB_Core &orb_core = tao_poa->orb_core();
-
- /// configure the orb (linear mapping, register interceptor, etc.)
- configure_ORB(&orb_core);
-
- /// Get an object reference to orb from the orb core
- CORBA::ORB_ptr orb = orb_core.orb();
-
- /// Now resolve a reference to the Real Time ORB
- CORBA::Object_var rt_obj =
- orb->resolve_initial_references("RTORB"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- if (CORBA::is_nil(rt_obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "RTORB not available, "
- "not using RT on the server!\n"));
- return 0;
- }
-
- /// Get the reference to the RT ORB
- RTCORBA::RTORB_var rt_orb =
- RTCORBA::RTORB::_narrow (rt_obj.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil(rt_orb.in ()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Could not initialize orb for the server interceptor, "
- "RT will not be used!\n"));
- return 0;
- }
-
-
- // Copy the non realtime policy list
- CORBA::PolicyList poa_policy_list = policies;
- poa_policy_list.length (policies.length()+has_threads);
-
- /// Set the server to run at max priority so it will immediately
- /// process intercepts and place new requests into the approprate queue
- poa_policy_list[policies.length()] =
- rt_orb->create_priority_model_policy (
- RTCORBA::SERVER_DECLARED,
- RTCORBA::maxPriority
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // Set up the threadpool
-#if defined (ACE_HAS_THREADS)
- CORBA::ULong stacksize = 0;
-
- /// ideally 1, but not implemented in TAO. This is fine as long
- /// the system is not overloaded and can accept all requests
- CORBA::Boolean allow_request_buffering = 0;
-
- // ideally max_concurrent - num_threads_, but no request buffer in TAO
- CORBA::ULong max_buffered_requests = 0;
-
- /// TAO does not have, nor plan to implement, request buffering
- CORBA::ULong max_request_buffer_size = 0;
-
- /// This comes from the model of the system
- CORBA::ULong static_threads = this->num_threads_;
-
- CORBA::ULong dynamic_threads = 0;
-
- /// Set it to max so there will be no priority inversions
- /// while the request is accepted
- CORBA::ULong default_thread_priority = RTCORBA::maxPriority;
-
- /// Create the threadpool the server uses to execute requests
- RTCORBA::ThreadpoolId threadpool =
- rt_orb->create_threadpool (stacksize,
- static_threads,
- dynamic_threads,
- default_thread_priority,
- allow_request_buffering,
- max_buffered_requests,
- max_request_buffer_size
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- poa_policy_list[policies.length()+1] =
- rt_orb->create_threadpool_policy (threadpool
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-#endif /* ACE_HAS_THREADS */
-
-
- /// Create the RT POA
- PortableServer::POA_var poa =
- parent->create_POA (adapter_name,
- a_POAManager,
- poa_policy_list
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- RTPortableServer::POA_var rt_poa =
- RTPortableServer::POA::_narrow(poa.in()
- ACE_ENV_ARG_PARAMETER);
-
- /// return the reference to the RT POA
- return rt_poa.in();
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "ERROR: Could not create a Scheduling Service POA\n");
- return parent;
- }
- ACE_ENDTRY;
- return parent;
-}
-
-void
-RTCosScheduling_ServerScheduler_i::schedule_object (
- CORBA::Object_ptr obj,
- const char * name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException
- , RTCosScheduling::UnknownName))
-{
- /// Check and see if the object name is in the resource map,
- /// if it is, then there is a ceiling for it and we can add it to the
- /// object name map. If there is no name in the resource map, then there
- /// is no valid ceiling for it, throw an UnknownName exception
- if (this->resource_map_.find(name) == -1)
- {
- ACE_THROW (RTCosScheduling::UnknownName());
- }
- else
- {
- this->object_name_map_.rebind(obj, name);
- ACE_CHECK;
- }
-}
-
-
-
-#if TAO_HAS_INTERCEPTORS
-RTCosScheduling_ServerScheduler_Interceptor::RTCosScheduling_ServerScheduler_Interceptor(
- CORBA::ORB_ptr orb,
- char *shared_file,
- CosSchedulingObjectMap *ObjectMap,
- CosSchedulingResourceMap *resourceMap)
-: name_("RTCosScheduling_ServerScheduler_Interceptor"),
- orb_(orb),
- object_name_map_(ObjectMap),
- resource_map_(resourceMap)
-{
- ACE_TRY_NEW_ENV
- {
- // Create a new Priority Ceiling protocol manager factory
- ACE_NEW_THROW_EX(this->PCP_factory_,
- PCP_Manager_Factory(shared_file),
- CORBA::NO_MEMORY());
- ACE_CHECK;
-
-
- /// Now resolve a reference to the Real Time ORB
- CORBA::Object_var obj =
- this->orb_->resolve_initial_references("RTORB"
- ACE_ENV_ARG_PARAMETER);
- RTCORBA::RTORB_var rt_orb;
- ACE_TRY_CHECK;
- if (CORBA::is_nil(obj.in ()))
- {
- ACE_DEBUG((LM_DEBUG,
- "RTORB not available, "
- "RT ServerScheduler not used!\n"));
- return;
- }
- else
- {
- rt_orb =RTCORBA::RTORB::_narrow (obj.in ()
- ACE_ENV_ARG_PARAMETER);
- }
-
- // Now get a reference to the RTCurrent
- // for the PCP manager to control
- obj = this->orb_->resolve_initial_references ("RTCurrent"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "RTCurrent not available, "
- "RT ServerScheduler not used!\n"));
- return;
- }
- else
- {
- this->current_ =
- RTCORBA::Current::_narrow (obj.in ()
- ACE_ENV_ARG_PARAMETER);
- }
-
- // Now get a reference to the codec factory to create a codec that will
- // decode the client priority sent in the service context
- obj =
- this->orb_->resolve_initial_references ("CodecFactory"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil(obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Could not initalize the server interceptor Codec, "
- "RT ServerScheduler not used!\n"));
- return;
- }
- else
- {
- this->codec_factory_ = IOP::CodecFactory::_narrow(obj.in());
- }
- ACE_TRY_CHECK;
-
-
- // Set up the codec
- IOP::Encoding encoding;
- encoding.format = IOP::ENCODING_CDR_ENCAPS;
- encoding.major_version = 1;
- encoding.minor_version = 2;
-
- this->codec_ = this->codec_factory_->create_codec(encoding);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Error in installing the interceptor for the ServerScheduler\n");
- }
- ACE_ENDTRY;
-}
-
-
-// Delete the objects we have made in the interceptor
-RTCosScheduling_ServerScheduler_Interceptor::~RTCosScheduling_ServerScheduler_Interceptor()
-{
- this->object_name_map_ = 0;
- this->resource_map_ = 0;
- delete this->PCP_factory_;
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::receive_request(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
-ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_TRY_NEW_ENV
- {
-
- ACE_CString name = "";
- COS_SCHEDULING_RESOURCE_VALUE ceiling, base_priority = 0;
-
- // Now get a reference to the POA, this is used to get a reference
- // to the target object
- PortableInterceptor::AdapterName *adapter_seq = ri->adapter_name();
- ACE_TRY_CHECK;
- PortableServer::POA_var poa;
- const char *adapter_name =
- (*adapter_seq)[adapter_seq->length() - 1];
-
- CORBA::Object_var obj =
- this->orb_->resolve_initial_references("RootPOA"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- if (CORBA::is_nil(obj.in()))
- {
- ACE_DEBUG((LM_DEBUG,
- "Could not get root POA, "
- "RT scheduling not used on server!\n"));
- return;
- }
- else
- {
- PortableServer::POA_var root_poa =
- PortableServer::POA::_narrow(obj.in());
- if (CORBA::is_nil(root_poa.in()))
- {
- ACE_ERROR((LM_ERROR,
- "No POA found in Interceptor prio not set\n"));
- return;
- }
- poa = root_poa->find_POA(adapter_name, 0);
- ACE_TRY_CHECK;
- }
-
- // decode the Client priority sent in the service context
- IOP::ServiceId id = IOP::RTCorbaPriority;
- IOP::ServiceContext_var sc;
- ACE_TRY_EX(svc_req)
- {
- sc = ri->get_request_service_context(id);
- ACE_TRY_CHECK_EX(svc_req);
- }
- ACE_CATCHANY
- {
- // The RTCorbaPriority was not sent, do not use real time
- // Here we cannot let the server continue to run at
- // RTCORBA::maxPriority, so change to RTCORBA::minPriority
- // and things will run best effort
- this->current_->the_priority(RTCORBA::minPriority);
- return;
- }
- ACE_ENDTRY;
-
- CORBA::OctetSeq ocSeq = CORBA::OctetSeq(
- sc->context_data.length(),
- sc->context_data.length(),
- sc->context_data.get_buffer(),
- 0);
- ACE_TRY_CHECK;
-
- CORBA::Any the_priority_as_any;
- the_priority_as_any = *this->codec_->decode(ocSeq);
- ACE_TRY_CHECK;
-
- RTCORBA::Priority the_client_priority;
- the_priority_as_any >>= the_client_priority;
- ACE_TRY_CHECK;
-
- // get the object from the object ID that is passed
- CORBA::OctetSeq_var oseq = ri->object_id();
- PortableServer::ObjectId oid(oseq -> length(),
- oseq -> length(),
- oseq -> get_buffer(),
- 0);
- ACE_TRY_CHECK;
-
- CORBA::Object_var target_object = poa->id_to_reference(oid);
- ACE_TRY_CHECK;
-
- // Check to make sure we have the object as scheduled by the
- // ServerScheduler
- if (this->object_name_map_->find(target_object, name) == -1 )
- {
- ACE_DEBUG((LM_DEBUG,
- "Object not found in config file, "
- "RT ServerScheduler not used!\n"));
- // Here we cannot let the server continue to run at
- // RTCORBA:: maxPriority, so it will run at minPriority
- // and things will run best effort
- this->current_->the_priority(RTCORBA::minPriority);
- return;
- }
-
- /// If the object name if found, get its priority ceiling
- if (this->resource_map_->find(name, ceiling) == -1 )
- {
- /// We could not find the Object's priority ceiling
- /// given its name
- ACE_DEBUG((LM_DEBUG,
- "Object Resource Ceiling not found in config file, "
- "RT ServerScheduler not used!\n"));
- // Here we cannot let the server continue to run at
- // RTCORBA:: maxPriority, so it will run at minPriority
- // and things will run best effort
- this->current_->the_priority(RTCORBA::minPriority);
- return;
- }
-
- /// Get the base priority of the server
- if (this->resource_map_->find("BP", base_priority) == -1 )
- {
- ACE_DEBUG((LM_DEBUG,
- "Server Base Priority not found in config file, "
- "RTServerScheduler not used!\n"));
- // Here we cannot let the server continue to run at
- // RTCORBA:: maxPriority, so it will run at minPriority
- // and things will run best effort
- this->current_->the_priority(RTCORBA::minPriority);
- return;
- }
-
- /// Create a new PCP Manager to manage the priority control
- COS_SCHEDULING_INVOCATION_VALUE p = 0;
- ACE_NEW_THROW_EX(p,
- PCP_Manager(
- PCP_factory_->New_PCP_Manager(this->current_)),
- CORBA::NO_MEMORY());
- ACE_TRY_CHECK;
-
- // Get the lock on the resource, using MPCP
-
- p->lock(ceiling + base_priority,
- the_client_priority + base_priority);
-
- /// store the thread in the invocation list
- this->invocation_map_.bind(
- p->threadID(),
- p);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Unknown exception in the receive request\n");
- ACE_OS::exit(1);
- }
- ACE_ENDTRY;
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::send_reply(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((
- CORBA::SystemException
- ))
-{
- ACE_UNUSED_ARG(ri);
- finish_execution();
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::finish_execution()
-{
- PCP_Manager *p = 0;
- this->invocation_map_.unbind((ACE_OS::getpid() << 16) + ACE_Thread::self(),p);
- if (p)
- {
- /// Release the Lock on the Thread
- p->release_lock();
- /// Delete the PCP Manager
- delete p;
- }
-}
-
-char*
-RTCosScheduling_ServerScheduler_Interceptor::name(ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((CORBA::SystemException))
-{
- return CORBA::string_dup(this->name_);
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::destroy(ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((CORBA::SystemException))
-{
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::receive_request_service_contexts(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_UNUSED_ARG(ri);
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::send_exception(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
-{
- ACE_UNUSED_ARG(ri);
- finish_execution();
-}
-
-void
-RTCosScheduling_ServerScheduler_Interceptor::send_other(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest))
- {
- ACE_UNUSED_ARG(ri);
- finish_execution();
- }
-
-#endif /* TAO_HAS_INTERCEPTORS */
-
-int
-RTCosScheduling_ServerScheduler_i::resources(
- const char *node_name,
- const char *file_name,
- CosSchedulingResourceMap *resource_map)
-{
- /// get the resource list list just for the particular node
- const unsigned int BUF_MAX = 256;
- FILE *fp = ACE_OS::fopen(file_name, "r");
- if (fp == NULL)
- {
- /// Error return of we cannot open the file.
- ACE_ERROR_RETURN((LM_ERROR,
- "Could not find the config file %s, aborting\n",
- file_name),
- 0);
- }
-
-
- char line[BUF_MAX], key[16];
- ACE_OS::strncpy(key, "Node ", sizeof("Node "));
- ACE_OS::strcat(key, node_name);
-
- ACE_OS::clearerr(fp);
- do
- {
- ACE_OS::fgets(line, BUF_MAX, fp);
- }
- while (ACE_OS::strncmp(line,key,ACE_OS::strlen(key)) != 0);
- /// Make sure we did not hit the end of file
- if (ACE_OS::last_error() == EOF)
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Node %s not found in config file, aborting\n",
- node_name),
- 0);
- }
-
-
- /// Skip to the appropriate Task section of the node
- ACE_OS::clearerr(fp);
- do
- {
- ACE_OS::fgets(line, BUF_MAX, fp);
- }
- while (ACE_OS::strncmp(line,
- "Resources:",
- ACE_OS::strlen("Resources:")
- ) != 0);
-
- /// Make sure we did not hit the end of file
- if (ACE_OS::last_error() == EOF)
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Resource list not found for node %s, aborting\n",
- node_name),
- 0);
- }
-
- CORBA::Short done = 0;
- COS_SCHEDULING_RESOURCE_KEY name;
- COS_SCHEDULING_RESOURCE_VALUE priority;
- u_int delimiter;
-
- /// read each activity/priority pair from the config file
- while (!done)
- {
- /// get the activity name
- ACE_OS::fgets(line, BUF_MAX, fp);
-
- /// check to make sure we have not reached the end of the list.
- if (ACE_OS::strncmp(line, "END", ACE_OS::strlen(line)-1) != 0)
- {
- name = ACE_CString(line);
- delimiter = name.find('\t');
- priority = ACE_OS::atoi(ACE_OS::strchr(line, '\t'));
- if (delimiter < name.length() && delimiter > 0)
- {
- resource_map->bind(name.substr(0, delimiter), priority);
- }
- else
- {
- ACE_ERROR_RETURN((LM_ERROR,
- "Error in reading resources from %s, aborting",
- file_name),
- 0);
- }
- }
- else
- {
- done = 1;
- }
- }
-
- return 1;
-}
-
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h
deleted file mode 100644
index 9aed85e986e..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ServerScheduler_i.h
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#ifndef SERVER_SCHEDULERI_H
-#define SERVER_SCHEDULERI_H
-
-#include /**/ "ace/pre.h"
-
-/**
- * Note - Before making this file with Makefile.RTCosScheduling, please make
- * sure that you first comment out the following line from the
- * RTCosSchedulingS.h file:
- * //#include "tao/PortableServer/PortableServerS.h"
- */
-
-#include "ace/Map_T.h"
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/SString.h"
-#include <orbsvcs/RTCosSchedulingS.h>
-#include <orbsvcs/RTCosScheduling/RTCosScheduling_export.h>
-#include "RTCosScheduling_PCP_Manager.h"
-
-
-
-#if defined(_MSC_VER)
-#if (_MSC_VER >= 1200)
-#pragma warning(push)
-#endif /* _MSC_VER >= 1200 */
-#pragma warning(disable:4250)
-#endif /* _MSC_VER */
-
-#if defined (__BORLANDC__)
-#pragma option push -w-rvl -w-rch -w-ccc -w-inl
-#endif /* __BORLANDC__ */
-
-
-#ifndef RTCOSSCHEDULING_SERVER_CONTAINERS
-#define RTCOSSCHEDULING_SERVER_CONTAINERS
-
-class TAO::PCP_Manager;
-
-/**
- * CosSchedulingObjectNameMap
- *
- * This typedef is used by the RTCORBA 1.0 ServerScheduler to map
- * CORBA object references to names
- */
-
-typedef CORBA::Object_var COS_SCHEDULING_OBJECT_NAME_KEY;
-typedef ACE_CString COS_SCHEDULING_OBJECT_NAME_VALUE;
-
-ACE_TEMPLATE_SPECIALIZATION
-class ACE_Equal_To< COS_SCHEDULING_OBJECT_NAME_KEY >
-{
- public:
- int operator () (const COS_SCHEDULING_OBJECT_NAME_KEY lhs,
- const COS_SCHEDULING_OBJECT_NAME_KEY rhs) const;
-};
-
-
-namespace TAO {
-
-class CosSchedulingObjectMap_Hash_Key
-{
-public:
- u_long operator () (const COS_SCHEDULING_OBJECT_NAME_KEY &key) const;
-};
-
-typedef ACE_Hash_Map_Manager_Ex_Adapter<
- COS_SCHEDULING_OBJECT_NAME_KEY,
- COS_SCHEDULING_OBJECT_NAME_VALUE,
- CosSchedulingObjectMap_Hash_Key,
- ACE_Equal_To<COS_SCHEDULING_OBJECT_NAME_KEY>,
- ACE_Noop_Key_Generator<COS_SCHEDULING_OBJECT_NAME_KEY> > CosSchedulingObjectMap;
-
-/**
- * This typedef is used in the ServerScheduler to hold a list of
- * priority ceiling protocol managers for each active method call
- * from a client.
- */
-typedef int COS_SCHEDULING_INVOCATION_KEY;
-typedef PCP_Manager * COS_SCHEDULING_INVOCATION_VALUE;
-
-class CosSchedulingInvocation_Hash_key
-{
-public:
- u_long operator () (const COS_SCHEDULING_INVOCATION_KEY &key) const;
-};
-
-typedef ACE_Hash_Map_Manager_Ex_Adapter<
- COS_SCHEDULING_INVOCATION_KEY,
- COS_SCHEDULING_INVOCATION_VALUE,
- CosSchedulingInvocation_Hash_key,
- ACE_Equal_To<COS_SCHEDULING_INVOCATION_KEY>,
- ACE_Noop_Key_Generator<COS_SCHEDULING_INVOCATION_KEY> > CosSchedulingInvocationMap;
-
-
-#endif /* RTCOSSCHEDULING_SERVER_CONTAINERS */
-
-#if TAO_HAS_INTERCEPTORS
- /**
- * @class RTCosScheduling_ServerScheduler_Interceptor
- *
- * @brief The RTCosScheduling_ServerScheduler_Interceptor intercepts CORBA
- * requests on behalf of the RTCORBA 1.0 scheduling service and
- * schedules the requests.
- */
- class RTCosScheduling_ServerScheduler_Interceptor
- : public PortableInterceptor::ServerRequestInterceptor
- {
- public :
- RTCosScheduling_ServerScheduler_Interceptor(CORBA::ORB_ptr orb,
- char *shared_file,
- CosSchedulingObjectMap *CosSchedulingObjectMap,
- CosSchedulingResourceMap *resourceMap);
-
-
- virtual ~RTCosScheduling_ServerScheduler_Interceptor();
-
- virtual char* name(ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((
- CORBA::SystemException));
-
- virtual void destroy( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((CORBA::SystemException));
-
- virtual void receive_request(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- virtual void receive_request_service_contexts(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- virtual void send_reply(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((CORBA::SystemException));
-
- virtual void send_exception(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- virtual void send_other(
- PortableInterceptor::ServerRequestInfo_ptr ri
- ACE_ENV_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC((
- CORBA::SystemException,
- PortableInterceptor::ForwardRequest));
-
- void finish_execution();
-
-
- private:
-
- /// The name of the interceptor
- const char* name_;
-
- /// reference to set local priority
- RTCORBA::Current_var current_;
-
- /// Factory reference to receive PCP_managers
- PCP_Manager_Factory * PCP_factory_;
-
- /// Map to match threadIDs with PCP_Managers
- CosSchedulingInvocationMap invocation_map_;
-
- //The orb
- CORBA::ORB_ptr orb_;
-
- /// Map to match CORBA::Object_vars to names
- CosSchedulingObjectMap *object_name_map_;
-
- /// Map to match Resource names to Ceilings
- CosSchedulingResourceMap *resource_map_;
-
- // The codec to decode incoming CORBA Priorities
- IOP::Codec_var codec_;
-
-
- // The factory to create the codec
- IOP::CodecFactory_var codec_factory_;
- };
-
-#endif /* TAO_HAS_INTERCEPTORS */
-
- /**
- * @class RTCosScheduling_ServerScheduler_i
- *
- * @brief The ServerScheduler class handles server side
- * scheduling for the RTCORBA 1.0 Scheduling Service.
- */
- class TAO_RTCosScheduling_Export RTCosScheduling_ServerScheduler_i
- : public virtual RTCosScheduling::ServerScheduler,
- public virtual CORBA::LocalObject
- {
- public:
- // Constructor
- RTCosScheduling_ServerScheduler_i (char *node,
- char *file,
- char *shared_file,
- int numthreads);
-
- //Destructor
- virtual ~RTCosScheduling_ServerScheduler_i (void);
-
- /**
- * This creates and returns a RT POA for use on the server.
- * It accepts a set of non-RT policies and sets these as
- * well as RT policies (threadpooling and Server Declared).
- *
- * @param parent The poa to base the RT POA upon
- * @param adapter_name the adapter name for the poa
- * @param a_POAManager the poa_manager
- * @param policies the list of non real time policies to be set
- */
- virtual ::PortableServer::POA_ptr create_POA (
- PortableServer::POA_ptr parent,
- const char * adapter_name,
- PortableServer::POAManager_ptr a_POAManager,
- const CORBA::PolicyList & policies)
- ACE_THROW_SPEC ((
- CORBA::SystemException
- , PortableServer::POA::AdapterAlreadyExists
- , PortableServer::POA::InvalidPolicy));
-
- /**
- * This maps a CORBA::Object_var with a name. The names are
- * later associated with priority ceiling stored in the
- * scheduling config file.
- *
- * @param obj the CORBA object reference to associate with a name
- * @param name name to associate with the CORBA object reference
- */
- virtual void schedule_object (CORBA::Object_ptr obj,
- const char * name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC (( CORBA::SystemException
- , RTCosScheduling::UnknownName));
-
- private:
-
- /**
- * This sets the orb for the ServerScheduler,
- * it also resolves references to RT current and sets
- * priority mapping
- */
- int configure_ORB(TAO_ORB_Core *orb_core);
-
- /// RT Current, to change the priority of the thread
-
- /// RT Corba Priority Mapping , uses
- /// Linear Priority Mapping
- RTCORBA::PriorityMapping *pm_;
-
- /// The number of threads in the server threadpool
- int num_threads_;
-
- char *shared_file_;
-
- /// The map to match CORBA::Object_vars
- /// to names
- CosSchedulingObjectMap object_name_map_;
-
- /// The map to match resource names to corba priorities
- CosSchedulingResourceMap resource_map_;
-
- /*
- * resources populates a string/int map with a list of resources (keys)
- * and associated priority ceilings(values)
- *
- * @param node_name the name of the node the client resides on,
- * resources() only retrieves ceilings for the local node
- *
- * @param map resource_map a reference to the resource map to populate
- *
- */
- int resources(const char* node_name,
- const char* file_name,
- CosSchedulingResourceMap * resource_map);
- };
-}
-
-#if defined (__ACE_INLINE__)
-#include "RTCosScheduling_ServerScheduler_i.i"
-#endif /* __ACE_INLINE__ */
-
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-#pragma warning(pop)
-#endif /* _MSC_VER */
-
-#if defined (__BORLANDC__)
-#pragma option pop
-#endif /* __BORLANDC__ */
-
-
-#include /**/ "ace/post.h"
-#endif /* SERVER_SCHEDULERI_H */
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i
deleted file mode 100644
index 2fa91e392b5..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.i
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file RTCosScheduling_ServerScheduler_i.i
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-ACE_INLINE int
-ACE_Equal_To< COS_SCHEDULING_OBJECT_NAME_KEY >::operator () (
- COS_SCHEDULING_OBJECT_NAME_KEY lhs,
- COS_SCHEDULING_OBJECT_NAME_KEY rhs) const
-{
- return lhs->_is_equivalent(rhs.in());
-}
-
-ACE_INLINE u_long
-TAO::CosSchedulingObjectMap_Hash_Key::operator () (
- const COS_SCHEDULING_OBJECT_NAME_KEY &key) const
-{
- u_long value;
- value = key->_hash(LONG_MAX);
- return value;
-}
-
-ACE_INLINE u_long
-TAO::CosSchedulingInvocation_Hash_key::operator () (
- const COS_SCHEDULING_INVOCATION_KEY &key) const
-{
- return ACE_static_cast(u_long, key);
-}
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h b/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h
deleted file mode 100644
index 5eba867d8b5..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling/RTCosScheduling_export.h
+++ /dev/null
@@ -1,54 +0,0 @@
-
-// -*- C++ -*-
-// $Id$
-// Definition for Win32 Export directives.
-// This file is generated automatically by generate_export_file.pl TAO_RTCosScheduling
-// ------------------------------
-#ifndef TAO_RTCOSSCHEDULING_EXPORT_H
-#define TAO_RTCOSSCHEDULING_EXPORT_H
-
-#include "ace/config-all.h"
-
-#if !defined (TAO_RTCOSSCHEDULING_HAS_DLL)
-# define TAO_RTCOSSCHEDULING_HAS_DLL 1
-#endif /* ! TAO_RTCOSSCHEDULING_HAS_DLL */
-
-#if defined (TAO_RTCOSSCHEDULING_HAS_DLL) && (TAO_RTCOSSCHEDULING_HAS_DLL == 1)
-# if defined (TAO_RTCOSSCHEDULING_BUILD_DLL)
-# define TAO_RTCosScheduling_Export ACE_Proper_Export_Flag
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# else /* TAO_RTCOSSCHEDULING_BUILD_DLL */
-# define TAO_RTCosScheduling_Export ACE_Proper_Import_Flag
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# endif /* TAO_RTCOSSCHEDULING_BUILD_DLL */
-#else /* TAO_RTCOSSCHEDULING_HAS_DLL == 1 */
-# define TAO_RTCosScheduling_Export
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARATION(T)
-# define TAO_RTCOSSCHEDULING_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-#endif /* TAO_RTCOSSCHEDULING_HAS_DLL == 1 */
-
-// Set TAO_RTCOSSCHEDULING_NTRACE = 0 to turn on library specific tracing even if
-// tracing is turned off for ACE.
-#if !defined (TAO_RTCOSSCHEDULING_NTRACE)
-# if (ACE_NTRACE == 1)
-# define TAO_RTCOSSCHEDULING_NTRACE 1
-# else /* (ACE_NTRACE == 1) */
-# define TAO_RTCOSSCHEDULING_NTRACE 0
-# endif /* (ACE_NTRACE == 1) */
-#endif /* !TAO_RTCOSSCHEDULING_NTRACE */
-
-#if (TAO_RTCOSSCHEDULING_NTRACE == 1)
-# define TAO_RTCOSSCHEDULING_TRACE(X)
-#else /* (TAO_RTCOSSCHEDULING_NTRACE == 1) */
-# if !defined (ACE_HAS_TRACE)
-# define ACE_HAS_TRACE
-# endif /* ACE_HAS_TRACE */
-# define TAO_RTCOSSCHEDULING_TRACE(X) ACE_TRACE_IMPL(X)
-# include "ace/Trace.h"
-#endif /* (TAO_RTCOSSCHEDULING_NTRACE == 1) */
-
-#endif /* TAO_RTCOSSCHEDULING_EXPORT_H */
-
-// End of auto generated file.
diff --git a/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp b/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp
deleted file mode 100644
index 69b01d560b2..00000000000
--- a/TAO/orbsvcs/orbsvcs/RTCosScheduling_Static.dsp
+++ /dev/null
@@ -1,194 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=RTCosScheduling - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Static.mak" CFG="RTCosScheduling - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "RTCosScheduling - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Static"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD CPP /nologo /O2 /W3 /GX /MD /Zi /GR /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D NDEBUG /D WIN32 /D _WINDOWS /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LIB32=link.exe -lib
-# ADD LIB32 /nologo /out:"..\..\..\lib\TAO_RTCosSchedulings.lib"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Static"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)\orbsvcs" /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\.." /D _DEBUG /D WIN32 /D _WINDOWS /D /D /D /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)\orbsvcs" /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo /o"..\..\..\lib\TAO_RTCosScheduling.bsc"
-LIB32=link.exe -lib
-# ADD LIB32 /nologo /out:"..\..\..\lib\TAO_RTCosSchedulingsd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling - Win32 Release"
-# Name "RTCosScheduling - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ClientScheduler_i.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_PCP_Manager.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\RTCosScheduling\RTCosScheduling_ServerScheduler_i.i"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\RTCosScheduling.idl"
-
-!IF "$(CFG)" == "RTCosScheduling - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\Release\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\RTCosScheduling.idl
-InputName=RTCosScheduling
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Gd -Wb,export_macro=TAO_RTCosScheduling_Export -Wb,export_include=RTCosScheduling\RTCosScheduling_export.h -Gv -I$(TAO_ROOT) -I$(TAO_ROOT)\orbsvcs -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp
index c54b3b02ff4..465f3f4e35d 100644
--- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp
+++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.cpp
@@ -1274,7 +1274,7 @@ TAO_MUF_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info
}
///////////////////////////////////////////////////
-// class TAO_RMS_FAIR_Reconfig_Sched_Strategy //
+// class TAO_RMS_Reconfig_Sched_Strategy //
///////////////////////////////////////////////////
@@ -1284,7 +1284,7 @@ TAO_MUF_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info
// second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t)
+TAO_RMS_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t)
{
// Convert the passed pointers: the double cast is needed to
// make Sun C++ 4.2 happy.
@@ -1320,7 +1320,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const
// then by subpriority.
int result =
- TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (**first,
+ TAO_RMS_Reconfig_Sched_Strategy::compare_priority (**first,
**second);
if (result == 0)
@@ -1341,7 +1341,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const
// the second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
+TAO_RMS_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
const void *t)
{
// Convert the passed pointers: the double cast is needed to
@@ -1382,13 +1382,13 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
return -1;
}
- // First, compare by rate index.
+ // First, compare according to minimal rate index.
- if ((*first)->rate_index < (*second)->rate_index)
+ if ((*first)->rate_index == 0 && (*second)->rate_index != 0)
{
return -1;
}
- else if ((*second)->rate_index < (*first)->rate_index)
+ else if ((*second)->rate_index == 0 && (*first)->rate_index != 0)
{
return 1;
}
@@ -1396,7 +1396,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
// Then compare by priority.
int result =
- TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality (**first,
+ TAO_RMS_Reconfig_Sched_Strategy::compare_criticality (**first,
**second);
if (result != 0)
{
@@ -1412,6 +1412,17 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
return result;
}
+ // Finally, compare by rate index.
+
+ if ((*first)->rate_index < (*second)->rate_index)
+ {
+ return -1;
+ }
+ else if ((*second)->rate_index < (*first)->rate_index)
+ {
+ return 1;
+ }
+
return 0;
}
@@ -1420,19 +1431,19 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
// first one is higher, 0 if they're the same, and 1 if the second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs,
+TAO_RMS_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs,
TAO_Reconfig_Scheduler_Entry &rhs)
{
ACE_UNUSED_ARG (lhs);
ACE_UNUSED_ARG (rhs);
- // In RMS_FAIR, no consideration of criticalities
+ // In plain RMS, no consideration of criticalities
return 0;
}
// Compares two RT_Info entries by criticality alone. Returns -1 if the
// first one is higher, 0 if they're the same, and 1 if the second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs,
+TAO_RMS_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs,
TAO_RT_Info_Tuple &rhs)
{
ACE_UNUSED_ARG (lhs);
@@ -1445,7 +1456,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs
// first one is higher, 0 if they're the same, and 1 if the second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs,
+TAO_RMS_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs,
TAO_Reconfig_Scheduler_Entry &rhs)
{
//differentiate by rate.
@@ -1467,10 +1478,10 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_E
// first one is higher, 0 if they're the same, and 1 if the second one is higher.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs,
+TAO_RMS_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs,
TAO_RT_Info_Tuple &rhs)
{
- // In RMS_FAIR, priority is partitioned based on rate:
+ // In plain RMS, priority is partitioned based on rate:
if (lhs.period < rhs.period)
{
return -1;
@@ -1489,7 +1500,7 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs,
// on the operation characteristics of a representative scheduling entry.
int
-TAO_RMS_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info,
+TAO_RMS_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info,
TAO_Reconfig_Scheduler_Entry &rse)
{
// Global and thread priority of dispatching queue are simply
@@ -1497,292 +1508,10 @@ TAO_RMS_FAIR_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info
info.preemption_priority = rse.actual_rt_info ()->preemption_priority;
info.thread_priority = rse.actual_rt_info ()->priority;
- // In RMS_FAIR, all queues are static
+ // In plain RMS, all queues are static
info.dispatching_type = RtecScheduler::STATIC_DISPATCHING;
return 0;
}
-///////////////////////////////////////////////////
-// class TAO_RMS_MLF_Reconfig_Sched_Strategy //
-///////////////////////////////////////////////////
-
-
-// Ordering function used to qsort an array of TAO_RT_Info_Tuple
-// pointers into a total <priority, subpriority> ordering. Returns -1
-// if the first one is higher, 0 if they're the same, and 1 if the
-// second one is higher.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::total_priority_comp (const void *s, const void *t)
-{
- // Convert the passed pointers: the double cast is needed to
- // make Sun C++ 4.2 happy.
- TAO_Reconfig_Scheduler_Entry **first =
- ACE_reinterpret_cast (TAO_Reconfig_Scheduler_Entry **,
- ACE_const_cast (void *, s));
- TAO_Reconfig_Scheduler_Entry **second =
- ACE_reinterpret_cast (TAO_Reconfig_Scheduler_Entry **,
- ACE_const_cast (void *, t));
-
- // Check the converted pointers.
- if (first == 0 || *first == 0)
- {
- return (second == 0 || *second == 0) ? 0 : 1;
- }
- else if (second == 0 || *second == 0)
- {
- return -1;
- }
-
- // sort disabled entries to the end
- if ((*first)->enabled_state () == RtecScheduler::RT_INFO_DISABLED)
- {
- return ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) ? 0 : 1;
- }
- else if ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED)
- {
- return -1;
- }
-
-
- // Check whether they are distinguished by priority, and if not,
- // then by subpriority.
-
- int result =
- TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (**first,
- **second);
-
- if (result == 0)
- {
- return TAO_Reconfig_Sched_Strategy_Base::compare_subpriority (**first,
- **second);
- }
- else
- {
- return result;
- }
-}
-
-
-// Ordering function used to qsort an array of RT_Info_Tuple
-// pointers into a total ordering for admission control. Returns
-// -1 if the first one is higher, 0 if they're the same, and 1 if
-// the second one is higher.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::total_admission_comp (const void *s,
- const void *t)
-{
- // Convert the passed pointers: the double cast is needed to
- // make Sun C++ 4.2 happy.
- TAO_RT_Info_Tuple **first =
- ACE_reinterpret_cast (TAO_RT_Info_Tuple **,
- ACE_const_cast (void *, s));
-
- TAO_Reconfig_Scheduler_Entry * first_entry =
- ACE_LONGLONG_TO_PTR (TAO_Reconfig_Scheduler_Entry *,
- (*first)->volatile_token);
-
- TAO_RT_Info_Tuple **second =
- ACE_reinterpret_cast (TAO_RT_Info_Tuple **,
- ACE_const_cast (void *, t));
-
- TAO_Reconfig_Scheduler_Entry * second_entry =
- ACE_LONGLONG_TO_PTR (TAO_Reconfig_Scheduler_Entry *,
- (*second)->volatile_token);
-
- // Check the converted pointers.
- if (first == 0 || *first == 0)
- {
- return (second == 0 || *second == 0) ? 0 : 1;
- }
- else if (second == 0 || *second == 0)
- {
- return -1;
- }
-
- // sort disabled tuples to the end
- if ((*first)->enabled_state () == RtecScheduler::RT_INFO_DISABLED)
- {
- return ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED) ? 0 : 1;
- }
- else if ((*second)->enabled_state () == RtecScheduler::RT_INFO_DISABLED)
- {
- return -1;
- }
-
- // First, compare by rate index.
-
- if ((*first)->rate_index < (*second)->rate_index)
- {
- return -1;
- }
- else if ((*second)->rate_index < (*first)->rate_index)
- {
- return 1;
- }
-
- // Then compare by priority.
-
- int result =
- TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality (**first,
- **second);
- if (result != 0)
- {
- return result;
- }
-
- // Then compare by subpriority.
-
- result = TAO_Reconfig_Sched_Strategy_Base::compare_subpriority (*first_entry,
- *second_entry);
- if (result != 0)
- {
- return result;
- }
-
- return 0;
-}
-
-
-// Compares two RT_Info entries by criticality alone. Returns -1 if the
-// first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs,
- TAO_Reconfig_Scheduler_Entry &rhs)
-{
- // In RMS+MLF, priority is per criticality level: compare criticalities.
-
- if (lhs.actual_rt_info ()->criticality > rhs.actual_rt_info ()->criticality)
- {
- return -1;
- }
- else if (lhs.actual_rt_info ()->criticality < rhs.actual_rt_info ()->criticality)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-// Compares two RT_Info entries by criticality alone. Returns -1 if the
-// first one is higher, 0 if they're the same, and 1 if the second one is higher.
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(TAO_RT_Info_Tuple &lhs,
- TAO_RT_Info_Tuple &rhs)
-{
- if (lhs.criticality > rhs.criticality)
- {
- return -1;
- }
- else if (lhs.criticality < rhs.criticality)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
-// Compares two RT_Info entries by priority alone. Returns -1 if the
-// first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (TAO_Reconfig_Scheduler_Entry &lhs,
- TAO_Reconfig_Scheduler_Entry &rhs)
-{
- // In RMS+MLF, priority is per criticality level: compare criticalities.
- int result = TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_criticality(lhs, rhs);
-
- if (result != 0)
- {
- return result;
- }
-
- // Same criticality: if high criticality, differentiate by rate.
- if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rhs))
- {
- if (lhs.actual_rt_info ()->period < rhs.actual_rt_info ()->period)
- {
- return -1;
- }
- else if (lhs.actual_rt_info ()->period > rhs.actual_rt_info ()->period)
- {
- return 1;
- }
- }
-
- // They're the same if we got here.
- return 0;
-}
-
-
-// Compares two RT_Info tuples by priority alone. Returns -1 if the
-// first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::compare_priority (TAO_RT_Info_Tuple &lhs,
- TAO_RT_Info_Tuple &rhs)
-{
- // In RMS_Dyn, priority is first partitioned per criticality level:
- // compare criticalities.
-
- if (lhs.criticality > rhs.criticality)
- {
- return -1;
- }
- else if (lhs.criticality < rhs.criticality)
- {
- return 1;
- }
-
- // Same criticality: if high criticality, differentiate by rate.
- else if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rhs))
- {
- if (lhs.period < rhs.period)
- {
- return -1;
- }
- else if (lhs.period > rhs.period)
- {
- return 1;
- }
- }
-
- // They're the same if we got here.
- return 0;
-}
-
-// Fills in a static dispatch configuration for a priority level, based
-// on the operation characteristics of a representative scheduling entry.
-
-int
-TAO_RMS_MLF_Reconfig_Sched_Strategy::assign_config (RtecScheduler::Config_Info &info,
- TAO_Reconfig_Scheduler_Entry &rse)
-{
- // Global and thread priority of dispatching queue are simply
- // those assigned the representative operation it will dispatch.
- info.preemption_priority = rse.actual_rt_info ()->preemption_priority;
- info.thread_priority = rse.actual_rt_info ()->priority;
-
- // Critical queues are static, and non-critical ones are
- // laxity-based in this strategy.
- if (TAO_Reconfig_Sched_Strategy_Base::is_critical (rse))
- {
- info.dispatching_type = RtecScheduler::STATIC_DISPATCHING;
- }
- else
- {
- info.dispatching_type = RtecScheduler::LAXITY_DISPATCHING;
- }
-
- return 0;
-}
-
-
#endif /* TAO_RECONFIG_SCHED_UTILS_C */
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
index c093698b2aa..7779a9b3453 100644
--- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
+++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
@@ -512,75 +512,9 @@ public:
// on the operation characteristics of a representative scheduling entry.
};
-class TAO_RTSched_Export TAO_RMS_FAIR_Reconfig_Sched_Strategy
- : public TAO_Reconfig_Sched_Strategy_Base
- // = TITLE
- // A scheduling strategy that implements the Boeing RMS-Dynamic
- // scheduling algorithm, and the Honeywell MNO admission control
- // algorithm.
- //
- // = DESCRIPTION
- // The strategy assigns static thread and global priority
- // according to criticality and rate, assigns static subpriority
- // according to importance and then topological order, and assigns
- // a dispatching configuration with a static dispatching queue for
- // each high criticality rate, and a single minimum laxity
- // dispatching queue for all low criticality operations. It
- // admits the lowest rate-index tuple for each operation, then
- // admits operations at their highest admissible rates in priority
- // order.
-{
-public:
-
- static int total_priority_comp (const void *, const void *);
- // Ordering function used to qsort an array of RT_Info_Tuple
- // pointers into a total <priority, subpriority> ordering. Returns
- // -1 if the first one is higher, 0 if they're the same, and 1 if
- // the second one is higher.
-
- static int total_admission_comp (const void *, const void *);
- // Ordering function used to qsort an array of RT_Info_Tuple
- // pointers into a total ordering for admission control. Returns
- // -1 if the first one is higher, 0 if they're the same, and 1 if
- // the second one is higher.
-
- static int compare_criticality(TAO_Reconfig_Scheduler_Entry &lhs,
- TAO_Reconfig_Scheduler_Entry &rhs);
- // Compares two entries by criticality alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int compare_criticality(TAO_RT_Info_Tuple &lhs,
- TAO_RT_Info_Tuple &rhs);
- // Compares two entries by criticality alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int compare_priority (TAO_Reconfig_Scheduler_Entry &,
- TAO_Reconfig_Scheduler_Entry &);
- // Compares two entries by priority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int compare_priority (TAO_RT_Info_Tuple &,
- TAO_RT_Info_Tuple &);
- // Compares two tuples by priority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int compare_admission_order (TAO_RT_Info_Tuple &,
- TAO_RT_Info_Tuple &);
- // Compares two entries by admission ordering policy. Returns -1 if the
- // first one is earlier, 0 if they're the same, and 1 if the second one is earlier.
-
- static int compare_subpriority (TAO_Reconfig_Scheduler_Entry &,
- TAO_Reconfig_Scheduler_Entry &);
- // Compares two entries by subpriority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int assign_config (RtecScheduler::Config_Info &,
- TAO_Reconfig_Scheduler_Entry &);
- // Fills in a static dispatch configuration for a priority level, based
- // on the operation characteristics of a representative scheduling entry.
-};
+typedef TAO_MUF_FAIR_Reconfig_Sched_Strategy TAO_MUF_Reconfig_Sched_Strategy;
-class TAO_RTSched_Export TAO_RMS_MLF_Reconfig_Sched_Strategy
+class TAO_RTSched_Export TAO_RMS_Reconfig_Sched_Strategy
: public TAO_Reconfig_Sched_Strategy_Base
// = TITLE
// A scheduling strategy that implements the Boeing RMS-Dynamic
diff --git a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
index 9b169d85ff7..31b6903db3e 100644
--- a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
+++ b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
@@ -828,15 +828,15 @@ template class ACE_RB_Tree_Node<const char *, TAO_RT_Info_Ex*>;
template class ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>;
template class ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>;
-template class TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
-template class TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>;
-template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
+template class TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>;
+template class TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Singleton<ACE_Scheduler_Factory_Data, ACE_Null_Mutex>
#pragma instantiate ACE_TSS<ACE_TSS_Type_Adapter<RtecScheduler::Preemption_Priority_t> >
@@ -879,13 +879,13 @@ template class TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYN
#pragma instantiate ACE_RB_Tree_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Iterator_Base<char const *, TAO_RT_Info_Ex*, ACE_Less_Than<char const *>, TAO_SYNCH_MUTEX>
#pragma instantiate ACE_RB_Tree_Reverse_Iterator<const char *, TAO_RT_Info_Ex*, ACE_Less_Than<const char *>, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
-#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy>
-#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_FAIR_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Reconfig_Scheduler<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Dependency_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_DFS_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Priority_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Criticality_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Forward_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_RSE_Reverse_Propagation_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
+#pragma instantiate TAO_Tuple_Admission_Visitor<TAO_MUF_Reconfig_Sched_Strategy>
+#pragma instantiate TAO_RSE_SCC_Visitor<TAO_MUF_Reconfig_Sched_Strategy, TAO_SYNCH_MUTEX>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc b/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc
new file mode 100644
index 00000000000..f73fae7c25d
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/FtRtEvent.mpc
@@ -0,0 +1,30 @@
+project(*Consumer): orbsvcsexe, ftrteventclient {
+ exename = consumer
+ specific(gnuace) {
+ lit_libs += TAO_Strategies
+ }
+ Source_Files {
+ consumer.cpp
+ PushConsumer.cpp
+ }
+
+ Header_Files {
+ PushConsumer.h
+ }
+}
+
+project(*Supplier): orbsvcsexe, ftrteventclient {
+ exename = supplier
+
+ specific(gnuace) {
+ lit_libs += TAO_Strategies
+ }
+ Source_Files {
+ supplier.cpp
+ PushSupplier.cpp
+ }
+
+ Header_Files {
+ PushSupplier.h
+ }
+}
diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp
new file mode 100644
index 00000000000..7a2f3049b87
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.cpp
@@ -0,0 +1,56 @@
+// $Id$
+
+#include "PushConsumer.h"
+#include "orbsvcs/FtRtEvent/Utils/resolve_init.h"
+#include <stdio.h>
+
+ACE_RCSID (FtRtEvent,
+ PushConsumer,
+ "$Id$")
+
+PushConsumer_impl::PushConsumer_impl(CORBA::ORB_ptr orb)
+: orb_(CORBA::ORB::_duplicate(orb))
+{
+}
+
+
+void
+PushConsumer_impl::push (const RtecEventComm::EventSet & event
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ CORBA::ULong x;
+ ACE_Time_Value time_val = ACE_OS::gettimeofday ();
+
+ if (event.length() >0) {
+ TimeBase::TimeT elaps =
+ time_val.sec () * 10000000 + time_val.usec ()* 10 - event[0].header.ec_send_time;
+ event[0].data.any_value >>= x;
+ printf("Received data : %d, single trip time = %d usec\n", x, static_cast<long>(elaps/10));
+ }
+}
+
+
+void
+PushConsumer_impl::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ PortableServer::Current_var current =
+ resolve_init<PortableServer::Current>(orb_.in(), "POACurrent" ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::POA_var poa = current->get_POA(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::ObjectId_var oid = current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ poa->deactivate_object(oid ACE_ENV_ARG_PARAMETER);
+
+}
diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h
new file mode 100644
index 00000000000..d84080a2eac
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/PushConsumer.h
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file PushConsumer.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef PUSHCONSUMERIMPL_H
+#define PUSHCONSUMERIMPL_H
+
+#include "orbsvcs/RtecEventCommS.h"
+
+class PushConsumer_impl :
+public virtual POA_RtecEventComm::PushConsumer
+{
+public:
+ PushConsumer_impl(CORBA::ORB_ptr orb);
+
+ virtual void push (
+ const RtecEventComm::EventSet & data
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual void disconnect_push_consumer (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+private:
+ CORBA::ORB_var orb_;
+ PushConsumer_impl(const PushConsumer_impl&);
+ void operator==(const PushConsumer_impl&);
+};
+#endif
diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp
new file mode 100644
index 00000000000..c3542fa1a78
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.cpp
@@ -0,0 +1,145 @@
+// $Id$
+
+#include "orbsvcs/CosNamingC.h"
+#include "orbsvcs/Event_Utilities.h"
+#include "PushSupplier.h"
+#include "ace/Reactor.h"
+#include "ace/Select_Reactor.h"
+#include "tao/MProfile.h"
+#include "tao/Stub.h"
+#include "orbsvcs/FtRtEvent/Utils/resolve_init.h"
+
+ACE_RCSID (FtRtEvent,
+ PushSupplier,
+ "$Id$")
+
+
+int
+PushSupplier_impl::ReactorTask::svc (void)
+{
+ ACE_DEBUG((LM_DEBUG, "Reactor Thread started\n"));
+ ACE_Reactor reactor (new ACE_Select_Reactor) ;
+ reactor_ = &reactor;
+
+ extern ACE_Time_Value timer_interval;
+
+ if (reactor_->schedule_timer(handler_, 0, ACE_Time_Value::zero, timer_interval)== -1)
+ ACE_ERROR_RETURN((LM_ERROR,"Cannot schedule timer\n"),-1);
+
+ reactor_->run_reactor_event_loop();
+ ACE_DEBUG((LM_DEBUG, "Reactor Thread ended\n"));
+
+ return 0;
+}
+
+
+
+PushSupplier_impl::PushSupplier_impl(CORBA::ORB_ptr orb)
+: orb_(orb), seq_no_(0), reactor_task_(this)
+{
+}
+
+PushSupplier_impl::~PushSupplier_impl()
+{
+ reactor_task_.wait();
+}
+
+int PushSupplier_impl::init(RtecEventChannelAdmin::EventChannel_ptr channel ACE_ENV_ARG_DECL)
+{
+
+ ACE_DEBUG((LM_DEBUG, "for_suppliers\n"));
+ RtecEventChannelAdmin::SupplierAdmin_var supplier_admin =
+ channel->for_suppliers(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_DEBUG((LM_DEBUG, "obtain_push_consumer\n"));
+ consumer_ =
+ supplier_admin->obtain_push_consumer(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+
+
+ ACE_DEBUG((LM_DEBUG, "got push_consumer with %d profiles\n",
+ consumer_->_stubobj ()->base_profiles ().profile_count ()));
+
+ RtecEventChannelAdmin::SupplierQOS qos;
+ qos.publications.length (1);
+ RtecEventComm::EventHeader& h0 =
+ qos.publications[0].event.header;
+ h0.type = ACE_ES_EVENT_UNDEFINED; // first free event type
+ h0.source = 1; // first free event source
+
+ RtecEventComm::PushSupplier_var supplier = _this();
+
+ ACE_DEBUG((LM_DEBUG, "connect_push_supplier\n"));
+ consumer_->connect_push_supplier(supplier.in(),
+ qos ACE_ENV_ARG_PARAMETER);
+
+ ACE_DEBUG((LM_DEBUG, "push_consumer connected\n"));
+
+
+ if (!reactor_task_.thr_count() &&
+ reactor_task_.activate (THR_NEW_LWP | THR_JOINABLE, 1) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot activate reactor thread\n"),
+ -1);
+
+ return 0;
+
+}
+
+
+
+void PushSupplier_impl::disconnect_push_supplier (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+
+ reactor_task_.reactor_->end_reactor_event_loop();
+
+ PortableServer::Current_var current =
+ resolve_init<PortableServer::Current>(orb_.in(), "POACurrent" ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::POA_var poa = current->get_POA(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ PortableServer::ObjectId_var oid = current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ poa->deactivate_object(oid ACE_ENV_ARG_PARAMETER);
+}
+
+int PushSupplier_impl::handle_timeout (const ACE_Time_Value &current_time,
+ const void *act)
+{
+ ACE_UNUSED_ARG(act);
+ ACE_UNUSED_ARG(current_time);
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY {
+ RtecEventComm::EventSet event (1);
+ event.length (1);
+ event[0].header.type = ACE_ES_EVENT_UNDEFINED;
+ event[0].header.source = 1;
+ event[0].header.ttl = 1;
+
+ ACE_Time_Value time_val = ACE_OS::gettimeofday ();
+
+ event[0].header.ec_send_time = time_val.sec () * 10000000 + time_val.usec ()* 10;
+ event[0].data.any_value <<= seq_no_;
+
+ consumer_->push(event ACE_ENV_ARG_PARAMETER);
+ ACE_DEBUG((LM_DEBUG, "sending data %d\n", seq_no_));
+ ++seq_no_;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred.");
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h
new file mode 100644
index 00000000000..a425411e6df
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/PushSupplier.h
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file PushSupplier.h
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef PUSHSUPPLIER_H
+#define PUSHSUPPLIER_H
+
+#include "orbsvcs/RtecEventCommS.h"
+#include "orbsvcs/RtecEventChannelAdminC.h"
+#include "ace/Event_Handler.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+#include "ace/Time_Value.h"
+
+class ACE_Reactor;
+
+class PushSupplier_impl :
+public ACE_Event_Handler
+,public virtual POA_RtecEventComm::PushSupplier
+{
+public:
+ PushSupplier_impl(CORBA::ORB_ptr orb);
+ ~PushSupplier_impl();
+
+ int init(RtecEventChannelAdmin::EventChannel_ptr ACE_ENV_ARG_DECL);
+
+ virtual void disconnect_push_supplier (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+private:
+
+ class ReactorTask : public ACE_Task_Base
+ {
+ public:
+ // ctor
+ ReactorTask(ACE_Event_Handler* handler) : handler_(handler){}
+ virtual int svc (void);
+ // The thread entry point.
+
+ ACE_Reactor* reactor_;
+ ACE_Event_Handler* handler_;
+ };
+
+ virtual int handle_timeout (const ACE_Time_Value &current_time,
+ const void *act = 0);
+ CORBA::ORB_var orb_;
+ CORBA::ULong seq_no_;
+ ReactorTask reactor_task_;
+ RtecEventChannelAdmin::ProxyPushConsumer_var consumer_;
+ PushSupplier_impl(const PushSupplier_impl&);
+ void operator==(const PushSupplier_impl&);
+};
+#endif
diff --git a/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp b/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp
new file mode 100644
index 00000000000..f77c0f2e3ad
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/consumer.cpp
@@ -0,0 +1,151 @@
+// $Id$
+
+#include "orbsvcs/CosNamingC.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "orbsvcs/Event_Utilities.h"
+#include "PushConsumer.h"
+#include "ace/Get_Opt.h"
+#include "orbsvcs/FtRtEvent/Utils/resolve_init.h"
+#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h"
+
+/// include this file to statically linked with FT ORB
+#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h"
+
+/// include this file to statically linked with Transaction Depth
+#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h"
+
+ACE_RCSID (FtRtEvent,
+ PushConsumer,
+ "$Id$")
+
+CORBA::ORB_var orb;
+auto_ptr<TAO_FTRTEC::FTEC_Gateway> gateway;
+
+RtecEventChannelAdmin::EventChannel_ptr
+get_event_channel(int argc, ACE_TCHAR** argv ACE_ENV_ARG_DECL)
+{
+ FtRtecEventChannelAdmin::EventChannel_var channel;
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("hi:n"));
+ int opt;
+ int use_gateway = 1;
+
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 'i':
+ {
+ CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ channel = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ break;
+ case 'n':
+ use_gateway = 0;
+ break;
+ case 'h':
+ case '?':
+ ACE_DEBUG((LM_DEBUG,
+ ACE_LIB_TEXT("Usage: %s ")
+ ACE_LIB_TEXT("-i ftrt_eventchannel_ior\n")
+ ACE_LIB_TEXT("-n do not use gateway\n")
+ ACE_LIB_TEXT("\n"),
+ argv[0]));
+ return 0;
+ }
+ }
+
+
+ if (CORBA::is_nil(channel.in()))
+ {
+ CosNaming::Name name(1);
+ name.length(1);
+ name[0].id = CORBA::string_dup("FT_EventService");
+
+ CosNaming::NamingContext_var naming_context =
+ resolve_init<CosNaming::NamingContext>(orb.in(), "NameService"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ channel = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(),
+ name
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ if (use_gateway)
+ {
+ gateway.reset(new TAO_FTRTEC::FTEC_Gateway(orb.in(), channel.in()));
+ return gateway->_this(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ else
+ return channel._retn();
+}
+
+int main(int argc, ACE_TCHAR** argv)
+{
+ ACE_TRY_NEW_ENV {
+ orb = CORBA::ORB_init(argc, argv
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RtecEventChannelAdmin::EventChannel_var channel
+ = get_event_channel(argc, argv ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ if (CORBA::is_nil(channel.in()))
+ ACE_ERROR_RETURN((LM_ERROR, "Cannot Find FT_EventService\n"), -1);
+
+ PortableServer::POA_var poa =
+ resolve_init<PortableServer::POA>(orb.in(), "RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PushConsumer_impl push_consumer_impl(orb.in());
+ RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
+ channel->for_consumers(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RtecEventChannelAdmin::ProxyPushSupplier_var supplier =
+ consumer_admin->obtain_push_supplier(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RtecEventChannelAdmin::ConsumerQOS qos;
+ qos.is_gateway = 1;
+ qos.dependencies.length(1);
+
+ RtecEventComm::EventHeader& h0 =
+ qos.dependencies[0].event.header;
+ h0.type = ACE_ES_EVENT_UNDEFINED; // first free event type
+ h0.source = ACE_ES_EVENT_SOURCE_ANY;
+
+ RtecEventComm::PushConsumer_var push_consumer =
+ push_consumer_impl._this();
+
+ supplier->connect_push_consumer(push_consumer.in(),
+ qos ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ orb->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ }
+ ACE_CATCHANY {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred.");
+ }
+ ACE_ENDTRY;
+
+ ACE_CHECK_RETURN(-1);
+
+ return 0;
+}
+
diff --git a/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp b/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp
new file mode 100644
index 00000000000..1bfae5f5b04
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/supplier.cpp
@@ -0,0 +1,142 @@
+// $Id$
+#include "orbsvcs/CosNamingC.h"
+#include "orbsvcs/FtRtecEventChannelAdminC.h"
+#include "PushSupplier.h"
+#include "ace/Get_Opt.h"
+#include "orbsvcs/FtRtEvent/Utils/resolve_init.h"
+#include "orbsvcs/FtRtEvent/Utils/FTEC_Gateway.h"
+
+/// include this file to statically linked with FT ORB
+#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h"
+
+/// include this file to statically linked with Transaction Depth
+#include "orbsvcs/FtRtEvent/ClientORB/FTRT_ClientORB_Loader.h"
+
+ACE_RCSID (FtRtEvent,
+ supplier,
+ "$Id$")
+
+
+ACE_Time_Value timer_interval(1,0);
+CORBA::ORB_var orb;
+auto_ptr<TAO_FTRTEC::FTEC_Gateway> gateway;
+
+RtecEventChannelAdmin::EventChannel_ptr
+get_event_channel(int argc, ACE_TCHAR** argv ACE_ENV_ARG_DECL)
+{
+ FtRtecEventChannelAdmin::EventChannel_var channel;
+ ACE_Get_Opt get_opt (argc, argv, ACE_LIB_TEXT("hi:nt:?"));
+ int opt;
+ int use_gateway = 1;
+
+ while ((opt = get_opt ()) != EOF)
+ {
+ switch (opt)
+ {
+ case 'i':
+ {
+ CORBA::Object_var obj = orb->string_to_object(get_opt.opt_arg ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ channel = FtRtecEventChannelAdmin::EventChannel::_narrow(obj.in()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ break;
+ case 'n':
+ use_gateway = 0;
+ break;
+ case 't':
+ timer_interval.set(atof(get_opt.opt_arg ()));
+ case 'h':
+ case '?':
+ ACE_DEBUG((LM_DEBUG,
+ ACE_LIB_TEXT("Usage: %s ")
+ ACE_LIB_TEXT("-i ftrt_eventchannel_ior\n")
+ ACE_LIB_TEXT("-n do not use gateway\n")
+ ACE_LIB_TEXT("-t time Time interval in seconds between events (default 1.0)\n")
+ ACE_LIB_TEXT("\n"),
+ argv[0]));
+ return 0;
+
+ }
+ }
+
+
+ if (CORBA::is_nil(channel.in()))
+ {
+ /// Find the FTRTEC from the Naming Service
+ CosNaming::Name name(1);
+ name.length(1);
+ name[0].id = CORBA::string_dup("FT_EventService");
+
+ CosNaming::NamingContext_var naming_context =
+ resolve_init<CosNaming::NamingContext>(orb.in(), "NameService"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ channel = resolve<FtRtecEventChannelAdmin::EventChannel>(naming_context.in(),
+ name
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ if (use_gateway)
+ {
+ // use local gateway to communicate with FTRTEC
+ gateway.reset(new TAO_FTRTEC::FTEC_Gateway(orb.in(), channel.in()));
+ return gateway->_this(ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+ else
+ return channel._retn();
+}
+
+
+int main(int argc, ACE_TCHAR** argv)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY {
+ orb = CORBA::ORB_init(argc, argv
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ RtecEventChannelAdmin::EventChannel_var channel
+ = get_event_channel(argc, argv ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ if (CORBA::is_nil(channel.in()))
+ return -1;
+
+ PortableServer::POA_var poa =
+ resolve_init<PortableServer::POA>(orb.in(), "RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var mgr = poa->the_POAManager(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ mgr->activate(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PushSupplier_impl push_supplier(orb.in());
+ if (push_supplier.init(channel.in() ACE_ENV_ARG_PARAMETER) == -1)
+ return -1;
+
+ RtecEventComm::PushSupplier_var
+ supplier = push_supplier._this();
+
+
+ orb->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ }
+ ACE_CATCHANY {
+ ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "A CORBA Exception occurred.");
+ }
+ ACE_ENDTRY;
+
+ ACE_CHECK_RETURN(-1);
+
+ return 0;
+}
diff --git a/TAO/orbsvcs/tests/FtRtEvent/svc.conf b/TAO/orbsvcs/tests/FtRtEvent/svc.conf
new file mode 100644
index 00000000000..49c3a8a3d04
--- /dev/null
+++ b/TAO/orbsvcs/tests/FtRtEvent/svc.conf
@@ -0,0 +1,3 @@
+## $Id$
+
+static FTRT_ClientORB_Service "-ORBTransactionDepth $FTEC_TransactionDepth" \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp b/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp
index f3a433329a9..36dfd44bbcd 100644
--- a/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp
+++ b/TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/server.dsp
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib TAO_Valuetype.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
+# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
!ELSEIF "$(CFG)" == "server - Win32 Debug"
@@ -74,7 +74,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib TAO_Valuetyped.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
+# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
!ENDIF
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw
deleted file mode 100644
index 02168c6f4f1..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/CPU.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "CPU Server"=.\client.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile
deleted file mode 100644
index 14f002f9217..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile
+++ /dev/null
@@ -1,433 +0,0 @@
-#----------------------------------------------------------------------------
-# $Id$
-#----------------------------------------------------------------------------
-
-#----------------------------------------------------------------------------
-# Local macros
-#----------------------------------------------------------------------------
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif # ! TAO_ROOT
-
-BIN2 = client
-
-SRC = $(addsuffix .cpp, $(BIN))
-
-LDLIBS = \
- -lTAO_CosLoadBalancing \
- -lTAO_PortableGroup \
- -lTAO_CosNaming \
- -lTAO_Messaging \
- $(TAO_SRVR_LIBS)
-
-#----------------------------------------------------------------------------
-# Include macros and targets
-#----------------------------------------------------------------------------
-
-include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
-include $(TAO_ROOT)/rules.tao.GNU
-#### If the TAO orbsvcs library wasn't built with sufficient components,
-#### don't try to build here.
-TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq (CosLoadBalancing,$(findstring CosLoadBalancing,$(TAO_ORBSVCS)))
- BIN = $(BIN2)
-endif # CosLoadBalancing
-include $(ACE_ROOT)/include/makeinclude/macros.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
-
-LDFLAGS += -L$(TAO_ROOT)/orbsvcs/orbsvcs -L$(TAO_ROOT)/tao
-CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT)
-
-#----------------------------------------------------------------------------
-# Local targets
-#----------------------------------------------------------------------------
-
-
-realclean: clean
- -$(RM) $(foreach ext, $(IDL_EXT), test$(ext))
-
-
-# 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.so .shobj/client.o .shobj/client.so: client.cpp \
- $(TAO_ROOT)/orbsvcs/orbsvcs/CosLoadBalancingC.h \
- $(ACE_ROOT)/ace/pre.h \
- $(TAO_ROOT)/tao/corba.h \
- $(ACE_ROOT)/ace/post.h \
- $(ACE_ROOT)/ace/ace_wchar.h \
- $(ACE_ROOT)/ace/ace_wchar.inl \
- $(TAO_ROOT)/tao/corbafwd.h \
- $(ACE_ROOT)/ace/CDR_Base.h \
- $(ACE_ROOT)/ace/Basic_Types.h \
- $(ACE_ROOT)/ace/os_include/os_limits.h \
- $(ACE_ROOT)/ace/os_include/os_unistd.h \
- $(ACE_ROOT)/ace/os_include/sys/os_types.h \
- $(ACE_ROOT)/ace/os_include/os_stddef.h \
- $(ACE_ROOT)/ace/os_include/os_inttypes.h \
- $(ACE_ROOT)/ace/os_include/os_stdint.h \
- $(ACE_ROOT)/ace/os_include/os_stdio.h \
- $(ACE_ROOT)/ace/os_include/os_stdarg.h \
- $(ACE_ROOT)/ace/os_include/os_float.h \
- $(ACE_ROOT)/ace/os_include/os_stdlib.h \
- $(ACE_ROOT)/ace/os_include/sys/os_wait.h \
- $(ACE_ROOT)/ace/os_include/os_signal.h \
- $(ACE_ROOT)/ace/os_include/os_time.h \
- $(ACE_ROOT)/ace/os_include/os_ucontext.h \
- $(ACE_ROOT)/ace/os_include/sys/os_resource.h \
- $(ACE_ROOT)/ace/os_include/sys/os_time.h \
- $(ACE_ROOT)/ace/os_include/sys/os_select.h \
- $(ACE_ROOT)/ace/ACE_export.h \
- $(ACE_ROOT)/ace/Basic_Types.i \
- $(ACE_ROOT)/ace/Default_Constants.h \
- $(ACE_ROOT)/ace/CDR_Base.inl \
- $(TAO_ROOT)/tao/orbconf.h \
- $(ACE_ROOT)/ace/Global_Macros.h \
- $(ACE_ROOT)/ace/OS_Export.h \
- $(ACE_ROOT)/ace/Synch_Traits.h \
- $(ACE_ROOT)/ace/Lock.h \
- $(ACE_ROOT)/ace/Lock.inl \
- $(TAO_ROOT)/tao/TAO_Export.h \
- $(TAO_ROOT)/tao/corbafwd.i \
- $(TAO_ROOT)/tao/Typecode.h \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
- $(ACE_ROOT)/ace/Functor.h \
- $(ACE_ROOT)/ace/Functor.i \
- $(ACE_ROOT)/ace/ACE.h \
- $(ACE_ROOT)/ace/Flag_Manip.h \
- $(ACE_ROOT)/ace/Flag_Manip.i \
- $(ACE_ROOT)/ace/OS.h \
- $(ACE_ROOT)/ace/OS_Dirent.h \
- $(ACE_ROOT)/ace/OS_Errno.h \
- $(ACE_ROOT)/ace/os_include/os_errno.h \
- $(ACE_ROOT)/ace/OS_Errno.inl \
- $(ACE_ROOT)/ace/os_include/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_include/os_string.h \
- $(ACE_ROOT)/ace/os_include/os_strings.h \
- $(ACE_ROOT)/ace/os_include/os_ctype.h \
- $(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/os_include/os_dlfcn.h \
- $(ACE_ROOT)/ace/os_include/sys/os_mman.h \
- $(ACE_ROOT)/ace/os_include/os_netdb.h \
- $(ACE_ROOT)/ace/os_include/netinet/os_in.h \
- $(ACE_ROOT)/ace/os_include/sys/os_socket.h \
- $(ACE_ROOT)/ace/os_include/sys/os_uio.h \
- $(ACE_ROOT)/ace/os_include/net/os_if.h \
- $(ACE_ROOT)/ace/os_include/sys/os_sem.h \
- $(ACE_ROOT)/ace/os_include/sys/os_ipc.h \
- $(ACE_ROOT)/ace/Time_Value.h \
- $(ACE_ROOT)/ace/Time_Value.inl \
- $(ACE_ROOT)/ace/Min_Max.h \
- $(ACE_ROOT)/ace/os_include/os_pthread.h \
- $(ACE_ROOT)/ace/os_include/os_assert.h \
- $(ACE_ROOT)/ace/os_include/os_fcntl.h \
- $(ACE_ROOT)/ace/os_include/sys/os_stat.h \
- $(ACE_ROOT)/ace/iosfwd.h \
- $(ACE_ROOT)/ace/os_include/arpa/os_inet.h \
- $(ACE_ROOT)/ace/os_include/netinet/os_tcp.h \
- $(ACE_ROOT)/ace/os_include/sys/os_shm.h \
- $(ACE_ROOT)/ace/os_include/os_pwd.h \
- $(ACE_ROOT)/ace/os_include/os_stropts.h \
- $(ACE_ROOT)/ace/os_include/os_termios.h \
- $(ACE_ROOT)/ace/os_include/os_aio.h \
- $(ACE_ROOT)/ace/os_include/sys/os_un.h \
- $(ACE_ROOT)/ace/os_include/os_poll.h \
- $(ACE_ROOT)/ace/os_include/sys/os_msg.h \
- $(ACE_ROOT)/ace/os_include/sys/os_utsname.h \
- $(ACE_ROOT)/ace/os_include/os_syslog.h \
- $(ACE_ROOT)/ace/OS.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/Functor_T.h \
- $(ACE_ROOT)/ace/Functor_T.i \
- $(ACE_ROOT)/ace/Functor_T.cpp \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
- $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
- $(ACE_ROOT)/ace/Guard_T.h \
- $(ACE_ROOT)/ace/Guard_T.inl \
- $(ACE_ROOT)/ace/Guard_T.cpp \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
- $(ACE_ROOT)/ace/Malloc_Base.h \
- $(ACE_ROOT)/ace/Unbounded_Queue.h \
- $(ACE_ROOT)/ace/Node.h \
- $(ACE_ROOT)/ace/Node.cpp \
- $(ACE_ROOT)/ace/Unbounded_Queue.inl \
- $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
- $(ACE_ROOT)/ace/Thread_Mutex.h \
- $(ACE_ROOT)/ace/Thread_Mutex.inl \
- $(TAO_ROOT)/tao/Exception.h \
- $(ACE_ROOT)/ace/CORBA_macros.h \
- $(ACE_ROOT)/ace/Exception_Macros.h \
- $(ACE_ROOT)/ace/SStringfwd.h \
- $(TAO_ROOT)/tao/Exception.i \
- $(TAO_ROOT)/tao/Pseudo_VarOut_T.h \
- $(TAO_ROOT)/tao/Pseudo_VarOut_T.inl \
- $(TAO_ROOT)/tao/Pseudo_VarOut_T.cpp \
- $(TAO_ROOT)/tao/Typecode.i \
- $(TAO_ROOT)/tao/Any_Impl_T.h \
- $(TAO_ROOT)/tao/Any.h \
- $(ACE_ROOT)/ace/CDR_Stream.h \
- $(ACE_ROOT)/ace/Message_Block.h \
- $(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_Stream.i \
- $(TAO_ROOT)/tao/Any.i \
- $(TAO_ROOT)/tao/Any_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Impl_T.cpp \
- $(TAO_ROOT)/tao/Marshal.h \
- $(TAO_ROOT)/tao/Marshal.i \
- $(TAO_ROOT)/tao/CDR.h \
- $(TAO_ROOT)/tao/CDR.i \
- $(TAO_ROOT)/tao/Environment.h \
- $(TAO_ROOT)/tao/Environment.i \
- $(ACE_ROOT)/ace/Auto_Ptr.h \
- $(ACE_ROOT)/ace/Auto_Ptr.i \
- $(ACE_ROOT)/ace/Auto_Ptr.cpp \
- $(TAO_ROOT)/tao/Any_Basic_Impl_T.h \
- $(TAO_ROOT)/tao/Any_Basic_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Basic_Impl_T.cpp \
- $(TAO_ROOT)/tao/Any_Special_Impl_T.h \
- $(TAO_ROOT)/tao/Any_Special_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Special_Impl_T.cpp \
- $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.h \
- $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Special_Basic_Impl_T.cpp \
- $(TAO_ROOT)/tao/debug.h \
- $(TAO_ROOT)/tao/Any_Array_Impl_T.h \
- $(TAO_ROOT)/tao/Any_Array_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Array_Impl_T.cpp \
- $(TAO_ROOT)/tao/Any_Dual_Impl_T.h \
- $(TAO_ROOT)/tao/Any_Dual_Impl_T.inl \
- $(TAO_ROOT)/tao/Any_Dual_Impl_T.cpp \
- $(TAO_ROOT)/tao/CORBA_String.h \
- $(TAO_ROOT)/tao/Managed_Types.h \
- $(TAO_ROOT)/tao/Managed_Types.i \
- $(TAO_ROOT)/tao/CORBA_String.inl \
- $(TAO_ROOT)/tao/NVList.h \
- $(TAO_ROOT)/tao/NVList.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Policy_ForwardC.h \
- $(TAO_ROOT)/tao/Sequence.h \
- $(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/Objref_VarOut_T.h \
- $(TAO_ROOT)/tao/varbase.h \
- $(TAO_ROOT)/tao/Objref_VarOut_T.inl \
- $(TAO_ROOT)/tao/Objref_VarOut_T.cpp \
- $(TAO_ROOT)/tao/Seq_Var_T.h \
- $(TAO_ROOT)/tao/Seq_Var_T.inl \
- $(TAO_ROOT)/tao/Seq_Var_T.cpp \
- $(TAO_ROOT)/tao/Seq_Out_T.h \
- $(TAO_ROOT)/tao/Seq_Out_T.inl \
- $(TAO_ROOT)/tao/Seq_Out_T.cpp \
- $(TAO_ROOT)/tao/Policy_ForwardC.i \
- $(TAO_ROOT)/tao/IOP_IORC.h \
- $(TAO_ROOT)/tao/OctetSeqC.h \
- $(TAO_ROOT)/tao/OctetSeqC.i \
- $(TAO_ROOT)/tao/VarOut_T.h \
- $(TAO_ROOT)/tao/VarOut_T.inl \
- $(TAO_ROOT)/tao/VarOut_T.cpp \
- $(TAO_ROOT)/tao/IOP_IORC.i \
- $(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/LocalObject.h \
- $(TAO_ROOT)/tao/LocalObject.i \
- $(TAO_ROOT)/tao/Principal.h \
- $(TAO_ROOT)/tao/Principal.i \
- $(TAO_ROOT)/tao/ORB.h \
- $(TAO_ROOT)/tao/ServicesC.h \
- $(TAO_ROOT)/tao/ServicesC.i \
- $(TAO_ROOT)/tao/ObjectIdListC.h \
- $(TAO_ROOT)/tao/ObjectIdListC.i \
- $(TAO_ROOT)/tao/objectid.h \
- $(TAO_ROOT)/tao/PolicyC.h \
- $(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/CurrentC.i \
- $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
- $(TAO_ROOT)/tao/PolicyC.i \
- $(TAO_ROOT)/tao/ORB.i \
- $(TAO_ROOT)/tao/BoundsC.h \
- $(TAO_ROOT)/tao/BoundsC.i \
- $(TAO_ROOT)/tao/DomainC.h \
- $(TAO_ROOT)/tao/DomainC.i \
- $(TAO_ROOT)/tao/WrongTransactionC.h \
- $(TAO_ROOT)/tao/WrongTransactionC.i \
- $(TAO_ROOT)/tao/StringSeqC.h \
- $(TAO_ROOT)/tao/StringSeqC.i \
- $(TAO_ROOT)/tao/Object_KeyC.h \
- $(TAO_ROOT)/tao/Object_KeyC.i \
- $(TAO_ROOT)/tao/Array_VarOut_T.h \
- $(TAO_ROOT)/tao/Array_VarOut_T.inl \
- $(TAO_ROOT)/tao/Array_VarOut_T.cpp \
- $(TAO_ROOT)/tao/PortableInterceptorC.h \
- $(TAO_ROOT)/tao/PI_ForwardC.h \
- $(TAO_ROOT)/tao/PI_ForwardC.i \
- $(TAO_ROOT)/tao/DynamicC.h \
- $(TAO_ROOT)/tao/DynamicC.i \
- $(TAO_ROOT)/tao/Messaging_SyncScopeC.h \
- $(TAO_ROOT)/tao/Messaging_SyncScopeC.i \
- $(TAO_ROOT)/tao/IOPC.h \
- $(TAO_ROOT)/tao/IOP_CodecC.h \
- $(TAO_ROOT)/tao/IOP_CodecC.i \
- $(TAO_ROOT)/tao/IOPC.i \
- $(TAO_ROOT)/tao/PortableInterceptorC.i \
- $(TAO_ROOT)/orbsvcs/orbsvcs/LoadBalancing/LoadBalancing_export.h \
- $(TAO_ROOT)/tao/Messaging/Messaging.h \
- $(TAO_ROOT)/tao/Messaging/messaging_export.h \
- $(TAO_ROOT)/tao/Messaging/MessagingC.h \
- $(TAO_ROOT)/tao/Messaging/Messaging_SyncScope_PolicyC.h \
- $(TAO_ROOT)/tao/Messaging/Messaging_SyncScope_PolicyC.i \
- $(TAO_ROOT)/tao/Messaging/Messaging_RT_PolicyC.h \
- $(TAO_ROOT)/tao/TimeBaseC.h \
- $(TAO_ROOT)/tao/TimeBaseC.i \
- $(TAO_ROOT)/tao/Messaging/Messaging_RT_PolicyC.i \
- $(TAO_ROOT)/tao/Messaging/Messaging_No_ImplC.h \
- $(TAO_ROOT)/tao/Messaging/Messaging_No_ImplC.i \
- $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.h \
- $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.inl \
- $(TAO_ROOT)/tao/Valuetype/Value_VarOut_T.cpp \
- $(TAO_ROOT)/tao/Valuetype/ValueBase.h \
- $(TAO_ROOT)/tao/Valuetype/valuetype_export.h \
- $(ACE_ROOT)/ace/Synch_T.h \
- $(ACE_ROOT)/ace/Synch.h \
- $(ACE_ROOT)/ace/Auto_Event.h \
- $(ACE_ROOT)/ace/Event.h \
- $(ACE_ROOT)/ace/Event.inl \
- $(ACE_ROOT)/ace/Auto_Event.inl \
- $(ACE_ROOT)/ace/Barrier.h \
- $(ACE_ROOT)/ace/Condition_Thread_Mutex.h \
- $(ACE_ROOT)/ace/Condition_Thread_Mutex.inl \
- $(ACE_ROOT)/ace/Barrier.inl \
- $(ACE_ROOT)/ace/Condition_Recursive_Thread_Mutex.h \
- $(ACE_ROOT)/ace/Recursive_Thread_Mutex.h \
- $(ACE_ROOT)/ace/Recursive_Thread_Mutex.inl \
- $(ACE_ROOT)/ace/Condition_Recursive_Thread_Mutex.inl \
- $(ACE_ROOT)/ace/Manual_Event.h \
- $(ACE_ROOT)/ace/Manual_Event.inl \
- $(ACE_ROOT)/ace/Mutex.h \
- $(ACE_ROOT)/ace/Mutex.inl \
- $(ACE_ROOT)/ace/Null_Barrier.h \
- $(ACE_ROOT)/ace/Null_Condition.h \
- $(ACE_ROOT)/ace/Null_Mutex.h \
- $(ACE_ROOT)/ace/Null_Semaphore.h \
- $(ACE_ROOT)/ace/RW_Mutex.h \
- $(ACE_ROOT)/ace/RW_Mutex.inl \
- $(ACE_ROOT)/ace/RW_Thread_Mutex.h \
- $(ACE_ROOT)/ace/RW_Thread_Mutex.inl \
- $(ACE_ROOT)/ace/Semaphore.h \
- $(ACE_ROOT)/ace/Semaphore.inl \
- $(ACE_ROOT)/ace/Thread_Semaphore.h \
- $(ACE_ROOT)/ace/Thread_Semaphore.inl \
- $(ACE_ROOT)/ace/TSS_Adapter.h \
- $(ACE_ROOT)/ace/TSS_Adapter.inl \
- $(ACE_ROOT)/ace/Synch.i \
- $(ACE_ROOT)/ace/Lock_Adapter_T.h \
- $(ACE_ROOT)/ace/Lock_Adapter_T.inl \
- $(ACE_ROOT)/ace/Lock_Adapter_T.cpp \
- $(ACE_ROOT)/ace/Reverse_Lock_T.h \
- $(ACE_ROOT)/ace/Reverse_Lock_T.inl \
- $(ACE_ROOT)/ace/Reverse_Lock_T.cpp \
- $(ACE_ROOT)/ace/TSS_T.h \
- $(ACE_ROOT)/ace/TSS_T.inl \
- $(ACE_ROOT)/ace/TSS_T.cpp \
- $(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/Condition_T.h \
- $(ACE_ROOT)/ace/Condition_T.inl \
- $(ACE_ROOT)/ace/Condition_T.cpp \
- $(ACE_ROOT)/ace/Synch_T.i \
- $(ACE_ROOT)/ace/Synch_T.cpp \
- $(TAO_ROOT)/tao/Valuetype/ValueBase.inl \
- $(TAO_ROOT)/tao/Valuetype/ValueFactory.h \
- $(TAO_ROOT)/tao/Valuetype/ValueFactory.inl \
- $(TAO_ROOT)/tao/Messaging/MessagingC.i \
- $(TAO_ROOT)/tao/Messaging/TAO_ExtC.h \
- $(TAO_ROOT)/tao/Messaging/TAO_ExtC.i \
- $(TAO_ROOT)/tao/TAOC.h \
- $(TAO_ROOT)/tao/TAOC.i \
- $(TAO_ROOT)/tao/Valuetype/Valuetype_Adapter_Impl.h \
- $(ACE_ROOT)/ace/Service_Config.h \
- $(ACE_ROOT)/ace/Unbounded_Set.h \
- $(ACE_ROOT)/ace/Unbounded_Set.inl \
- $(ACE_ROOT)/ace/Unbounded_Set.cpp \
- $(ACE_ROOT)/ace/SString.h \
- $(ACE_ROOT)/ace/String_Base.h \
- $(ACE_ROOT)/ace/String_Base_Const.h \
- $(ACE_ROOT)/ace/String_Base.i \
- $(ACE_ROOT)/ace/String_Base.cpp \
- $(ACE_ROOT)/ace/SString.i \
- $(ACE_ROOT)/ace/XML_Svc_Conf.h \
- $(ACE_ROOT)/ace/Service_Config.i \
- $(ACE_ROOT)/ace/Reactor.h \
- $(ACE_ROOT)/ace/Timer_Queue_fwd.h \
- $(ACE_ROOT)/ace/Reactor_Timer_Interface.h \
- $(ACE_ROOT)/ace/Event_Handler.h \
- $(ACE_ROOT)/ace/Atomic_Op.h \
- $(ACE_ROOT)/ace/Atomic_Op_T.h \
- $(ACE_ROOT)/ace/Atomic_Op_T.i \
- $(ACE_ROOT)/ace/Atomic_Op_T.cpp \
- $(ACE_ROOT)/ace/Atomic_Op.i \
- $(ACE_ROOT)/ace/Event_Handler.i \
- $(ACE_ROOT)/ace/Reactor.i \
- $(ACE_ROOT)/ace/Reactor_Impl.h \
- $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
- $(TAO_ROOT)/tao/Valuetype_Adapter.h \
- $(ACE_ROOT)/ace/Service_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.i \
- $(ACE_ROOT)/ace/DLL.h \
- $(ACE_ROOT)/ace/Service_Object.i \
- $(TAO_ROOT)/tao/Valuetype/Sequence_T.h \
- $(TAO_ROOT)/tao/Valuetype/Sequence_T.inl \
- $(TAO_ROOT)/tao/Valuetype/Sequence_T.cpp \
- $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroupC.h \
- $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroup/portablegroup_export.h \
- $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \
- $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \
- $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \
- $(TAO_ROOT)/tao/GIOPC.h \
- $(TAO_ROOT)/tao/GIOPC.i \
- $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroupC.i \
- $(TAO_ROOT)/orbsvcs/orbsvcs/CosLoadBalancingC.i \
- $(TAO_ROOT)/orbsvcs/orbsvcs/PortableGroup/PG_Operators.h \
- $(ACE_ROOT)/ace/Get_Opt.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/Get_Opt.i
-
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor
deleted file mode 100644
index 50e91e8a27a..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/Makefile.bor
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Makefile for building the CPU load monitor test client executable
-#
-# $Id$
-#
-
-!ifndef MINIMUM_CORBA
-NAME = client
-!else
-!undef NAME
-!endif
-
-OBJFILES = \
- $(OBJDIR)\client.obj
-
-CFLAGS = \
- $(ACE_CFLAGS) \
- $(TAO_CFLAGS) \
- $(TAO_PORTABLESERVER_CFLAGS) \
- $(TAO_MESSAGING_CFLAGS) \
- $(TAO_SVC_UTILS_CFLAGS) \
- $(TAO_NAMING_CFLAGS) \
- $(TAO_PORTABLEGROUP_CFLAGS) \
- $(TAO_COSLOADBALANCING_CFLAGS) \
- $(TAO_VALUETYPE_CFLAGS) \
- $(TAO_IORINTERCEPTOR_CFLAGS) \
- $(TAO_ORT_CFLAGS)
-
-LIBFILES = \
- $(ACE_LIB) \
- $(TAO_LIB) \
- $(TAO_PORTABLESERVER_LIB) \
- $(TAO_MESSAGING_LIB) \
- $(TAO_SVC_UTILS_LIB) \
- $(TAO_NAMING_LIB) \
- $(TAO_PORTABLEGROUP_LIB) \
- $(TAO_COSLOADBALANCING_LIB) \
- $(TAO_VALUETYPE_LIB) \
- $(TAO_IORINTERCEPTOR_LIB) \
- $(TAO_ORT_LIB)
-
-CPPDIR = .
-
-!include <$(ACE_ROOT)\include\makeinclude\build_core_exe.bor>
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README
deleted file mode 100644
index ee845ff6081..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/README
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Id$
-
-This test verifies that Cygnus' CPU load monitor is working correctly.
-Run the test using the `run_test.pl' Perl script. The expected test
-output is the following:
-
-==== Running CPU Load Monitor test
-
-Retrieving loads from LoadManager ...... DONE
-Retrieving loads directly from LoadMonitor ... DONE
-CPU Load Monitor test passed.
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp
deleted file mode 100644
index 810fa131ee7..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-// $Id$
-
-#include "orbsvcs/CosLoadBalancingC.h"
-#include "orbsvcs/PortableGroup/PG_Operators.h"
-#include "ace/Get_Opt.h"
-
-
-ACE_RCSID (CPU,
- client,
- "$Id$")
-
-
-const char * location = "MyLocation";
-
-const int MAX_RETRIES = 10;
-const CosLoadBalancing::LoadId LOAD_ID = CosLoadBalancing::CPU;
-
-int
-parse_args (int argc, char *argv[])
-{
- ACE_Get_Opt get_opts (argc, argv, "l:");
-
- int c;
-
- while ((c = get_opts ()) != -1)
- switch (c)
- {
- case 'l':
- location = get_opts.opt_arg ();
- break;
-
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "Usage: %s -l <ior>\n",
- argv[0]),
- -1);
- }
-
- return 0;
-}
-
-void
-check_loads (const CosLoadBalancing::LoadList & loads
- ACE_ENV_ARG_DECL)
-{
- if (loads.length () != 1)
- {
- ACE_ERROR ((LM_ERROR,
- "ERROR: Load list length is not equal to one.\n"));
-
- ACE_THROW (CORBA::INTERNAL ());
- }
-
- if (loads[0].id != LOAD_ID
- || loads[0].value < 0)
- {
- ACE_ERROR ((LM_ERROR,
- "ERROR: Returned load is not a CPU load.\n"));
-
- ACE_THROW (CORBA::INTERNAL ());
- }
-}
-
-int
-main (int argc, char *argv[])
-{
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc,
- argv,
- ""
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // Obtain a reference to the CodecFactory.
- CORBA::Object_var obj =
- orb->resolve_initial_references ("LoadManager"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CosLoadBalancing::LoadManager_var lm =
- CosLoadBalancing::LoadManager::_narrow (obj.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CosLoadBalancing::Location the_location (1);
- the_location.length (1);
-
- the_location[0].id = CORBA::string_dup (location);
-
- // Attempt to get loads from the LoadManager.
- ACE_DEBUG ((LM_INFO,
- "\n"
- "Retrieving loads from LoadManager ..."));
-
- CosLoadBalancing::LoadList_var loads;
-
- CORBA::Boolean retrieved_load = 0;
-
- // Try a few times until a load is capable of being retrieved.
- for (int i = 0; i < MAX_RETRIES && retrieved_load == 0; ++i)
- {
- ACE_TRY_EX (foo)
- {
- loads = lm->get_loads (the_location
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK_EX (foo);
-
- retrieved_load = 1;
- }
- ACE_CATCHANY
- {
- ACE_DEBUG ((LM_DEBUG, ".")); // Show some progress.
-
- // Give some time for loads to be reported to the
- // LoadManager.
- ACE_OS::sleep (2);
- }
- ACE_ENDTRY;
- ACE_TRY_CHECK;
- }
-
- if (retrieved_load == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- "\nERROR: Unable to retrieve loads "
- "from LoadManager.\n"),
- -1);
- else
- ACE_DEBUG ((LM_INFO,
- " DONE\n"));
-
- ::check_loads (loads.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- // Attempt to get loads directly from the LoadMonitor.
- CosLoadBalancing::LoadMonitor_var monitor =
- lm->get_load_monitor (the_location
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CosLoadBalancing::Location_var cpu_mon_location =
- monitor->the_location (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (cpu_mon_location.in () != the_location)
- {
- ACE_ERROR ((LM_ERROR,
- "ERROR: Mismatched CPU load monitor location\n"));
-
- ACE_TRY_THROW (CORBA::INTERNAL ());
- }
-
- ACE_DEBUG ((LM_INFO,
- "Retrieving loads directly from LoadMonitor ..."));
-
- loads = monitor->loads (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_INFO,
- " DONE\n"));
-
- ::check_loads (loads.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "CPU Load Monitor test:");
- return -1;
- }
- ACE_ENDTRY;
-
- ACE_DEBUG ((LM_INFO, "CPU Load Monitor test passed.\n\n"));
-
- return 0;
-}
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp
deleted file mode 100644
index 4c1a46bef52..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.dsp
+++ /dev/null
@@ -1,96 +0,0 @@
-# Microsoft Developer Studio Project File - Name="CPU Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=CPU Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "client.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "client.mak" CFG="CPU Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "CPU Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "CPU Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "CPU Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../.." /I "../../../../.." /I "../../../../../orbsvcs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_Messaging.lib TAO_CosNaming.lib TAO_PortableGroup.lib TAO_CosLoadBalancing.lib TAO_Valuetype.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
-
-!ELSEIF "$(CFG)" == "CPU Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../../../.." /I "../../../../.." /I "../../../../../orbsvcs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_Messagingd.lib TAO_CosNamingd.lib TAO_PortableGroupd.lib TAO_CosLoadBalancingd.lib TAO_Valuetyped.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\..\ace" /libpath:"..\..\..\..\..\tao" /libpath:"..\..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\tao\Messaging" /libpath:"..\..\..\..\..\orbsvcs\orbsvcs" /libpath:"..\..\..\..\..\tao\Valuetype"
-
-!ENDIF
-
-# Begin Target
-
-# Name "CPU Client - Win32 Release"
-# Name "CPU Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\client.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl
deleted file mode 100755
index 7b7ed466ffc..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl
+++ /dev/null
@@ -1,61 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
- & eval 'exec perl -S $0 $argv:q'
- if 0;
-
-# -*- perl -*-
-# $Id$
-
-use lib "../../../../../../bin";
-use PerlACE::Run_Test;
-
-print STDERR "\n\n==== Running CPU Load Monitor test\n";
-
-
-$lm_ior = "lm.ior";
-unlink $lm_ior;
-
-$status = 0;
-
-$init_ref = "-ORBInitRef LoadManager=file://" . $lm_ior;
-
-$location = "MyLocation";
-
-$LM = new PerlACE::Process ("../../../../LoadBalancer/LoadManager",
- "-o " . $lm_ior);
-
-$MON = new PerlACE::Process ("../../../../LoadBalancer/LoadMonitor",
- "-l " . $location
- . " -t CPU -s PULL "
- . $init_ref);
-
-$CL = new PerlACE::Process ("client",
- $init_ref
- . " -l " . $location);
-
-$LM->Spawn ();
-
-if (PerlACE::waitforfile_timed ($lm_ior, 8) == -1) {
- print STDERR "ERROR: cannot find file LoadManager IOR: " . $lm_ior ."\n";
- exit 1;
-}
-
-$MON->Spawn ();
-
-$client = $CL->SpawnWaitKill (100);
-
-if ($client != 0) {
- print STDERR "ERROR: client returned $client\n";
- $status = 1;
-}
-
-$load_monitor = $MON->TerminateWaitKill (10);
-$load_manager = $LM->TerminateWaitKill (10);
-
-if ($load_manager != 0 || $load_monitor != 0) {
- print STDERR "Error terminating LoadManager or LoadMonitor.\n";
- $status = 1;
-}
-
-unlink $lm_ior;
-
-exit $status;
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile
deleted file mode 100644
index 21fb0e5115b..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-#----------------------------------------------------------------------------
-#
-# $Id$
-#
-#----------------------------------------------------------------------------
-
-#----------------------------------------------------------------------------
-# Local macros
-#----------------------------------------------------------------------------
-
-DIRS = \
- CPU
-
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif
-
-#----------------------------------------------------------------------------
-# 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
-
-include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU
diff --git a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor
deleted file mode 100644
index 51fb5aa2254..00000000000
--- a/TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/Makefile.bor
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Makefile for building the TAO Load Monitor tests
-#
-# $Id$
-#
-
-
-DIRS = \
- CPU
-
-
-!include <$(ACE_ROOT)\include\makeinclude\recurse.bor>
diff --git a/TAO/orbsvcs/tests/LoadBalancing/Makefile b/TAO/orbsvcs/tests/LoadBalancing/Makefile
index 9e80fe44797..0a480c54c0c 100644
--- a/TAO/orbsvcs/tests/LoadBalancing/Makefile
+++ b/TAO/orbsvcs/tests/LoadBalancing/Makefile
@@ -9,8 +9,7 @@
#----------------------------------------------------------------------------
DIRS = \
- GenericFactory \
- LoadMonitor
+ GenericFactory
ifndef TAO_ROOT
diff --git a/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor b/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor
index 1bae18dc4de..51f8f96fdb3 100644
--- a/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor
+++ b/TAO/orbsvcs/tests/LoadBalancing/Makefile.bor
@@ -6,8 +6,7 @@
DIRS = \
- GenericFactory \
- LoadMonitor
+ GenericFactory
!include <$(ACE_ROOT)\include\makeinclude\recurse.bor>
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile b/TAO/orbsvcs/tests/RTCosScheduling/Makefile
deleted file mode 100644
index 4c02fec255e..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile
+++ /dev/null
@@ -1,78 +0,0 @@
-#----------------------------------------------------------------------------
-#
-# $Id$
-#
-#----------------------------------------------------------------------------
-
-#----------------------------------------------------------------------------
-# Local macros
-#----------------------------------------------------------------------------
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif # ! TAO_ROOT
-
-# On non-Windows environment, we should at least define
-# the export_include IDL flag.
-TAO_IDLFLAGS +=\
- -Wb,export_macro=testSched_Export \
- -Wb,export_include=testSched_export.h
-
-LIB = libtestSched_Common.a
-SHLIB = libtestSched_Common.$(SOEXT)
-
-IDL_FILES = testSched
-IDL_SRC = testSchedC testSchedS
-
-ACE_SHLIBS = -lTAO_PortableServer -lTAO -lACE
-LDLIBS = -lTAO_PortableServer -lTAO
-SRCS = $(IDL_SRC)
-LSRC = $(addsuffix .cpp,$(IDL_SRC) )
-CCFLAGS := $(strip $(subst -fno-implicit-templates,,$(CCFLAGS))) -g
-CPPFLAGS += -DACE_HAS_GNU_REPO
-CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT)/tao
-CPPFLAGS += -D_DEBUG
-BIN = client server
-
-
-CLIENT_OBJS = $(addsuffix .o, client )
-SERVER_OBJS = $(addsuffix .o, server Object1_i )
-
-#----------------------------------------------------------------------------
-# 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
-include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
-
-#----------------------------------------------------------------------------
-# Local targets (and local hacks)
-#----------------------------------------------------------------------------
-
-LDFLAGS += -L$(TAO_ROOT)/tao
-CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(TAO_ROOT)/orbsvcs
-
-.PRECIOUS: $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext))))
-
-realclean: clean
- -$(RM) $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext)))
-
-LDFLAGS = -L$(ACE_ROOT)/ace -L. -g
-LDLIBS = -lTAO_RTCosScheduling -ltestSched_Common -lTAO_CosNaming -lTAO_Svc_Utils -lTAO_IORTable -lTAO_RTPortableServer -lTAO_PortableServer -lTAO_RTCORBA -lTAO
-
-include $(TAO_ROOT)/taoconfig.mk
-
-client: $(addprefix $(VDIR),$(CLIENT_OBJS))
- $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
-
-server: $(addprefix $(VDIR),$(SERVER_OBJS))
- $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
-
-
-# DO NOT DELETE THIS LINE -- g++dep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client b/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client
deleted file mode 100644
index b98bc263692..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Client
+++ /dev/null
@@ -1,123 +0,0 @@
-#----------------------------------------------------------------------------
-# GNU Makefile
-#
-# @file Makefile.RTCosScheduling_Client
-#
-# $Id$
-#
-# This file was automatically generated by MPC. Any changes made directly to
-# this file will be lost the next time it is generated.
-#
-#----------------------------------------------------------------------------
-MAKEFILE = Makefile.RTCosScheduling_Client
-DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling_Client
-BIN_UNCHECKED = client
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif
-ifndef CIAO_ROOT
- CIAO_ROOT = $(TAO_ROOT)/CIAO
-endif
-
-TAO_IDL = ../../../bin/tao_idl
-IDL_FILES = testSched
-IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-FILES = \
- testSchedC \
- testSchedS \
- client
-
-#----------------------------------------------------------------------------
-# Include macros and targets
-#----------------------------------------------------------------------------
-LDLIBS = -lTAO_RTCosScheduling -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
-include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
-## We don't need the ACELIB setting from wrapper_macros.GNU
-ACELIB =
-include $(TAO_ROOT)/rules.tao.GNU
-
-# To build multiple executables in the same directory on AIX, it works
-# best to have a template directory per project.
-# The compiler/linker isn't too smart about instantiating templates...
-ifdef TEMPINCDIR
-TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling_Client
-
-all: $(TEMPINCDIR)
-
-$(TEMPINCDIR):
- @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR)
-
-endif
-
-CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq ($(rt_corba),1)
-BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
-
-OBJS = $(addsuffix .o, $(notdir $(FILES)))
-SRC = $(addsuffix .cpp, $(FILES))
-
-ifneq ($(BIN),)
-all: idl_stubs
-
-# This rule forces make to run the idl_stubs
-# target before building any of the source files.
-testSchedC.cpp testSchedS.cpp client.cpp: idl_stubs
-endif
-
-include $(ACE_ROOT)/include/makeinclude/macros.GNU
-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
-
-CPPFLAGS += -I../../../orbsvcs -I../../.. -I../../../tao -I../../..
-ifeq ($(static_libs),1)
- ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
- endif
-endif
-
-
-LDFLAGS += -L../../../lib
-
-TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Gv
-#----------------------------------------------------------------------------
-# Local targets
-#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-../../../lib:
- -@mkdir -p "../../../lib"
-
-
-ADDITIONAL_IDL_TARGETS =
-# IDL File Directory: .
-
-ifneq ($(ADDITIONAL_IDL_TARGETS),)
-idl_stubs: $(ADDITIONAL_IDL_TARGETS)
-endif
-
-.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-ifndef kylix
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
-
-realclean: clean
- -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifneq ($(GENERATED_DIRTY),)
- -$(RM) -r $(GENERATED_DIRTY)
-endif
-
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server b/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server
deleted file mode 100644
index 499ddbe236d..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/Makefile.RTCosScheduling_Server
+++ /dev/null
@@ -1,124 +0,0 @@
-#----------------------------------------------------------------------------
-# GNU Makefile
-#
-# @file Makefile.RTCosScheduling_Server
-#
-# $Id$
-#
-# This file was automatically generated by MPC. Any changes made directly to
-# this file will be lost the next time it is generated.
-#
-#----------------------------------------------------------------------------
-MAKEFILE = Makefile.RTCosScheduling_Server
-DEPENDENCY_FILE = .depend.Makefile.RTCosScheduling_Server
-BIN_UNCHECKED = server
-
-ifndef TAO_ROOT
- TAO_ROOT = $(ACE_ROOT)/TAO
-endif
-ifndef CIAO_ROOT
- CIAO_ROOT = $(TAO_ROOT)/CIAO
-endif
-
-TAO_IDL = ../../../bin/tao_idl
-IDL_FILES = testSched
-IDL_SRC = $(foreach ext, C.cpp S.cpp, $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-FILES = \
- testSchedC \
- testSchedS \
- Object1_i \
- server
-
-#----------------------------------------------------------------------------
-# Include macros and targets
-#----------------------------------------------------------------------------
-LDLIBS = -lTAO_RTCosScheduling -lTAO_RTPortableServer -lTAO_RTCORBA -lTAO_PortableServer -lTAO_IORInterceptor -lTAO_Valuetype -lTAO_ObjRefTemplate -lTAO -lACE
-include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
-## We don't need the ACELIB setting from wrapper_macros.GNU
-ACELIB =
-include $(TAO_ROOT)/rules.tao.GNU
-
-# To build multiple executables in the same directory on AIX, it works
-# best to have a template directory per project.
-# The compiler/linker isn't too smart about instantiating templates...
-ifdef TEMPINCDIR
-TEMPINCDIR := $(TEMPINCDIR)/RTCosScheduling_Server
-
-all: $(TEMPINCDIR)
-
-$(TEMPINCDIR):
- @-test -d $(TEMPINCDIR) || mkdir -p $(TEMPINCDIR) $(ACE_NUL_STDERR)
-
-endif
-
-CURRENT_COMPONENTS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
-ifeq ($(rt_corba),1)
-BIN = $(BIN_UNCHECKED)
-else
- all: require_warning
-endif
-
-OBJS = $(addsuffix .o, $(notdir $(FILES)))
-SRC = $(addsuffix .cpp, $(FILES))
-
-ifneq ($(BIN),)
-all: idl_stubs
-
-# This rule forces make to run the idl_stubs
-# target before building any of the source files.
-testSchedC.cpp testSchedS.cpp Object1_i.cpp server.cpp: idl_stubs
-endif
-
-include $(ACE_ROOT)/include/makeinclude/macros.GNU
-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
-
-CPPFLAGS += -I../../../orbsvcs -I../../.. -I../../../tao -I../../..
-ifeq ($(static_libs),1)
- ifneq ($(LIB),)
- CPPFLAGS += -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
- endif
-endif
-
-
-LDFLAGS += -L../../../lib
-
-TAO_IDLFLAGS += -Ge 1 -Sc -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -Gv
-#----------------------------------------------------------------------------
-# Local targets
-#----------------------------------------------------------------------------
-require_warning:
- @echo This project will not be built due to one of the following missing features:
- @echo rt_corba
-
-../../../lib:
- -@mkdir -p "../../../lib"
-
-
-ADDITIONAL_IDL_TARGETS =
-# IDL File Directory: .
-
-ifneq ($(ADDITIONAL_IDL_TARGETS),)
-idl_stubs: $(ADDITIONAL_IDL_TARGETS)
-endif
-
-.PRECIOUS: $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-
-ifndef kylix
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
-else
-$(BIN): $(addprefix $(VDIR), $(OBJS))
- $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
-endif
-
-realclean: clean
- -$(RM) $(foreach ext, $(IDL_EXT), $(foreach file, $(IDL_FILES), $(file)$(ext)))
-ifneq ($(GENERATED_DIRTY),)
- -$(RM) -r $(GENERATED_DIRTY)
-endif
-
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp b/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp
deleted file mode 100644
index c491eb0b2a3..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file Object1_i.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#include "Object1_i.h"
-#include "ace/ACE.h"
-//#include "tao/RTCORBA/RTCORBA.h"
-////##include "ace/Task.h"
-//
-//#if !defined (ACE_LACKS_PRAGMA_ONCE)
-//# pragma once
-//#endif /* ACE_LACKS_PRAGMA_ONCE */
-//
-////#include "ace/CORBA_macros.h"
-////#include "tao/RTCORBA/Priority_Mapping_Manager.h"
-////#include "tao/corba.h"
-////#include "tao/ORB_Core.h"
-//
-
-Object1_impl::Object1_impl()
- throw (CORBA::SystemException)
-{
-}
-
-
-Object1_impl::~Object1_impl()
- throw (CORBA::SystemException)
-{
-}
-
-
-void Object1_impl::method1(const char* activity,
- CORBA::Long seconds,
- char* &output)
- throw (testSched::testSchedException)
-{
- const int scale_factor = 2000;
- int work;
- const int time_size = 35;
- ACE_TCHAR date_and_time[time_size];
- char buf[128];
- char buf2[128];
-
- ACE_OS::sprintf(buf,
- "%s\t%s\tBeginning work on the server\n",
- ACE::timestamp(date_and_time, time_size),
- activity);
- ACE_DEBUG((LM_DEBUG,"%s",buf));
-
-
-
- if (strcmp(activity,"Client1") == 0)
- {
- ACE_OS::sleep(5);
- }
-
- /// Simulate some work
- static CORBA::ULong prime_number = 9619;
- work = scale_factor * seconds;
- for (; work != 0; work--)
- {
- ACE::is_prime (prime_number, 2, prime_number / 2);
- }
-
- ACE_OS::sprintf(buf2,
- "%s\t%s\tFinished work on the server\n",
- ACE::timestamp(date_and_time, time_size),
- activity);
- ACE_DEBUG((LM_DEBUG,"%s",buf2));
- ACE_OS_String::strcat(buf,buf2);
- output = ACE_OS_String::strdup(buf);
-
-}
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h b/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h
deleted file mode 100644
index 4e64ff1f139..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/Object1_i.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file Object1_i.h
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#ifndef Object1_I_H
-#define Object1_I_H
-
-#include "testSchedS.h"
-//#include "tao/RTCORBA/RTCORBA.h"
-//##include "ace/Task.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-//#include "ace/CORBA_macros.h"
-//#include "tao/RTCORBA/Priority_Mapping_Manager.h"
-//#include "tao/corba.h"
-//#include "tao/ORB_Core.h"
-
-
-
-/**
- * @class Object1_i
- *
- * @brief This class is used to test the RTCORBA 1.0 Scheduling Service
- *
- */
-
-
-class Object1_impl : public POA_testSched::Object1,
- PortableServer::RefCountServantBase
-{
- public:
- Object1_impl()
- throw (CORBA::SystemException);
-
- virtual ~Object1_impl()
- throw (CORBA::SystemException);
-
- virtual void method1(const char *activity,
- CORBA::Long seconds,
- char *&output)
- throw (testSched::testSchedException);
-};
-
-#endif /* Object1_I_H */
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/README b/TAO/orbsvcs/tests/RTCosScheduling/README
deleted file mode 100644
index 8b19750f222..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/README
+++ /dev/null
@@ -1,272 +0,0 @@
-README,v 1.0 2003/07/09
-
-This is a test for RTCORBA 1.0 scheduling Service.
-
-Matt Murphy <murphym@cs.uri.edu>
-University of Rhode Island
-
-Scenario:
---------
-Client nodes connect to a server to make object calls to execute
-on the server. An offline analysis tool has determined appropriate
-priorities for each task on the system. These priorities are stored
-in a configuration file.
-
-The server is started with the appropriate object instantiated that
-will be used by the clients, and the server has created a local
-ServerScheduler object, which sets the RT policies necessary for
-the scheduling service to execute (set through the
-ServerScheduler->create_POA(...) method.). The Client creates a local
-ClientScheduler object, which read the configuration file and stores
-the activity/priority relationships for the given node. Clients make
-a schedule_activity("activity_name") call to the ClientScheduler
-object to set the local system priority as specified by the activity name.
-
-When a client makes a CORBA call on an object residing on the server,
-the Client Propagated Priority policy (set in ServerScheduler)
-ensures that the server receives the priority the client runs at. A
-ServerScheduler receive_request() interceptor intercepts the method
-call and locks the thread while there are higher priority tasks executing
-on the server. The ServerScheduler then sets the server thread to
-run using MPCP while the task executes. A ServerScheduler send_reply
-interceptor lowers the server thread priority when execution is complete.
-
-
-To compile (on unix):
-----------
-Ensure that RTCosScheduling is compiled. There should be a
-libTAO_RTCosScheduling.so file in $ACE_ROOT/TAO/orbsvcs/orbsvcs.
-
-If it is not there, run
-tao_idl -I $TAO_ROOT/ RTCosScheduling.pidl
-in $ACE_ROOT/TAO/orbsvcs/orbsvcs/RTCoscScheduler/
-When this is done, some versions of TAO will erroneously include the line:
-#include "tao/PortableServer/PortableServerS.h"
-in RTCosSchedulingS.h. Comment this line out.
-
-Now from the $ACE_ROOT/TAO/orbsvcs/orbsvcs/ directory, run
-make -f Makefile.RTCosScheduling
-
-
-To compile the test, just run make in the test directory
-
-
-To run (on Unix):
--------
-Run the test as root since this test sets the priorities on
-both the client and server.
-Make sure that your LD_LIBRARY_PATH and TAO_ROOT are set apprioriately:
-
-# ./run_test.pl
-
-
-Options:
---------
-Client:
--B int # amount of work performed before the CORBA call is made
--R int # amount of work performed on server during the CORBA call
--A int # amount of work performed after the corba call
--N char* # name of the node
--X 0|1 # Flag to use yealtime (Y=1)
--C char* # intermediate client output file
- # (used by the run_test validator)
--S char* # intermediate server output file
- # (used by the run_test validator)
--F char* # name of the configuration file that their
- # activities/priorities/resources are stored in
--T char* # name of the activity that the client will run
-
-Server:
--N char* # The name of the node
--F char* # The name of the configuration file
--A char* # the name of the server resource
--X 1|0 # Flag to use realtime (Y=1)
-
-Tests
----------
-
-Functionality Tests
--------------------
-Test1 ensures that the scheduling service works as expected.
-Three clients are started with the following parameters:
-
-Client priority release time remote execution time
-Client1 Low 0 30
-Client2 Medium 0 3
-Client3 High 2 3
-
-Where release time is the amount of work done on the local client before
-the remote method call is made. Each remote method call is made on the
-same server object, so the ServerScheduler must schedule execution of
-each of these three clients so that they use the remote object in the
-appropriate order.
-
-Note that the scheduling service is only tested when both the client and
-the server are using the 1.0 scheduler. (Test1)
-In the functionality tests the clients start up at the same time. Client1
-immediately makes a remote method call to the server. Clients 2 and 3
-make method calls to the server object that arrive while the client 1
-method call is still executing on the server. MPCP guarantees that
-client1's priority is elevated so that it is allowed to finish, so clients
-2 and 3 are placed in a pending queue to await execution. Once client
-1 finishes, the activity in queue with the highest client propagated
-priority (client3) runs. When it is finished, client 2 runs.
-
-When Client1 execution returns from the method call it is blocked in this
-test because it runs at a lower priority than the server execution of
-clients 2 and 3 (this is because this test is designed to run on a single
-node!).
-
-When clients 2 and 3 return from the method call, client 3 finishes execution
-because it has the highest priority, then client2 finishes, finally client 1.
-
-If the scheduling service test failed an error message will appear describing
-the point of failure. Please note that some artificial changes to the client
-and server object code since this test is designed to run on one node.
-Specifically, there is an ACE_OS::sleep(2) in object1_i::method1() that
-executes only when client1 makes the method call. This is because the client1
-method call is running at an elevated MPCP priority, and needs to sleep long
-enough for clients 2 and 3 to execute on the client and make method calls on
-object1. If it did not sleep, the method1() method call would execute to
-completion due the singe node nature of this test. (It is running at an
-elevated priority on the same processor as the clients 2 and 3).
-
-There is also a sleep method in the client code that sleeps for 1 as soon as
-each client starts up. This occurs before schedule activity is called, and is
-in place to allow each client to start up in the event that the default
-priority for new processes is higher than the the priorities set in the config
-file. If the default priority was higher and the clients did not sleep, each
-would not let the sucessive one start at the appropriate time.
-
-Please note that in designing a test that since this runs on a single node, there
-is no noticeable network delay. There will be a greater network delay on a truly
-distributed system. If the test does not run correctly on you machine, try
-changing the sleep delays to allow all processes to start. If they all start,
-the test should work.
-
-
-Tests 2,3,4 do not execute with both ClientScheduler and a ServerScheduler
-so there is no way to validate that execution is appropriate. In test 2,
-visual inspection of the output shows that tasks are scheduled on the client
-appropriately. Similarly, test 3 uses MPCP on the server, but is using the
-default priority that the client ran at rather than a priority set on the
-client by a schedule_activity() call.
-
-
-
-Exception Tests
----------------
-Tests 5,6,7,8 ensure that the 1.0 scheduling service handles excpetions
-and other errors.
-These test determine that the proper exceptions are thrown when the
-scheduling service receives improper parameters from either the Client
-or the server.
-
-
-
-Expected Output
----------------
-==== Running RTCORBA 1.0 Scheduling Service test
-==== Note that the first column is the time, it will be different for you
-
-TIME OBJECT LOCATION ACTIVITY
-
-==== Test1 - YES client side scheduling, YES server side scheduling
- 14:05:38.691428 Client1 Client Beginning Activity with priority 668
- 14:05:38.692174 Client1 Client Calling method1 at priority 668
- 14:05:38.702362 Client1 Server Beginning work on the server
- 14:05:39.695854 Client2 Client Beginning Activity with priority 2674
- 14:05:39.965150 Client3 Client Beginning Activity with priority 4681
- 14:05:40.233140 Client3 Client Calling method1 at priority 4681
- 14:05:40.235364 Client2 Client Calling method1 at priority 2674
- 14:05:44.700578 Client1 Server Method1 finished work on the server
- 14:05:44.701183 Client3 Server Beginning work on the server
- 14:05:45.103074 Client3 Server Method1 finished work on the server
- 14:05:45.103365 Client2 Server Beginning work on the server
- 14:05:45.503888 Client2 Server Method1 finished work on the server
- 14:05:45.504470 Client3 Client Done with method1 with priority 4681
- 14:05:45.504529 Client3 Client Done with test at priority 4681
- 14:05:45.508665 Client2 Client Done with method1 with priority 2674
- 14:05:45.508786 Client2 Client Done with test at priority 2674
- 14:05:45.512861 Client1 Client Done with method1 with priority 668
- 14:05:45.512929 Client1 Client Done with test at priority 668
-The scheduling service worked as expected
-
-==== Test2 - NO client side scheduling, YES server side scheduling
- 14:05:47.708843 Client1 Client Beginning Activity
- 14:05:47.709428 Client1 Client Calling method1
- 14:05:47.718302 Client1 Server Beginning work on the server
- 14:05:48.710637 Client2 Client Beginning Activity
- 14:05:48.710847 Client2 Client Calling method1
- 14:05:48.714555 Client3 Client Beginning Activity
- 14:05:48.984240 Client3 Client Calling method1
- 14:05:48.986737 Client2 Server Beginning work on the server
- 14:05:48.992367 Client3 Server Beginning work on the server
- 14:05:49.754084 Client2 Server Method1 finished work on the server
- 14:05:49.754667 Client2 Client Done with method1
- 14:05:50.182869 Client3 Server Method1 finished work on the server
- 14:05:50.183503 Client3 Client Done with method1
- 14:05:54.586684 Client1 Server Method1 finished work on the server
- 14:05:54.587270 Client1 Client Done with method1
-
-==== Test3 - YES client side scheduling, NO server side scheduling
- 14:05:59.734408 Client1 Client Beginning Activity with priority 668
- 14:05:59.735149 Client1 Client Calling method1 at priority 668
- 14:05:59.748380 Client1 Server Beginning work on the server
- 14:06:00.738820 Client2 Client Beginning Activity with priority 2674
- 14:06:01.008121 Client3 Client Beginning Activity with priority 4681
- 14:06:01.276250 Client3 Client Calling method1 at priority 4681
- 14:06:01.278463 Client2 Client Calling method1 at priority 2674
- 14:06:01.284581 Client3 Server Beginning work on the server
- 14:06:01.685291 Client3 Server Method1 finished work on the server
- 14:06:01.686140 Client3 Client Done with method1 with priority 4681
- 14:06:01.686199 Client3 Client Done with test at priority 4681
- 14:06:01.692324 Client2 Server Beginning work on the server
- 14:06:02.092657 Client2 Server Method1 finished work on the server
- 14:06:02.093181 Client2 Client Done with method1 with priority 2674
- 14:06:02.093237 Client2 Client Done with test at priority 2674
- 14:06:06.102033 Client1 Server Method1 finished work on the server
- 14:06:06.102576 Client1 Client Done with method1 with priority 668
- 14:06:06.102631 Client1 Client Done with test at priority 668
-
-==== Test4 - NO client side scheduling, NO server side scheduling
- 14:06:08.750219 Client1 Client Beginning Activity
- 14:06:08.750789 Client1 Client Calling method1
- 14:06:08.760283 Client1 Server Beginning work on the server
- 14:06:09.751665 Client2 Client Beginning Activity
- 14:06:09.751877 Client2 Client Calling method1
- 14:06:09.755382 Client3 Client Beginning Activity
- 14:06:10.025305 Client3 Client Calling method1
- 14:06:10.027841 Client2 Server Beginning work on the server
- 14:06:10.101792 Client3 Server Beginning work on the server
- 14:06:10.736601 Client2 Server Method1 finished work on the server
- 14:06:10.737125 Client2 Client Done with method1
- 14:06:11.238066 Client3 Server Method1 finished work on the server
- 14:06:11.238607 Client3 Client Done with method1
- 14:06:15.644066 Client1 Server Method1 finished work on the server
- 14:06:15.644596 Client1 Client Done with method1
-
-==== Testing exceptions
-
-==== Test5 - Testing ClientScheduler exception for invalid activity name
-(11071|16386) EXCEPTION, Invalid activity name
-
-user exception, ID 'IDL:RTCosScheduling/UnknownName:1.0'
-
-==== Test6 - Testing client exception when invalid config file specified
-Could not find the config file INVALID_FILE.cfg, aborting
-
-==== Test7 - Testing server exception when invalid Object Name specified
-==== (Object name not in config file)
-(11075|16384) EXCEPTION, Unknown object passed to schedule_object
-
-user exception, ID 'IDL:RTCosScheduling/UnknownName:1.0'
-
-==== Test8 - Testing server exception when invalid config file specified
-Could not find the config file INVALID_FILE.cfg, aborting
-ERROR: server returned 1
-
-
-
-
-
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc
deleted file mode 100644
index 484cbe5f492..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling.mpc
+++ /dev/null
@@ -1,16 +0,0 @@
-project(*server): rtcosscheduling, rt_server, orbsvcsexe {
- exename = server
- comps =
- Source_Files {
- Object1_i.cpp
- server.cpp
- }
-}
-
-project(*client): rtcosscheduling, rt_client, orbsvcsexe {
- exename = client
- comps =
- Source_Files {
- client.cpp
- }
-}
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor
deleted file mode 100644
index ab24f189def..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.bor
+++ /dev/null
@@ -1,72 +0,0 @@
-# Makefile for building the client exe with Borland C++ Builder
-
-NAME = client
-
-TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe
-
-OBJFILES = \
- $(OBJDIR)\client.obj \
- $(OBJDIR)\testSchedC.obj \
- $(OBJDIR)\testSchedS.obj
-
-LFLAGS = \
- -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \
- -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \
- -j$(CORE_BINDIR) \
- -L$(CORE_BINDIR)
-
-LIBFILES = \
- TAO_RTCosScheduling$(LIB_DECORATOR).lib \
- TAO_RTPortableServer$(LIB_DECORATOR).lib \
- TAO_RTCORBA$(LIB_DECORATOR).lib \
- TAO_PortableServer$(LIB_DECORATOR).lib \
- TAO_IORInterceptor$(LIB_DECORATOR).lib \
- TAO_Valuetype$(LIB_DECORATOR).lib \
- TAO_ObjRefTemplate$(LIB_DECORATOR).lib \
- TAO$(LIB_DECORATOR).lib \
- ACE$(LIB_DECORATOR).lib \
-
-
-IDLFILES = \
- $(IDLDIR)\testSched.idl
-
-!ifdef STATIC
-LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
-DLL_FLAGS =
-!else
-LIB_FLAGS =
-DLL_FLAGS =
-!endif
-
-CFLAGS = \
- -I..\..\..\orbsvcs \
- -I..\..\.. \
- -I..\..\..\tao \
- -I..\..\.. \
- $(LIB_FLAGS) \
- $(DLL_FLAGS)
-
-CPPDIR = .
-
-IDLDIR = .
-
-INCLUDES = \
- testSchedC.h \
- testSchedS.h \
- testSchedC.i \
- testSchedS.i \
- testSched.idl
-
-all: idl_src_files
-
-!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor>
-
-#
-# IDL Build rules
-#
-
-idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp)
-
-# IDL File Directory: .
-$(IDLDIR)\testSchedS.cpp $(IDLDIR)\testSchedC.cpp: $(IDLDIR)\testSched.idl
- $(TAO_IDL) -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $**
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp
deleted file mode 100644
index ce855785f30..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.dsp
+++ /dev/null
@@ -1,192 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.mak" CFG="RTCosScheduling_Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\client.pdb" /machine:I386 /out:"Release\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:".\client.pdb" /debug /machine:I386 /out:".\client.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 Release"
-# Name "RTCosScheduling_Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp
deleted file mode 100644
index a51510bcb98..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client.vcp
+++ /dev/null
@@ -1,418 +0,0 @@
-# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Application" 0x8501
-# TARGTYPE "Win32 (WCE x86) Application" 0x8301
-# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
-
-CFG=RTCosScheduling_Client - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.vcn".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client.vcn" CFG="RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
-!MESSAGE "RTCosScheduling_Client - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\ARM\client.pdb" /debug /machine:ARM /out:"Release\ARM\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\ARM\client.pdb" /debug /machine:ARM /out:".\ARM\client.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\client.pdb" /debug /machine:IX86 /out:"Release\IX86\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\client.pdb" /debug /machine:IX86 /out:".\IX86\client.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\client.pdb" /debug /machine:IX86 /out:"Release\IX86\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\client.pdb" /debug /machine:IX86 /out:".\IX86\client.exe"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling_Client - Win32 (WCE x86) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp
deleted file mode 100644
index a7690201fb4..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Client_Static.dsp
+++ /dev/null
@@ -1,192 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling_Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client_Static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Client_Static.mak" CFG="RTCosScheduling_Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Client - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Client_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulings.lib TAO_RTPortableServers.lib TAO_RTCORBAs.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAOs.lib ACEs.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\client.pdb" /machine:I386 /out:"Release\client.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Client_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingsd.lib TAO_RTPortableServersd.lib TAO_RTCORBAsd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAOsd.lib ACEsd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Debug\client.pdb" /debug /machine:I386 /out:"Debug\client.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Client - Win32 Release"
-# Name "RTCosScheduling_Client - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\client.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Client - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Client - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor
deleted file mode 100644
index 2dd48ea95ab..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.bor
+++ /dev/null
@@ -1,74 +0,0 @@
-# Makefile for building the server exe with Borland C++ Builder
-
-NAME = server
-
-TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe
-
-OBJFILES = \
- $(OBJDIR)\Object1_i.obj \
- $(OBJDIR)\server.obj \
- $(OBJDIR)\testSchedC.obj \
- $(OBJDIR)\testSchedS.obj
-
-LFLAGS = \
- -j..\..\..\lib\$(CONFIG_SUBDIR) -j..\..\..\lib \
- -L..\..\..\lib\$(CONFIG_SUBDIR) -L..\..\..\lib \
- -j$(CORE_BINDIR) \
- -L$(CORE_BINDIR)
-
-LIBFILES = \
- TAO_RTCosScheduling$(LIB_DECORATOR).lib \
- TAO_RTPortableServer$(LIB_DECORATOR).lib \
- TAO_RTCORBA$(LIB_DECORATOR).lib \
- TAO_PortableServer$(LIB_DECORATOR).lib \
- TAO_IORInterceptor$(LIB_DECORATOR).lib \
- TAO_Valuetype$(LIB_DECORATOR).lib \
- TAO_ObjRefTemplate$(LIB_DECORATOR).lib \
- TAO$(LIB_DECORATOR).lib \
- ACE$(LIB_DECORATOR).lib \
-
-
-IDLFILES = \
- $(IDLDIR)\testSched.idl
-
-!ifdef STATIC
-LIB_FLAGS = -DTAO_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS -DACE_AS_STATIC_LIBS
-DLL_FLAGS =
-!else
-LIB_FLAGS =
-DLL_FLAGS =
-!endif
-
-CFLAGS = \
- -I..\..\..\orbsvcs \
- -I..\..\.. \
- -I..\..\..\tao \
- -I..\..\.. \
- $(LIB_FLAGS) \
- $(DLL_FLAGS)
-
-CPPDIR = .
-
-IDLDIR = .
-
-INCLUDES = \
- Object1_i.h \
- testSchedC.h \
- testSchedS.h \
- testSchedC.i \
- testSchedS.i \
- testSched.idl
-
-all: idl_src_files
-
-!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor>
-
-#
-# IDL Build rules
-#
-
-idl_src_files: $(IDLFILES:.idl=C.cpp) $(IDLFILES:.idl=S.cpp)
-
-# IDL File Directory: .
-$(IDLDIR)\testSchedS.cpp $(IDLDIR)\testSchedC.cpp: $(IDLDIR)\testSched.idl
- $(TAO_IDL) -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $**
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp
deleted file mode 100644
index 98d5e07c73f..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.dsp
+++ /dev/null
@@ -1,200 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Server - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.mak" CFG="RTCosScheduling_Server - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\server.pdb" /machine:I386 /out:"Release\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:".\server.pdb" /debug /machine:I386 /out:".\server.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 Release"
-# Name "RTCosScheduling_Server - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp
deleted file mode 100644
index c6392c733aa..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server.vcp
+++ /dev/null
@@ -1,426 +0,0 @@
-# Microsoft eMbedded Visual Tools Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (WCE ARM) Application" 0x8501
-# TARGTYPE "Win32 (WCE x86) Application" 0x8301
-# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
-
-CFG=RTCosScheduling_Server - Win32 (WCE ARM) Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.vcn".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server.vcn" CFG="RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
-!MESSAGE "RTCosScheduling_Server - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-# PROP ATL_Project 2
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\ARM"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\ARM\server.pdb" /debug /machine:ARM /out:"Release\ARM\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ARM"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\ARM"
-# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d ARM /d _ARM_ /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=clarm.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D ARM /D _ARM_ /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\ARM" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\ARM\server.pdb" /debug /machine:ARM /out:".\ARM\server.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\server.pdb" /debug /machine:IX86 /out:"Release\IX86\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\server.pdb" /debug /machine:IX86 /out:".\IX86\server.exe"
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\IX86"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d NDEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /O2 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D NDEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosScheduling.lib TAO_RTPortableServer.lib TAO_RTCORBA.lib TAO_PortableServer.lib TAO_IORInterceptor.lib TAO_Valuetype.lib TAO_ObjRefTemplate.lib TAO.lib ACE.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:"Release\IX86\server.pdb" /debug /machine:IX86 /out:"Release\IX86\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\IX86"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server\IX86"
-# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
-# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
-# PROP Target_Dir ""
-RSC=rc.exe
-# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "$(CePlatform)" /d _DEBUG /d UNICODE /d _UNICODE /d _i386_ /d _X86_ /d x86 /i "..\..\..\orbsvcs" /i "..\..\.." /i "..\..\..\tao" /i "..\..\.." /r
-CPP=cl.exe
-# ADD CPP /nologo /Ob0 /W3 /Zi /I "..\..\..\orbsvcs" /I "..\..\.." /I "..\..\..\tao" /I "..\..\.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D _DEBUG /D UNICODE /D _UNICODE /D _i386_ /D _X86_ /D x86 /FR /FD /c
-# SUBTRACT CPP /YX
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 winsock.lib commctrl.lib coredll.lib iphlpapi.lib /INCREMENTAL:NO TAO_RTCosSchedulingd.lib TAO_RTPortableServerd.lib TAO_RTCORBAd.lib TAO_PortableServerd.lib TAO_IORInterceptord.lib TAO_Valuetyped.lib TAO_ObjRefTemplated.lib TAOd.lib ACEd.lib /libpath:"..\..\..\lib\IX86" /nologo /base:"0x00100000" /nodefaultlib:"$(CENoDefaultLib)" /version:1.3.4 /subsystem:$(CESubsystem) /align:"4096" /pdb:".\IX86\server.pdb" /debug /machine:IX86 /out:".\IX86\server.exe"
-
-!ENDIF
-
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-# Name "RTCosScheduling_Server - Win32 (WCE x86) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-# Name "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-# Name "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE ARM) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE x86) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 (WCE emulator) Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\lib \
- ..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp b/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp
deleted file mode 100644
index fc342486b6e..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/RTCosScheduling_Server_Static.dsp
+++ /dev/null
@@ -1,200 +0,0 @@
-# Microsoft Developer Studio Project File - Name="RTCosScheduling_Server" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=RTCosScheduling_Server - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE run the tool that generated this project file and specify the
-!MESSAGE nmake output type. You can then use the following command:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server_Static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RTCosScheduling_Server_Static.mak" CFG="RTCosScheduling_Server - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RTCosScheduling_Server - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "RTCosScheduling_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release\RTCosScheduling_Server_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /O2 /W3 /GX /MD /GR /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D NDEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d NDEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulings.lib TAO_RTPortableServers.lib TAO_RTCORBAs.lib TAO_PortableServers.lib TAO_IORInterceptors.lib TAO_Valuetypes.lib TAO_ObjRefTemplates.lib TAOs.lib ACEs.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Release\server.pdb" /machine:I386 /out:"Release\server.exe"
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug\RTCosScheduling_Server_Static"
-# PROP Target_Dir ""
-# ADD CPP /nologo /Ob0 /W3 /Gm /GX /Zi /MDd /GR /Gy /I "$(TAO_ROOT)" /I "$(TAO_ROOT)\tao" /I "..\..\..\.." /D _DEBUG /D WIN32 /D _CONSOLE /D /D /D /FD /c
-# SUBTRACT CPP /YX
-# ADD RSC /l 0x409 /d _DEBUG /i "$(TAO_ROOT)" /i "$(TAO_ROOT)\tao" /i "..\..\..\.."
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD LINK32 advapi32.lib user32.lib /INCREMENTAL:NO TAO_RTCosSchedulingsd.lib TAO_RTPortableServersd.lib TAO_RTCORBAsd.lib TAO_PortableServersd.lib TAO_IORInterceptorsd.lib TAO_Valuetypesd.lib TAO_ObjRefTemplatesd.lib TAOsd.lib ACEsd.lib /libpath:"..\..\..\..\lib" /nologo /version:1.3.4 /subsystem:console /pdb:"Debug\server.pdb" /debug /machine:I386 /out:"Debug\server.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "RTCosScheduling_Server - Win32 Release"
-# Name "RTCosScheduling_Server - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;cxx;c"
-# Begin Source File
-
-SOURCE=".\Object1_i.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\server.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hh"
-# Begin Source File
-
-SOURCE=".\Object1_i.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedC.h"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.h"
-# End Source File
-# End Group
-# Begin Group "Inline Files"
-
-# PROP Default_Filter "i;inl"
-# Begin Source File
-
-SOURCE=".\testSchedC.i"
-# End Source File
-# Begin Source File
-
-SOURCE=".\testSchedS.i"
-# End Source File
-# End Group
-# Begin Group "Documentation"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=".\README"
-# End Source File
-# End Group
-# Begin Group "IDL Files"
-
-# PROP Default_Filter "idl"
-# Begin Source File
-
-SOURCE=".\testSched.idl"
-
-!IF "$(CFG)" == "RTCosScheduling_Server - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\Release\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "RTCosScheduling_Server - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Invoking IDL Compiler on $(InputPath)
-InputPath=.\testSched.idl
-InputName=testSched
-InputDir=.
-
-BuildCmds= \
- PATH=%PATH%;..\..\..\..\lib \
- ..\..\..\..\bin\tao_idl -o . -Ge 1 -Sc -Wb,pre_include=ace\pre.h -Wb,post_include=ace\post.h -Gv $(InputPath)
-
-".\$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-".\$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/client.cpp b/TAO/orbsvcs/tests/RTCosScheduling/client.cpp
deleted file mode 100644
index 9f3bb4b70e3..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/client.cpp
+++ /dev/null
@@ -1,435 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file client.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-
-#include "testSchedC.h"
-#include <orbsvcs/RTCosScheduling/RTCosScheduling_ClientScheduler_i.h>
-#include "ace/Get_Opt.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-#pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Task.h"
-#include "tao/ORB_Core.h"
-
-
-/// In the test, these are the default values that specify
-/// how long (in seconds) the test methods should run before going
-/// to the server, while on the server, and after returning from
-/// the server
-CORBA::Long before_ = 1;
-CORBA::Long remote_ = 1;
-CORBA::Long after_ = 1;
-u_int use_realtime_ = 1;
-
-/// This is the name of the node that the client executes on.
-char *node_ = NULL;
-
-/// the name of the config file holding the scheduling information
-char *file_ = NULL;
-
-/// the name of the activity to run (the name of the string passed in
-/// schedule_activity(activity_)
-char * activity_ = NULL;
-
-/// The name of the output file
-char *client_output_file_ = NULL;
-
-CORBA::String_var serv_output_;
-
-char date_and_time[35];
-char client_output_[2048];
-char buf[100];
-
-
-/// For the timestampe
-const int time_size = 35;
-ACE_TCHAR day_and_time[time_size];
-
-void do_work(const CORBA::Long value);
-
-ACE_RCSID(
- tests,
- client,
- "client.cpp,v 1.0 2003/08/07 15:59:21 murphy_m Exp")
-
-/// Standard parse args method
-/*
- * parse_args allows the user to configure the test to use values other
- * than those specified above.
- */
-int
-parse_args (int argc, char *argv[])
-{
- /// We set the '-' flag for getopts because we have to do this
- /// parsing before the ORB does it's parsing, and we'd confuse it to reorder
- ACE_Get_Opt get_opts (argc, argv, "-B:R:A:X:N:C:F:T:?:");
- int c;
- while ((c = get_opts ()) != -1)
- {
- switch (c)
- {
- case 'B':
- before_ =ACE_OS::atoi (get_opts.opt_arg ());
- break;
- case 'R':
- remote_ =ACE_OS::atoi (get_opts.opt_arg ());
- break;
- case 'A':
- after_ =ACE_OS::atoi (get_opts.opt_arg ());
- break;
- case 'X':
- use_realtime_ =ACE_OS::atoi (get_opts.opt_arg ());
- break;
- case 'N':
- node_ = ACE_OS::strdup(get_opts.opt_arg ());
- break;
- case 'C':
- client_output_file_ = ACE_OS::strdup(get_opts.opt_arg ());
- break;
- case 'F':
- file_ = ACE_OS::strdup(get_opts.opt_arg ());
- break;
- case 'T':
- activity_ = ACE_OS::strdup(get_opts.opt_arg ());
- break;
- case '?':
- ACE_DEBUG ((LM_DEBUG,
- "usage: %n [-b precall_execution] "
- "[-r remote_execution] "
- "[-a postcall_workload] "
- "[-N node] "
- "[-F config_file] "
- "[-c activity_name]\n"));
- ACE_OS::exit (1);
- }
- }
- if (node_ == NULL)
- node_ = ACE_OS::strdup("1");
- if (file_ == NULL)
- file_ = ACE_OS::strdup("schedule.cfg");
- if (activity_ == NULL)
- activity_ = ACE_OS::strdup("");
- if (client_output_file_ == NULL)
- client_output_file_ = ACE_OS::strdup("");
-
- return 0;
-}
-
-/**
- * This class runs the test as a new thread since the main thread
- * cannot set RT priorities as of TAO 1.3.3
- *
- */
-class ORB_Thread : public ACE_Task<ACE_SYNCH>
-{
-
-public:
-ORB_Thread(CORBA::ORB_var orb,
- int argc,
- char **argv)
-: orb_(orb),
- argc_(argc),
- argv_(argv)
-{
-}
-
-int svc(void) {
- ACE_TRY_NEW_ENV
- {
- if (parse_args (argc_, argv_) != 0)
- {
- return 1;
- }
-
- if (strcmp(activity_,"Client2") == 0
- || strcmp(activity_,"Client3") == 0)
- {
- ACE_OS::sleep(1);
- }
-
- CORBA::Object_var obj =
- orb_->string_to_object ("file://server.ior"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-
- if (CORBA::is_nil (obj.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("(%P) orb_->string_to_object ")
- ACE_TEXT ("(\"file://server.ior\") failed.\n")),
- -1);
- }
-
- testSched::Object1_var object1 =
- testSched::Object1::_narrow (obj.in ()ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-
- if (CORBA::is_nil (object1.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "ERROR: Object reference is nil, Aborting\n"), 1);
- }
-
-
- if (use_realtime_)
- {
- /// Create the ClientScheduler, note that you must pass in the
- /// orb and the node name. The node name is required so that the
- /// appropriate information can be read from the config file
- TAO::RTCosScheduling_ClientScheduler_i *client_sched = 0;
- ACE_NEW_THROW_EX(client_sched,
- TAO::RTCosScheduling_ClientScheduler_i (
- orb_,
- node_,
- file_),
- CORBA::NO_MEMORY());
- ACE_TRY_CHECK;
-
-
- // Check to see that the ClientScheduler started correctly
- if (CORBA::is_nil (client_sched))
- {
- /// There was an error in setting up the RTORB,
- /// RT Policies were not set, throw an exception
- ACE_OS::exit(1);
- }
-
-
-
- /// Create a Current object so we can check on the priority locally
- obj = orb_->resolve_initial_references ("RTCurrent"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
- RTCORBA::Current_var current =
- RTCORBA::Current::_narrow (obj.in () ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-
- /// Test to make sure the priority model is exposed
- CORBA::Policy_var policy =
- object1->_get_policy (RTCORBA::PRIORITY_MODEL_POLICY_TYPE
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- RTCORBA::PriorityModelPolicy_var priority_policy =
- RTCORBA::PriorityModelPolicy::_narrow (policy.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (CORBA::is_nil (priority_policy.in ()))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "ERROR: Priority Model not exposed!\n"),
- 1);
- }
-
- /// Test to make sure we are using Server Declared Priority model
- RTCORBA::PriorityModel priority_model =
- priority_policy->priority_model (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (priority_model != RTCORBA::SERVER_DECLARED)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "ERROR: priority_model != "
- "RTCORBA::SERVER_DECLARED!\n"),
- 1);
- }
-
- do_work(before_);
-
- ACE_TRY_EX(sched_act)
- {
- client_sched->schedule_activity (::activity_
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK_EX(sched_act);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ex,
- "Invalid activity name\n");
- return -1;
- }
- ACE_ENDTRY;
-
- ACE_OS::sprintf(buf,
- "%s\t%s\tBeginning activity at priority %d\n",
- ACE::timestamp(date_and_time, time_size),
- activity_,
- current->the_priority());
- ACE_DEBUG ((LM_DEBUG,
- "%s",
- buf));
- ACE_OS_String::strcat(client_output_, buf);
-
- do_work(before_);
- ACE_TRY_CHECK;
-
-
- ACE_OS::sprintf(buf,
- "%s\t%s\tCalling method1 at priority %d\n",
- ACE::timestamp(date_and_time, time_size),
- activity_,
- current->the_priority());
- ACE_DEBUG ((LM_DEBUG,
- "%s",
- buf));
- ACE_OS_String::strcat(client_output_, buf);
- serv_output_ = ACE_OS_String::strdup("");
- object1->method1 (activity_, remote_, serv_output_.inout());
-
- ACE_OS_String::strcat(client_output_, serv_output_.in());
-
-
- ACE_OS::sprintf(buf,
- "%s\t%s\tDone with method1 at priority %d\n",
- ACE::timestamp(date_and_time, time_size),
- activity_,
- current->the_priority());
- ACE_DEBUG ((LM_DEBUG,
- "%s",
- buf));
- ACE_OS_String::strcat(client_output_, buf);
-
-
- do_work(after_);
-
- ACE_OS::sprintf(buf,
- "%s\t%s\tDone with test at priority %d\n",
- ACE::timestamp(date_and_time, time_size),
- activity_,
- current->the_priority());
- ACE_DEBUG ((LM_DEBUG,
- "%s",
- buf));
- ACE_OS_String::strcat(client_output_, buf);
-
-
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "%T\t%s\tClient\tBeginning Activity\n",
- activity_));
- do_work(before_);
- ACE_TRY_CHECK;
- ACE_DEBUG ((LM_DEBUG,
- "%T\t%s\tClient\tCalling method1\n",
- activity_));
-
- object1->method1 (activity_, remote_, serv_output_.inout());
- ACE_OS_String::strcat(client_output_,serv_output_.in());
- /// Finished with remote call
- ACE_DEBUG ((LM_DEBUG,
- "%T\t%s\tClient\tDone with method1\n",
- activity_));
- do_work(after_);
- }
-
- FILE *fp = ACE_OS::fopen(client_output_file_, "w");
- if (fp)
- {
- ACE_OS::fprintf(fp,
- "%s",
- client_output_);
- }
- else
- {
- ACE_DEBUG((LM_DEBUG,"No file to write to\n"));
- }
- ACE_OS::fclose(fp);
-
-
- // Finally destroy the ORB
- orb_->destroy ();
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Exception in running the client\n");
- return -1;
- }
- ACE_ENDTRY;
- return 0;
- }
-
-
-private:
- CORBA::ORB_var orb_;
- CORBA::ORB_var orb2_;
- int argc_; char ** argv_;
-};
-
-
-
-int
-ACE_TMAIN (int argc, char * argv[])
-{
- ACE_TRY_NEW_ENV
- {
- CORBA::ORB_var orb =
- CORBA::ORB_init (argc, argv, "client_orb" ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ORB_Thread ot(orb, argc, argv);
-
- // Need to set the main thread pthread scope and pthread policy to
- // the values that are specified in svc.conf. This change was
- // recommended by irfan@oomworks.com
- long flags = THR_NEW_LWP | THR_JOINABLE |
-
-#if TAO_MAJOR_VERSION > 1 \
-|| (TAO_MAJOR_VERSION==1 && TAO_MINOR_VERSION > 3 ) \
-|| (TAO_MAJOR_VERSION==1 && TAO_MAJOR_VERSION==3 && TAO_MINOR_VERSION > 1)
-
- orb->orb_core ()->orb_params ()->thread_creation_flags ();
- ACE_TRY_CHECK;
-
-#else /* TAO version is 1.3.1 or lower */
- orb->orb_core ()->orb_params ()->scope_policy () |
- orb->orb_core ()->orb_params ()->sched_policy ();
- ACE_TRY_CHECK;
-#endif
-
- ot.activate(flags);
- return ot.wait();
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "ERROR in running the client\n");
- }
- ACE_ENDTRY;
- return 0;
-}
-
-void
-do_work(const CORBA::Long value)
-{
- const int scale_factor = 2000;
- int work;
-
- /// Simulate some work
- static CORBA::ULong prime_number = 9619;
-
- work = scale_factor * value;
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "test_i::method: %hd units of work\n", work));
- for (; work != 0; work--)
- ACE::is_prime (prime_number, 2, prime_number / 2);
-
-}
-
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl b/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl
deleted file mode 100755
index 86dcdd50673..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/run_test.pl
+++ /dev/null
@@ -1,318 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
- & eval 'exec perl -S $0 $argv:q'
- if 0;
-
-# -*- perl -*-
-# $Id$
-
-use lib '../../../../bin';
-use PerlACE::Run_Test;
-
-$status = 0;
-$file = PerlACE::LocalFile ("server.ior");
-
-unlink $file;
-
-$status = 0;
-#S11 uses schedule object, S10 does not
-$S11 = new PerlACE::Process ("server",
- "-N 2 -F schedule.cfg -A Server2 -X 1");
-$S10 = new PerlACE::Process ("server",
- "-N 2 -F schedule.cfg -A Server2 -X 0");
-
-#S2 uses and invalid config file
-$S2 = new PerlACE::Process ("server",
- "-N 2 -F INVALID_FILE.cfg -A Server2 -X 1");
-
-#s3 tries to schedule an invalid object
-$S3 = new PerlACE::Process ("server",
- "-N 2 -F schedule.cfg -A Server5 -X 1");
-
-$C1_client_output = PerlACE::LocalFile ("client1_output");
-$C2_client_output = PerlACE::LocalFile ("client2_output");
-$C3_client_output = PerlACE::LocalFile ("client3_output");
-
-unlink $C1_client_output;
-unlink $C2_client_output;
-unlink $C3_client_output;
-
-
-
-# C11 C21 C31 use RTCosScheduler 1.0 on the client
-$C11 = new PerlACE::Process ("client", "-B 0 -R 10 -A 3 -N 1 -C ". $C1_client_output. " -F schedule.cfg -T Client1 -X 1");
-$C21 = new PerlACE::Process ("client", "-B 0 -R 3 -A 3 -N 1 -C ". $C2_client_output. " -F schedule.cfg -T Client2 -X 1");
-$C31 = new PerlACE::Process ("client", "-B 2 -R 3 -A 3 -N 1 -C ". $C3_client_output. " -F schedule.cfg -T Client3 -X 1");
-
-#C10 C20 C30 Do not use RTCosScheduler 1.0 on the client
-$C10 = new PerlACE::Process ("client",
- "-B 0 -R 10 -A 3 -N 1 -C ".
- $C1_client_output.
- " -F schedule.cfg -T Client1 -X 0");
-$C20 = new PerlACE::Process ("client",
- "-B 0 -R 3 -A 3 -N 1 -C ".
- $C3_client_output.
- " -F schedule.cfg -T Client2 -X 0");
-$C30 = new PerlACE::Process ("client",
- "-B 2 -R 3 -A 3 -N 1 -C ".
- $C3_client_output.
- " -F schedule.cfg -T Client3 -X 0");
-
-#C4 is an invalid activity name
-$C4 = new PerlACE::Process ("client",
- "-B 1 -R 3 -A 0 -N 1 -F schedule.cfg ".
- "-T Client4 -X 1");
-
-#C5 is an invalid config file
-$C5 = new PerlACE::Process ("client",
- "-B 1 -R 3 -A 0 -N 1 -F INVALID_FILE.cfg ".
- "-T Client2 -X 1");
-
-sub spawn_server
-{
- local ( $param_1 ) = @_ ;
- $param_1->Spawn ();
- if (PerlACE::waitforfile_timed ($file, 15) == -1) {
- print STDERR "ERROR: cannot find file <$file>\n";
- $param_1->Kill ();
- exit 1;
- }
-}
-
-sub kill_server
-{
- local ($param_1) = @_;
- $server = $param_1->TerminateWaitKill (15);
- if ($server != 0) {
- print STDERR "ERROR: server returned $server\n";
- $status = 1;
- }
- unlink $file;
-}
-
-sub run_client
-{
- local ($param_1) = @_;
- $client = $param_1->Spawn();
- if ($client != 0) {
- print STDERR "ERROR: client returned $client\n";
- $status = 1;
- }
-}
-
-
-sub test
-{
- local($param_0, $param_1, $param_2, $param_3) = @_;
- print STDERR $param_0;
-
- $client1 = $param_1->Spawn();
- $client2 = $param_2->Spawn();
- $client3 = $param_3->Spawn();
-
- if ($client1 != 0) {
- print STDERR "ERROR: client returned $client1\n";
- $status = 1;
- }
-
- if ($client2 != 0) {
- print STDERR "ERROR: client returned $client2\n";
- $status = 1;
- }
-
- if ($client3 != 0) {
- print STDERR "ERROR: client returned $client3\n";
- $status = 1;
- }
-
-
- $param_1->WaitKill (35);
- $param_2->WaitKill (30);
- $param_3->WaitKill (30);
- sleep 2;
-
- if ($param_0 =~ /Test1/)
- {
- evaluate_output();
- }
- unlink $C1_client_output;
- unlink $C2_client_output;
- unlink $C3_client_output;
-
-
-}
-
-
-sub test5
-{
- print STDERR "\n==== Testing exceptions\n";
- print STDERR "\n==== Test5 - Testing ClientScheduler ".
- "exception for invalid activity name\n".
- "Should recieve an RTCosScheduling::UnknownName exeption\n";
- run_client($C4);
- $C4->WaitKill(10);
-}
-
-sub test6
-{
- print STDERR "\n==== Test6 - Testing client exception ".
- "when invalid config file specified\n".
- "Program should abort because no valid file was given\n";
- run_client($C5);
- $C5->WaitKill (10);
-}
-
-sub test7
-{
- print STDERR "\n==== Test7 - Testing server exception ".
- "when invalid Object Name specified\n";
- print STDERR "==== (Object name not in config file)\n".
- "Should receive an RTCosScheduling::UnknownName exception\n";
- $S3->Spawn();
- sleep 1;
- kill_server($S3);
-}
-
-
-sub test8
-{
- print STDERR "\n==== Test8 - Testing server exception ".
- "when invalid config file specified\n".
- "Server Should abort because an invalid config ".
- "filename was given\n";
- $S2->Spawn();
- sleep 1;
- kill_server($S2);
-}
-
-sub evaluate_output
-{
- # this looks at the three output files to see if the
- # clients ran in the correct order
- open(INFOC1, $C1_client_output);
- open(INFOC2, $C2_client_output);
- open(INFOC3, $C3_client_output);
-
-
- @arrayC1=<INFOC1>;
- close (INFOC1);
- @arrayC2=<INFOC2>;
- close (INFOC2);
- @arrayC3=<INFOC3>;
- close (INFOC3);
-
-
- $is_valid = 1;
- $counter = 0;
-
- # check the client execution to make sure
- #it runs in the correct order
- ($BAtimeC1,$client,$activity)=split(/\t/,@arrayC1[0]);
- ($BAtimeC2,$client,$activity)=split(/\t/,@arrayC2[0]);
- ($BAtimeC3,$client,$activity)=split(/\t/,@arrayC3[0]);
-
- ($CMtimeC1,$client,$activity)=split(/\t/,@arrayC1[1]);
- ($CMtimeC2,$client,$activity)=split(/\t/,@arrayC2[1]);
- ($CMtimeC3,$client,$activity)=split(/\t/,@arrayC3[1]);
-
- ($BRtimeC1,$client,$activity)=split(/\t/,@arrayC1[2]);
- ($BRtimeC2,$client,$activity)=split(/\t/,@arrayC2[2]);
- ($BRtimeC3,$client,$activity)=split(/\t/,@arrayC3[2]);
-
- ($FRtimeC1,$client,$activity)=split(/\t/,@arrayC1[3]);
- ($FRtimeC2,$client,$activity)=split(/\t/,@arrayC2[3]);
- ($FRtimeC3,$client,$activity)=split(/\t/,@arrayC3[3]);
-
- ($DMtimeC1,$client,$activity)=split(/\t/,@arrayC1[4]);
- ($DMtimeC2,$client,$activity)=split(/\t/,@arrayC2[4]);
- ($DMtimeC3,$client,$activity)=split(/\t/,@arrayC3[4]);
-
- ($DTtimeC1,$client,$activity)=split(/\t/,@arrayC1[5]);
- ($DTtimeC2,$client,$activity)=split(/\t/,@arrayC2[5]);
- ($DTtimeC3,$client,$activity)=split(/\t/,@arrayC3[5]);
-
-
- if ($BAtimeC1 gt $BAtimeC2 || $BAtimeC2 gt $BAtimeC3)
- {
- print STDERR "Scheduler Test Failed - activities did not ".
- "begin in correct order\n";
- $is_valid = 0;
- }
- if ($CMtimeC1 gt $CMtimeC2 || $CMtimeC1 gt $CMtimeC3)
- {
- print STDERR "Scheduler Test Failed - remote method calls not ".
- "made in correct order\n";
- $is_valid = 0;
- }
- if ($FRtimeC1 gt $FRtimeC3 || $FRtimeC3 gt $FRtimeC2)
- {
- print STDERR "Scheduler Test Failed - Remote Method calls did ".
- "not finish in correct order\n";
- $is_valid = 0;
- }
- if ($DTtimeC3 gt $DTtimeC2 || $DTtimeC2 gt $DTtimeC1)
- {
- print STDERR "Scheduler Test Failed - Tests did not finish in ".
- "correct order\n";
- $is_valid = 0;
- }
- if ($BRtimeC1 gt $BAtimeC2)
- {
- print STDERR "Scheduler Test Failed - Client1 remote method call ".
- "finished before Client2 began local activity\n";
- $is_valid = 0;
- }
- if ($FRtimeC1 gt $BRtimeC3 || $FRtimeC1 gt $BRtimeC2)
- {
- print STDERR "Scheduler Test Failed - Client1 finished before ".
- "Clients2 or 3 made method calls\n";
- $is_valid = 0;
- }
- if ($BRtimeC3 gt $BRtimeC2 || $FRtimeC3 gt $FRtimeC2)
- {
- print STDERR "Scheduler Test Failed - Client 3 remote method call ".
- "did not begin before Client2\n";
- $is_valid = 0;
- }
-
- if ($is_valid == 1)
- {
- print STDERR "The scheduling service worked as expected\n";
- }
- else
- {
- print STDERR "The scheduling service did not work as expected\n";
- }
-
-}
-
-
-print STDERR "\n==== Running RTCORBA 1.0 Scheduling Service test\n";
-print STDERR "==== Note that the first column is the time, ".
- "it will be different for you\n\n";
-print STDERR "TIME\t\t\tOBJECT\tLOCATION\tACTIVITY\n";
-
-spawn_server($S11);
-test("\n==== Test1 - YES client side scheduling, ".
- "YES server side scheduling\n", $C11, $C21, $C31);
-test("\n==== Test2 - NO client side scheduling, ".
- "YES server side scheduling\n", $C10, $C20, $C30);
-kill_server($S11);
-
-spawn_server($S10);
-test("\n==== Test3 - YES client side scheduling, ".
- "NO server side scheduling\n", $C11, $C21, $C31);
-test("\n==== Test4 - NO client side scheduling, ".
- "NO server side scheduling\n", $C10, $C20, $C30);
-kill_server($S10);
-
-spawn_server($S11);
-test5();
-test6();
-kill_server($S11);
-
-
-test7();
-test8();
-
-
-exit $status;
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg b/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg
deleted file mode 100644
index 0f74742bcc0..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/schedule.cfg
+++ /dev/null
@@ -1,24 +0,0 @@
-Node 1
-
-Resources:
-BP 11000
-Server2 6000
-END
-
-Tasks:
-Client1 500
-Client2 5500
-Client3 11000
-END
-
-Node 2
-
-Resources:
-BP 17000
-Server2 11000
-Server3 500
-END
-
-Tasks:
-Client4 500
-Client5 10000
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/server.cpp b/TAO/orbsvcs/tests/RTCosScheduling/server.cpp
deleted file mode 100644
index 63e29b832ab..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/server.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file server.cpp
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-#include "Object1_i.h"
-#include <orbsvcs/RTCosScheduling/RTCosScheduling_ServerScheduler_i.h>
-#include "ace/streams.h"
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-#pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Task.h"
-#include "ace/Get_Opt.h"
-#include "tao/ORB_Core.h"
-
-
-char *node_ = NULL;
-char *file_ = NULL;
-char *shared_file_ = NULL;
-char *object_ = NULL;
-int num_threads_ = 5;
-int use_realtime_ = 1;
-
-// ORB Thread
-
-class ORB_Thread : public ACE_Task<ACE_SYNCH>
-{
-public:
-
-ORB_Thread(CORBA::ORB_var orb) : orb_(orb)
-{
-}
-
-int
-svc(void) {
- orb_->run();
- ACE_TRY_CHECK;
-
- exit(0);
-}
-
-
-private:
- CORBA::ORB_var orb_;
-};
-
-
-int
-parse_args (int argc, char *argv[])
-{
- // We set the '-' flag for getopts because we have to do
- // this parsing before the ORB does it's
- //parsing, and we'd confuse it to reorder
- ACE_Get_Opt get_opts (argc, argv, "-:N:F:S:T:A:X:");
- int c;
-
- while ((c = get_opts ()) != -1)
- {
- switch (c)
- {
- case 'N':
- node_ = get_opts.opt_arg ();
- break;
- case 'F':
- file_ = get_opts.opt_arg ();
- break;
- case 'S':
- shared_file_ = get_opts.opt_arg ();
- break;
- case 'T':
- num_threads_ = ACE_OS::atoi (get_opts.opt_arg ());
- break;
- case 'A':
- object_ = ACE_OS::strdup(get_opts.opt_arg ());
- break;
- case 'X':
- use_realtime_ = ACE_OS::atoi(get_opts.opt_arg ());
- break;
-
- }
- }
- if (node_ == NULL)
- node_ = ACE_OS::strdup("1");
- if (file_ == NULL)
- file_ = ACE_OS::strdup("schedule.cfg");
- if (shared_file_ == NULL)
- shared_file_ = ACE_OS::strdup("Scheduling_Service_Shared_Memory");
- if (object_ == NULL)
- object_ = ACE_OS::strdup("Server2");
-
- return 0;
-}
-
-
-int
-ACE_TMAIN (int argc, ACE_TCHAR *argv[]) {
- ACE_TRY_NEW_ENV
- {
- if (parse_args (argc, argv) != 0)
- {
- return 1;
- }
-
- CORBA::ORB_var orb=
- CORBA::ORB_init (argc,
- argv,
- "testORB"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- /// get the root poa
- CORBA::Object_var object=
- orb->resolve_initial_references ("RootPOA"
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- PortableServer::POA_var rootPOA=
- PortableServer::POA::_narrow (object.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- /// Create a manager for the POA
- PortableServer::POAManager_var poa_manager =
- rootPOA->the_POAManager (ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::PolicyList poa_policy_list;
- poa_policy_list.length (1);
-
- poa_policy_list[0] =
- rootPOA->create_lifespan_policy(PortableServer::TRANSIENT);
-
- // Create the RT Scheduling service
- TAO::RTCosScheduling_ServerScheduler_i *server_sched = 0;
- ACE_NEW_THROW_EX(server_sched,
- TAO::RTCosScheduling_ServerScheduler_i(
- node_,
- file_,
- shared_file_,
- num_threads_),
- CORBA::NO_MEMORY());
-
- /// Create the POA so RT Policies are set
- PortableServer::POA_var RTPOA =
- server_sched->create_POA(rootPOA.in(),
- "my_RT_POA",
- poa_manager.in(),
- poa_policy_list
- ACE_ENV_ARG_PARAMETER);
-
-
- Object1_impl * servant = 0;
- ACE_NEW_THROW_EX(servant,
- Object1_impl(),
- CORBA::NO_MEMORY());
- ACE_TRY_CHECK;
-
- PortableServer::ObjectId_var id =
- RTPOA->activate_object(servant
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- CORBA::Object_var testObject =
- RTPOA->id_to_reference(id.in()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-
- CORBA::String_var testObject_IORString =
- orb->object_to_string (testObject.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
-
- ofstream server_IOR_file ("server.ior");
- server_IOR_file << testObject_IORString.in () << endl;
-
-
- if (use_realtime_)
- {
- /// Schedule the object
- ACE_TRY_NEW_ENV
- {
- server_sched->schedule_object(testObject.inout(),
- object_);
- }
- ACE_CATCH(RTCosScheduling::UnknownName, ex)
- {
- ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION,
- "Unknown object passed to schedule_object\n");
- }
- ACE_ENDTRY
- ACE_TRY_CHECK;
- }
-
-
- /// Activate the manager and run the event loop
- poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
-
- // Need to set the main thread pthread scope and pthread policy to
- // the values that are specified in svc.conf. This change was
- // recommended by irfan@oomworks.com
- long flags = THR_NEW_LWP | THR_JOINABLE |
-
-#if TAO_MAJOR_VERSION > 1 \
- || (TAO_MAJOR_VERSION==1 && TAO_MINOR_VERSION > 3 ) \
- || (TAO_MAJOR_VERSION==1 && TAO_MAJOR_VERSION==3 && TAO_MINOR_VERSION > 1)
-
- orb->orb_core ()->orb_params ()->thread_creation_flags ();
-
-#else /* TAO version is 1.3.1 or lower */
- orb->orb_core ()->orb_params ()->scope_policy () |
- orb->orb_core ()->orb_params ()->sched_policy ();
-#endif
- ORB_Thread ot(orb);
- ot.activate(flags);
- ot.wait();
-
-
- ACE_DEBUG((LM_DEBUG,
- "Server is shutting down\n\n"));
-
-
- delete server_sched;
-
- /// clean up
- rootPOA->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
- orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Exception caught:");
- return -1;
- }
- ACE_ENDTRY;
-
- return 0;
-}
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/server.ior b/TAO/orbsvcs/tests/RTCosScheduling/server.ior
deleted file mode 100644
index 3a8697919ef..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/server.ior
+++ /dev/null
@@ -1 +0,0 @@
-IOR:010000001a00000049444c3a7465737453636865642f4f626a656374313a312e300000000300000000000000d600000001010200110000007274646f632e63732e7572692e656475000039912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000004000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f4154220000000100000001000000110000007274646f632e63732e7572692e65647500003991ffff0000020000002e000000018c134202000000280000000a000000018e134201000000ff7fffff280000000a000000018e134201000000ff7f000000000000ce000000010102000d0000003137322e31362e3134392e31006539912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000104000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f41541e000000018c1342010000000d0000003137322e31362e3134392e3100653991ffff6475020000002e000000018e134202000000280000000a000000018e134201000000ff7f0000280000000a000000018e134201000000ff7f000000000000ca000000010102000c0000003139322e3136382e302e3100399139912300000014010f004e5354ff2b873ff9e6060001000000010000000000000001000000010000000104000000000000000800000001000000004f415401000000140000000100000001000100000000000901010000000000024f41541c000000018e1342010000000c0000003139322e3136382e302e31003991ffff020000002e000000018c134202000000280000000a000000018c134201000000ff7f0000280000000a000000018c134201000000ff7f
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/svc.conf b/TAO/orbsvcs/tests/RTCosScheduling/svc.conf
deleted file mode 100644
index 84f0293b2b9..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/svc.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-#static RT_ORB_Loader "-ORBSchedPolicy SCHED_RR -ORBPriorityMapping linear -ORBScopePolicy SYSTEM"
-static RT_ORB_Loader "-ORBSchedPolicy SCHED_FIFO -ORBPriorityMapping linear -ORBScopePolicy SYSTEM"
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl b/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl
deleted file mode 100644
index c2d98c7cf88..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/testSched.idl
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file testSched.idl
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- */
-//=============================================================================
-
-/**
- * @class Object1
- *
- * @brief Used by the RTCORBA 1.0 scheduling service.
- */
-
-#ifndef TEST_SCHED
-#define TEST_SCHED
-
-/**
- * Object1 class is used in the RTCORBA 1.0 Scheduling
- * Service test.
- */
-module testSched {
-
- exception testSchedException {};
-
- interface Object1 {
- /**
- * method1 executes work at the location specified by the object reference.
- * It sleeps for the number of seconds specified.
- *
- * @param seconds The number of seconds to sleep for.
- */
- void method1(in string activity, in long second, inout string output_file)
- raises (testSchedException);
- };
-
-};
-
-#endif /* TEST_SCHED */
diff --git a/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h b/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h
deleted file mode 100644
index abc3963101a..00000000000
--- a/TAO/orbsvcs/tests/RTCosScheduling/testSched_export.h
+++ /dev/null
@@ -1,54 +0,0 @@
-
-// -*- C++ -*-
-// $Id$
-// Definition for Win32 Export directives.
-// This file is generated automatically by generate_export_file.pl testSched
-// ------------------------------
-#ifndef TESTSCHED_EXPORT_H
-#define TESTSCHED_EXPORT_H
-
-#include "ace/config-all.h"
-
-#if !defined (TESTSCHED_HAS_DLL)
-# define TESTSCHED_HAS_DLL 1
-#endif /* ! TESTSCHED_HAS_DLL */
-
-#if defined (TESTSCHED_HAS_DLL) && (TESTSCHED_HAS_DLL == 1)
-# if defined (TESTSCHED_BUILD_DLL)
-# define testSched_Export ACE_Proper_Export_Flag
-# define TESTSCHED_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
-# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# else /* TESTSCHED_BUILD_DLL */
-# define testSched_Export ACE_Proper_Import_Flag
-# define TESTSCHED_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
-# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# endif /* TESTSCHED_BUILD_DLL */
-#else /* TESTSCHED_HAS_DLL == 1 */
-# define testSched_Export
-# define TESTSCHED_SINGLETON_DECLARATION(T)
-# define TESTSCHED_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-#endif /* TESTSCHED_HAS_DLL == 1 */
-
-// Set TESTSCHED_NTRACE = 0 to turn on library specific tracing even if
-// tracing is turned off for ACE.
-#if !defined (TESTSCHED_NTRACE)
-# if (ACE_NTRACE == 1)
-# define TESTSCHED_NTRACE 1
-# else /* (ACE_NTRACE == 1) */
-# define TESTSCHED_NTRACE 0
-# endif /* (ACE_NTRACE == 1) */
-#endif /* !TESTSCHED_NTRACE */
-
-#if (TESTSCHED_NTRACE == 1)
-# define TESTSCHED_TRACE(X)
-#else /* (TESTSCHED_NTRACE == 1) */
-# if !defined (ACE_HAS_TRACE)
-# define ACE_HAS_TRACE
-# endif /* ACE_HAS_TRACE */
-# define TESTSCHED_TRACE(X) ACE_TRACE_IMPL(X)
-# include "ace/Trace.h"
-#endif /* (TESTSCHED_NTRACE == 1) */
-
-#endif /* TESTSCHED_EXPORT_H */
-
-// End of auto generated file.
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 efef33dd7e6..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 ae777f50f20..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 efef33dd7e6..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 d795dcb56f1..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 efef33dd7e6..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 efef33dd7e6..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 ffc4e9d6b6a..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 efef33dd7e6..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 ffc4e9d6b6a..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 efef33dd7e6..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/Exception.cpp b/TAO/tao/Exception.cpp
index 0997581225f..04c01b1a84b 100644
--- a/TAO/tao/Exception.cpp
+++ b/TAO/tao/Exception.cpp
@@ -1035,17 +1035,6 @@ TAO_Exceptions::make_standard_typecode (CORBA::TypeCode_ptr &tcp,
return;
}
-#if defined (__Lynx__)
-
-// LynxOS uses macro THREAD_CANCELLED internally, so it must
-// be undefined to avoid compilation errors
-#if defined (THREAD_CANCELLED)
-#undef THREAD_CANCELLED
-#endif /* THREAD_CANCELLED */
-
-#endif /*__Lynx__ */
-
-
// List of standard/system exceptions ... used to create static
// storage for their typecodes, then later to initialize that storage
// using the routine above. (It's just too painful to init these
diff --git a/TAO/tao/Exception.h b/TAO/tao/Exception.h
index 74c22e30fa0..6f4b07606fc 100644
--- a/TAO/tao/Exception.h
+++ b/TAO/tao/Exception.h
@@ -43,16 +43,6 @@ class ACE_Allocator;
class TAO_OutputCDR;
class TAO_InputCDR;
-#if defined (__Lynx__)
-
-// LynxOS uses macro THREAD_CANCELLED internally, so it must
-// be undefined to avoid compilation errors
-#if defined (THREAD_CANCELLED)
-#undef THREAD_CANCELLED
-#endif /* THREAD_CANCELLED */
-
-#endif /*__Lynx__ */
-
namespace CORBA
{
/**
diff --git a/TAO/tao/PortableServer/PortableServerS.h b/TAO/tao/PortableServer/PortableServerS.h
deleted file mode 100644
index c52e7d0ecc5..00000000000
--- a/TAO/tao/PortableServer/PortableServerS.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* @file PortableServerS.h
- *
- * $Id$
- *
- * @author Matt Murphy <murphym@cs.uri.edu>
- *
- * This file is here and is empty because code generated from pidl files with
- * local interfaces incorrectly includes this file. It is not needed but
- * will caouse compile errors with local interface generated code.
- *
- */
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index b9a9f1d9243..55ebbc5377d 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -906,7 +906,7 @@ TAO_Transport::send_connection_closed_notifications_i (void)
// CloseConnection message was successfully received.
i->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED);
- i->remove_from_list (this->head_, this->tail_);
+ this->head_ = i->next ();
i->destroy ();
}
diff --git a/TAO/tao/corbafwd.h b/TAO/tao/corbafwd.h
index aa20022d763..07e013fb4ac 100644
--- a/TAO/tao/corbafwd.h
+++ b/TAO/tao/corbafwd.h
@@ -84,16 +84,6 @@ template <class T> class TAO_Unbounded_Sequence;
template <typename T> class TAO_Pseudo_Var_T;
template <typename T, typename T_var> class TAO_Pseudo_Out_T;
-#if defined (__Lynx__)
-
-// LynxOS uses macro THREAD_CANCELLED internally, so it must
-// be undefined to avoid compilation errors
-#if defined (THREAD_CANCELLED)
-#undef THREAD_CANCELLED
-#endif /* THREAD_CANCELLED */
-
-#endif /*__Lynx__ */
-
/**
* @class CORBA
*
diff --git a/TAO/tests/Objref_Sequence_Test/client.cpp b/TAO/tests/Objref_Sequence_Test/client.cpp
index 3fb96a60ce4..28ad3472bef 100644
--- a/TAO/tests/Objref_Sequence_Test/client.cpp
+++ b/TAO/tests/Objref_Sequence_Test/client.cpp
@@ -94,7 +94,7 @@ main (int argc, char *argv [])
Server::_duplicate (vAddition [iCount]);
};
- vAddition = 0;
+ vAddition = NULL;
if (iStep * 5 > iSize)
{
diff --git a/TAO/tests/RTScheduling/Current/Thread_Task.cpp b/TAO/tests/RTScheduling/Current/Thread_Task.cpp
index 66c60ec0d6f..3dff7e0de7d 100644
--- a/TAO/tests/RTScheduling/Current/Thread_Task.cpp
+++ b/TAO/tests/RTScheduling/Current/Thread_Task.cpp
@@ -148,7 +148,7 @@ Thread_Task::svc (void)
{
ACE_DEBUG ((LM_DEBUG,
"%s\n",
- (*segment_name_list)[i].in ()));
+ CORBA::string_dup ((*segment_name_list) [i])));
}
}
diff --git a/THANKS b/THANKS
index 2c8d6e21084..eb0d7d2c660 100644
--- a/THANKS
+++ b/THANKS
@@ -1762,7 +1762,6 @@ Jeff Dugan <jdugan@orincon.com>
Jeff Mirwaisi <jeff_mirwaisi@yahoo.com>
Alain Dupont <adupont@positron.qc.ca>
Stephan Bettermann <sbetterm@erggroup.com>
-Adam Fanello <yahoo@fanello.net>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson in the early 1990's. Paul devised the recursive Makefile
diff --git a/ace/OS.cpp b/ace/OS.cpp
index d2c1ec2af99..d18a5bce379 100644
--- a/ace/OS.cpp
+++ b/ace/OS.cpp
@@ -7680,9 +7680,8 @@ long
ACE_OS::num_processors (void)
{
ACE_OS_TRACE ("ACE_OS::num_processors");
-#if defined (ACE_HAS_PHARLAP)
- return 1;
-#elif defined (ACE_WIN32) || defined (ACE_WIN64)
+
+#if defined (ACE_WIN32) || defined (ACE_WIN64)
SYSTEM_INFO sys_info;
::GetSystemInfo (&sys_info);
return sys_info.dwNumberOfProcessors;
@@ -7697,9 +7696,8 @@ long
ACE_OS::num_processors_online (void)
{
ACE_OS_TRACE ("ACE_OS::num_processors_online");
-#if defined (ACE_HAS_PHARLAP)
- return 1;
-#elif defined (ACE_WIN32) || defined (ACE_WIN64)
+
+#if defined (ACE_WIN32) || defined (ACE_WIN64)
SYSTEM_INFO sys_info;
::GetSystemInfo (&sys_info);
return sys_info.dwNumberOfProcessors;
diff --git a/ace/OS.h b/ace/OS.h
index a01853a893f..d9c1dcf2712 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -3698,6 +3698,60 @@ private:
# endif /* ACE_WIN32 */
+#if defined (ACE_HAS_VIRTUAL_TIME)
+ static clock_t times (struct tms *buf);
+#endif /* ACE_HAS_VIRTUAL_TIME */
+
+ //changed for ACE_HAS_VIRTUAL_TIME changes.
+
+ static int cond_timedwait_i (ACE_cond_t *cv,
+ ACE_mutex_t *m,
+ ACE_Time_Value *);
+
+ static u_int alarm_i (u_int secs);
+
+ static u_int ualarm_i (u_int usecs, u_int interval = 0);
+
+ static u_int ualarm_i (const ACE_Time_Value &tv,
+ const ACE_Time_Value &tv_interval = ACE_Time_Value::zero);
+
+ static int sleep_i (u_int seconds);
+
+ static int sleep_i (const ACE_Time_Value &tv);
+
+ static int nanosleep_i (const struct timespec *requested,
+ struct timespec *remaining = 0);
+
+ static int select_i (int width,
+ fd_set *rfds,
+ fd_set *wfds,
+ fd_set *efds,
+ const ACE_Time_Value *tv = 0);
+
+ static int select_i (int width,
+ fd_set *rfds,
+ fd_set *wfds,
+ fd_set *efds,
+ const ACE_Time_Value &tv);
+
+ static int poll_i (struct pollfd *pollfds,
+ u_long len,
+ const ACE_Time_Value *tv = 0);
+
+ static int poll_i (struct pollfd *pollfds,
+ u_long len,
+ const ACE_Time_Value &tv);
+
+ static int sema_wait_i (ACE_sema_t *s);
+
+ static int sema_wait_i (ACE_sema_t *s,
+ ACE_Time_Value &tv);
+
+ static int sigtimedwait_i (const sigset_t *set,
+ siginfo_t *info,
+ const ACE_Time_Value *timeout);
+
+ static ACE_Time_Value gettimeofday_i (void);
};
/**
diff --git a/ace/Process.h b/ace/Process.h
index fbcacb23763..7fa4f2c9e56 100644
--- a/ace/Process.h
+++ b/ace/Process.h
@@ -22,7 +22,6 @@
#include "ace/Handle_Set.h"
#include "ace/os_include/sys/os_types.h"
-#include "ace/Global_Macros.h"
// Forward declaration
class ACE_Time_Value;
@@ -561,10 +560,6 @@ protected:
ACE_Handle_Set handles_passed_;
/// Handle duplicates made for the child process.
ACE_Handle_Set dup_handles_;
-
- // = Disallow copying and assignment since we don't support this (yet).
- ACE_UNIMPLEMENTED_FUNC (ACE_Process (const ACE_Process &))
- ACE_UNIMPLEMENTED_FUNC (void operator= (const ACE_Process &))
};
diff --git a/ace/Select_Reactor_Base.cpp b/ace/Select_Reactor_Base.cpp
index bb74ee1934a..329882049a9 100644
--- a/ace/Select_Reactor_Base.cpp
+++ b/ace/Select_Reactor_Base.cpp
@@ -801,13 +801,15 @@ ACE_Select_Reactor_Notify::notify (ACE_Event_Handler *event_handler,
#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
// Artificial scope to limit the duration of the mutex.
{
- bool notification_required = false;
+ // int notification_required = 0;
ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->notify_queue_lock_, -1);
// No pending notifications.
- if (this->notify_queue_.is_empty ())
- notification_required = true;
+
+ // We will send notify for every message..
+ // if (this->notify_queue_.is_empty ())
+ // notification_required = 1;
ACE_Notification_Buffer *temp = 0;
@@ -842,11 +844,6 @@ ACE_Select_Reactor_Notify::notify (ACE_Event_Handler *event_handler,
if (notify_queue_.enqueue_tail (temp) == -1)
return -1;
-
- if(!notification_required)
- {
- return 0;
- }
}
#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
@@ -896,12 +893,52 @@ ACE_Select_Reactor_Notify::notify_handle (void)
}
+// Special trick to unblock <select> when updates occur in somewhere
+// other than the main <ACE_Select_Reactor> thread. All we do is
+// write data to a pipe that the <ACE_Select_Reactor> is listening on.
+// Thanks to Paul Stephenson for suggesting this approach.
int
ACE_Select_Reactor_Notify::is_dispatchable (ACE_Notification_Buffer &buffer)
{
+ // There is tonnes of code that can be abstracted...
#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
- ACE_UNUSED_ARG(buffer);
- return 1;
+ {
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->notify_queue_lock_, -1);
+
+ ACE_Notification_Buffer *temp;
+
+ ACE_UNUSED_ARG (buffer);
+
+ // If the queue is empty just return 0
+ if (notify_queue_.is_empty ())
+ return 0;
+
+ if (this->notify_queue_.dequeue_head (temp) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_LIB_TEXT ("%p\n"),
+ ACE_LIB_TEXT ("dequeue_head")),
+ -1);
+ if (temp->eh_ != 0)
+ {
+ // If the queue had a buffer that has an event handler, put
+ // the element back in the queue and return a 1
+ if (this->notify_queue_.enqueue_head (temp) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_LIB_TEXT ("%p\n"),
+ ACE_LIB_TEXT ("enque_head")),
+ -1);
+ }
+
+ return 1;
+ }
+ // Else put the element in the free queue
+ if (free_queue_.enqueue_head (temp) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_LIB_TEXT ("%p\n"),
+ ACE_LIB_TEXT ("enqueue_head")),
+ -1);
+ }
#else
// If eh == 0 then another thread is unblocking the
// <ACE_Select_Reactor> to update the <ACE_Select_Reactor>'s
@@ -923,9 +960,8 @@ ACE_Select_Reactor_Notify::dispatch_notify (ACE_Notification_Buffer &buffer)
int result = 0;
#if defined (ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
- // Dispatch one message from the notify queue, and put another in
- // the pipe if one is available. Remember, the idea is to keep
- // exactly one message in the pipe at a time.
+
+ // Dispatch all messages that are in the <notify_queue_>.
{
// We acquire the lock in a block to make sure we're not
// holding the lock while delivering callbacks...
@@ -946,23 +982,6 @@ ACE_Select_Reactor_Notify::dispatch_notify (ACE_Notification_Buffer &buffer)
ACE_LIB_TEXT ("%p\n"),
ACE_LIB_TEXT ("enqueue_head")),
-1);
-
- bool write_next_buffer = false;
- ACE_Notification_Buffer ** next;
-
- if(!this->notify_queue_.is_empty())
- {
- // The queue is not empty, need to queue another message.
- this->notify_queue_.get (next, 0);
- write_next_buffer = true;
- }
-
- if(write_next_buffer)
- {
- (void) ACE::send(
- this->notification_pipe_.write_handle(),
- (char *)*next, sizeof(ACE_Notification_Buffer));
- }
}
#endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */
diff --git a/ace/ace_wchar.inl b/ace/ace_wchar.inl
index 68fd3d2fac2..dfd89add10c 100644
--- a/ace/ace_wchar.inl
+++ b/ace/ace_wchar.inl
@@ -33,7 +33,7 @@ ACE_Wide_To_Ascii::convert (const wchar_t *wstr)
int len = ::WideCharToMultiByte (CP_OEMCP,
0,
wstr,
- -1,
+ 1,
0,
0,
0,
diff --git a/bin/MakeProjectCreator/config/ftrtevent.mpb b/bin/MakeProjectCreator/config/ftrtevent.mpb
new file mode 100644
index 00000000000..7f0a12d0d74
--- /dev/null
+++ b/bin/MakeProjectCreator/config/ftrtevent.mpb
@@ -0,0 +1,6 @@
+project : ftorbutils, rtevent, naming {
+ after += FtRtEvent
+ libs += TAO_FtRtEvent
+ comps += FtRtEvent
+ tagchecks += FtRtEvent
+} \ No newline at end of file
diff --git a/bin/MakeProjectCreator/config/ftrteventclient.mpb b/bin/MakeProjectCreator/config/ftrteventclient.mpb
new file mode 100644
index 00000000000..789a6db58e2
--- /dev/null
+++ b/bin/MakeProjectCreator/config/ftrteventclient.mpb
@@ -0,0 +1,6 @@
+project : ftclientorb, ftrtevent {
+ after += FTRT_ClientORB
+ libs += TAO_FTRT_ClientORB
+ comps += FTRT_ClientORB
+ tagchecks += FTRT_ClientORB
+} \ No newline at end of file
diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb
deleted file mode 100644
index b086d577f05..00000000000
--- a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_client.mpb
+++ /dev/null
@@ -1,2 +0,0 @@
-project : taoclient, kokyu_dsrt_schedulers {
-}
diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb
deleted file mode 100644
index efc2b2da2cd..00000000000
--- a/bin/MakeProjectCreator/config/kokyu_dsrt_scheduler_server.mpb
+++ /dev/null
@@ -1,2 +0,0 @@
-project(kokyu_dsrt_scheduler_server) : taoserver, kokyu_dsrt_schedulers {
-}
diff --git a/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb b/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb
deleted file mode 100644
index c2050ceac25..00000000000
--- a/bin/MakeProjectCreator/config/kokyu_dsrt_schedulers.mpb
+++ /dev/null
@@ -1,5 +0,0 @@
-project(kokyu_dsrt_schedulers) : rtcorba, kokyu {
- after += Kokyu_DSRT_Schedulers
- libs += Kokyu_DSRT_Schedulers
- includes += $(TAO_ROOT)/examples/Kokyu_dsrt_schedulers
-}
diff --git a/bin/MakeProjectCreator/config/rtcosscheduling.mpb b/bin/MakeProjectCreator/config/rtcosscheduling.mpb
deleted file mode 100644
index 653a7be43af..00000000000
--- a/bin/MakeProjectCreator/config/rtcosscheduling.mpb
+++ /dev/null
@@ -1,6 +0,0 @@
-project : rtportableserver {
- after += RTCosScheduling
- libs += TAO_RTCosScheduling
- comps += RTCosScheduling
- tagchecks += RTCosScheduling
-}
diff --git a/bin/MakeProjectCreator/modules/CbxProjectCreator.pm b/bin/MakeProjectCreator/modules/CbxProjectCreator.pm
deleted file mode 100644
index 80291d9426e..00000000000
--- a/bin/MakeProjectCreator/modules/CbxProjectCreator.pm
+++ /dev/null
@@ -1,76 +0,0 @@
-package CbxProjectCreator;
-
-# ************************************************************
-# Description : The Borland C++ BuilderX Project Creator
-# Author : Johnny Willemsen
-# Create Date : 10/12/2003
-# ************************************************************
-
-# ************************************************************
-# Pragmas
-# ************************************************************
-
-use strict;
-
-use ProjectCreator;
-use File::Basename;
-
-use vars qw(@ISA);
-@ISA = qw(ProjectCreator);
-
-# ************************************************************
-# Subroutine Section
-# ************************************************************
-
-sub fill_value {
- my($self) = shift;
- my($name) = shift;
- my($value) = undef;
-
- if ($name eq 'cppdir') {
- my(%dirnames) = ();
- foreach my $file ($self->get_component_list('source_files')) {
- my($dirname) = dirname($file);
- if ($dirname eq '') {
- $dirname = '.';
- }
- $dirnames{$dirname} = 1;
- }
- $value = join(';', sort keys %dirnames);
- }
-
- return $value;
-}
-
-
-sub project_file_name {
- my($self) = shift;
- my($name) = shift;
-
- if (!defined $name) {
- $name = $self->project_name();
- }
-
- return "$name.cbx";
-}
-
-
-sub get_dll_exe_template_input_file {
- #my($self) = shift;
- return 'cbxexe';
-}
-
-
-sub get_dll_template_input_file {
- #my($self) = shift;
- return 'cbxdll';
-}
-
-
-sub get_template {
- #my($self) = shift;
- return 'cbx';
-}
-
-
-1;
diff --git a/bin/MakeProjectCreator/templates/cbx.mpd b/bin/MakeProjectCreator/templates/cbx.mpd
deleted file mode 100644
index 99391f2ad33..00000000000
--- a/bin/MakeProjectCreator/templates/cbx.mpd
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--C++Builder MP Project-->
-<project>
- <property category="build.config" name="active" value="0"/>
- <property category="build.config" name="count" value="1"/>
- <property category="build.config" name="excludedefaultforzero" value="0"/>
- <property category="build.config.0" name="builddir" value="Debug"/>
- <property category="build.config.0" name="key" value="Debug_Build"/>
- <property category="build.config.0" name="linux.builddir" value="linux/Debug_Build"/>
- <property category="build.config.0" name="name" value="Debug Build"/>
- <property category="build.config.0" name="settings.MinGW" value="default;debug"/>
- <property category="build.config.0" name="settings.gnuc++" value="default;debug"/>
- <property category="build.config.0" name="settings.mswin32" value="default;debug"/>
- <property category="build.config.0" name="solaris.builddir" value="solaris/Debug_Build"/>
- <property category="build.config.0" name="type" value="Toolset"/>
- <property category="build.config.0" name="win32.builddir" value="windows/Debug_Build"/>
- <property category="build.config.1" name="key" value="Release_Build"/>
- <property category="build.config.1" name="name" value="Release Build"/>
- <property category="build.config.1" name="settings.MinGW" value="default;release"/>
- <property category="build.config.1" name="settings.gnuc++" value="default;release"/>
- <property category="build.config.1" name="settings.mswin32" value="default;release"/>
- <property category="build.config.1" name="type" value="Toolset"/>
- <property category="build.node" name="name" value="ACEtest"/>
- <property category="build.node" name="type" value="libraryproject"/>
- <property category="build.platform" name="active" value="win32"/>
- <property category="build.platform" name="linux.Debug_Build.toolset" value="gnuc++"/>
- <property category="build.platform" name="linux.Release_Build.toolset" value="gnuc++"/>
- <property category="build.platform" name="linux.default" value="gnuc++"/>
- <property category="build.platform" name="linux.gnuc++.enabled" value="1"/>
- <property category="build.platform" name="solaris.Debug_Build.toolset" value="sunforte"/>
- <property category="build.platform" name="solaris.Release_Build.toolset" value="sunforte"/>
- <property category="build.platform" name="solaris.default" value="gnuc++"/>
- <property category="build.platform" name="solaris.gnuc++.enabled" value="1"/>
- <property category="build.platform" name="solaris.sunforte.enabled" value="1"/>
- <property category="build.platform" name="win32.Debug_Build.toolset" value="win32b"/>
- <property category="build.platform" name="win32.MinGW.enabled" value="1"/>
- <property category="build.platform" name="win32.Release_Build.toolset" value="win32b"/>
- <property category="build.platform" name="win32.default" value="win32b"/>
- <property category="build.platform" name="win32.gnuc++.enabled" value="0"/>
- <property category="build.platform" name="win32.mswin32.enabled" value="1"/>
- <property category="build.platform" name="win32.win32b.enabled" value="1"/>
- <property category="cbproject" name="lastnodeid" value="317"/>
- <property category="cbproject" name="version" value="1.6"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.arg.1" value="\usr\include"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.arg.2" value="\usr\include\g++-3"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.I.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.MD.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.O0.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.c.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.g.arg" value="2"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.g.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++compile" name="option.o.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++link" name="option.g.arg" value="2"/>
- <property category="linux.Debug_Build.gnuc++.g++link" name="option.g.enabled" value="1"/>
- <property category="linux.Debug_Build.gnuc++.g++link" name="option.o.enabled" value="1"/>
- <property category="linux.gnuc++.Debug_Build" name="saved" value="1"/>
- <property category="runtime" name="ExcludeDefaultForZero" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_c_compile" name="option.o.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_c_link" name="option.o.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_Bdynamic.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_c.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_compat=5.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_dy.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_fns=no.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_fround=nearest.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_ftrap.arg.1" value="%none"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_ftrap.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_g.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_instances=global.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_o.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_staticlib.arg.1" value="%none"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_staticlib.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_template.arg.1" value="no%wholeclass,extdef"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_template.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_verbose.arg.1" value="%none"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_verbose.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xalias_level=any.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xarch=generic.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xbuiltin=%none.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xcheck=%none.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xcrossfile=0.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xinline.arg.1" value="%auto"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xinline.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xopenmp=none.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xprefetch.arg.1" value="no%auto,explicit"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_compile" name="option.minus_xprefetch.enabled" value="1"/>
- <property category="solaris.Debug_Build.sunforte.forte_cpp_link" name="option.minus_o.enabled" value="1"/>
- <property category="solaris.sunforte.Debug_Build" name="saved" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.2" value="_RTLDLL"/>
-<%if(type_is_dynamic)%>
- <%foreach(dynamicflags)%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%dynamicflag%>"/>
- <%endfor%>
-<%endif%>
-<%if(need_staticflags)%>
- <%foreach(staticflags)%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%libflag%>"/>
- <%endfor%>
-<%endif%>
-<%foreach(defines common_defines macros)%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.3" value="<%define%>"/>
-<%endfor%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.Hc.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.1" value="$(BCB)\include"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.2" value="$(ACE_ROOT)"/>
-<%foreach(includes)%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.I.arg.2" value="<%include%>"/>
-<%endfor%>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.I.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.V.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.VA.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.Ve.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.Vx.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.a8.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.b.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.batchfilecompile.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.c.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.g.arg" value="100"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.g.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.i.arg" value="250"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.i.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.j.arg" value="25"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.j.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.o.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.responsefile.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.tWM.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.w.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.brcc32" name="option.F.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.D.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Enn.arg" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Enn.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Gn.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.H:xxxx.arg" value="0x00100000"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.H:xxxx.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Hc:xxxx.arg" value="0x00001000"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Hc:xxxx.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.1" value="$(BCB)\lib"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.L.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.S:xxxx.arg" value="0x00100000"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.S:xxxx.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Sc:xxxx.arg" value="0x00002000"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Sc:xxxx.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpe.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Ud.d.arg" value="1.0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Ud.d.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Vd.d.arg" value="0.0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Vd.d.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.b:xxxx.arg" value="0x00400000"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.b:xxxx.enabled" value="0"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.v.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.x.enabled" value="1"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="param.libfiles.1" value="cw32mti.lib"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="param.libfiles.2" value="import32.lib"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpd.enabled" value="<%if(type_is_dynamic)%>1<%w%>0<%endif%>"/>
- <property category="win32.Debug_Build.win32b.ilink32" name="option.Tpe.enabled" value="<%if(type_is_dynamic)%>0<%else%>1<%endif%>"/>
- <property category="win32.win32b.Debug_Build" name="saved" value="1"/>
- <property category="win32b.ilink32" name="enabled" value="0"/>
-<%if(source_files)%>
- <node name="Source Files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(source_files)%>
- <file path=".\<%source_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(header_files)%>
- <node name="Header files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(header_files)%>
- <file path=".\<%header_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(inline_files)%>
- <node name="Inline files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(inline_files)%>
- <file path=".\<%inline_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(idl_files)%>
- <node name="IDL files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(idl_files)%>
- <file path=".\<%idl_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(template_files)%>
- <node name="Template files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(template_files)%>
- <file path=".\<%template_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(documentation_files)%>
- <node name="Documentation files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(documentation_files)%>
- <file path=".\<%documentation_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-<%if(resource_files)%>
- <node name="Resource files" type="Folder">
- <property category="unique" name="id"/>
-<%foreach(resource_files)%>
- <file path=".\<%resource_file%>">
- <property category="unique" name="id"/>
- </file>
-<%endfor%>
- </node>
-<%endif%>
-</project>
diff --git a/bin/MakeProjectCreator/templates/cbxdll.mpt b/bin/MakeProjectCreator/templates/cbxdll.mpt
deleted file mode 100644
index d1f2dc6255a..00000000000
--- a/bin/MakeProjectCreator/templates/cbxdll.mpt
+++ /dev/null
@@ -1,6 +0,0 @@
-conditional_include "idl_compiler_win32"
-conditional_include "common"
-
-type_is_binary = 1
-type_is_dynamic = 1
-common_defines = WIN32
diff --git a/bin/MakeProjectCreator/templates/cbxexe.mpt b/bin/MakeProjectCreator/templates/cbxexe.mpt
deleted file mode 100644
index ffc6dd650a2..00000000000
--- a/bin/MakeProjectCreator/templates/cbxexe.mpt
+++ /dev/null
@@ -1,5 +0,0 @@
-conditional_include "idl_compiler_win32"
-conditional_include "common"
-
-type_is_binary = 1
-common_defines = WIN32
diff --git a/bin/mpc.pl b/bin/mpc.pl
index 27e29b1c5d4..7ad98f325db 100755
--- a/bin/mpc.pl
+++ b/bin/mpc.pl
@@ -31,7 +31,6 @@ my(@creators) = ('GNUACEProjectCreator',
'VC7ProjectCreator',
'VC71ProjectCreator',
'BorlandProjectCreator',
- 'CbxProjectCreator',
'GHSProjectCreator',
'EM3ProjectCreator',
'VA4ProjectCreator',
diff --git a/bin/tao_other_tests.lst b/bin/tao_other_tests.lst
index c3df2ae11cf..1da05fd8028 100644
--- a/bin/tao_other_tests.lst
+++ b/bin/tao_other_tests.lst
@@ -105,8 +105,6 @@ TAO/orbsvcs/tests/Security/SecurityLevel1/run_test.pl: SSL !STATIC
TAO/orbsvcs/tests/Security/Crash_Test/run_test.pl: SSL !STATIC
TAO/orbsvcs/tests/Miop/McastHello/run_test.pl: !MINIMUM !STATIC !SUNCC5_1
TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Application_Controlled/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS
-TAO/orbsvcs/tests/LoadBalancing/GenericFactory/Infrastructure_Controlled/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS
-TAO/orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS
TAO/tests/Two_Objects/run_test.pl: !ST
TAO/examples/RTCORBA/Activity/run_test.pl: !MINIMUM
TAO/examples/RTScheduling/Fixed_Priority_Scheduler/run_test.pl: !MINIMUM !DISABLE_INTERCEPTORS
diff --git a/include/makeinclude/platform_cygwin32.GNU b/include/makeinclude/platform_cygwin32.GNU
index d71708d6cda..4ccfd85a53c 100644
--- a/include/makeinclude/platform_cygwin32.GNU
+++ b/include/makeinclude/platform_cygwin32.GNU
@@ -19,7 +19,8 @@ cygwin32 = 1
# Cygwin doesn't allow to add the version number of ACE to the dll name
# because fe ace.dll.5.2.3 isn't a valid dll name
-versioned_so=0
+SONAME=
+SOVERSION=
# Disable auto-import warnings. The Cygwin linker has a problem with imports
# See https://sourceforge.net/tracker/?func=detail&atid=102435&aid=683455&group_id=2435
diff --git a/include/makeinclude/platform_linux_borland.GNU b/include/makeinclude/platform_linux_borland.GNU
index d8cd0546b55..98bb78d9293 100644
--- a/include/makeinclude/platform_linux_borland.GNU
+++ b/include/makeinclude/platform_linux_borland.GNU
@@ -113,4 +113,5 @@ LINK.cc = override
LINK.cc.override = $(LD) $(LDFLAGS) $(BOREXELIBS) $(BORLDFLAGS) $(POSTLINK)
SOLINK.cc = $(LD) -Tpd
-versioned_so=0
+SONAME=
+SOVERSION=
diff --git a/include/makeinclude/platform_mingw32.GNU b/include/makeinclude/platform_mingw32.GNU
index b9122a49f33..98fda38062d 100644
--- a/include/makeinclude/platform_mingw32.GNU
+++ b/include/makeinclude/platform_mingw32.GNU
@@ -35,7 +35,8 @@ mingw32 = 1
# MingW doesn't allow to add the version number of ACE to the dll name
# because fe ace.dll.5.2.3 isn't a valid dll name
-versioned_so=0
+SONAME=
+SOVERSION=
# Disable auto-import warnings. The MingW linker has a problem with imports
# See https://sourceforge.net/tracker/?func=detail&atid=102435&aid=683455&group_id=2435
diff --git a/include/makeinclude/wrapper_macros.GNU b/include/makeinclude/wrapper_macros.GNU
index 3029e9ee2fb..ea5c73acea2 100644
--- a/include/makeinclude/wrapper_macros.GNU
+++ b/include/makeinclude/wrapper_macros.GNU
@@ -54,23 +54,19 @@
# gtk_reactor Build the GtkReactor.
# ssl Build with OpenSSL support.
# rapi Build with RAPI
-# split Build the library by first splitting up the ACE source
-# to several files, with one object code entity for each
-# source file. This allows an application that is linked
-# with ACE to extract _exactly_ what it needs from the
-# library, resulting in a smaller executable.
+# split Build the library by first splitting up the ACE source to several
+# files, with one object code entity for each source file. This allows
+# an application that is linked with ACE to extract _exactly_ what it
+# needs from the library, resulting in a smaller executable.
# Setting this to 1 overrides debug to 0.
# sctp Build support for TAO SCIOP and for ACE SCTP
# wrapper-facades. The sctp macro should be set to a string
# value representing a particular SCTP implementation.
# Recognized values include: openss7
#
-# versioned_so Add versioning to libraries. Defaults to 1 (true). If 0,
-# no version number is appended to shared library names.
-# If versioned_so is 1 (enabled), the SOVERSION make
-# variable can also be set to specify the version info
-# to append to the name - it should have a leading '.' -
-# else it defaults to .ACE_MAJOR.ACE_MINOR.ACE_BETA.
+# versioned_so Add versioning to libraries. Defaults to 1 (true), and
+# can be turned off by passing versioned_so=0 to make. Note
+# that setting it in platform_macros.GNU has no effect.
#
# Usually, users do not need to be concerned with make targets.
# Just enter "make" on the command line to build. A few notable
@@ -168,19 +164,39 @@ ifeq ($(static_libs),)
static_libs = 0
endif # static_libs
+#### Defined versioned_so = 1 if your platform requires version number
+#### be appended after so library.
+ifeq ($(versioned_so),)
+ versioned_so = 1
+endif
+
#### The system has X Windows and we want to include the XtReactor in
#### the library
xt_reactor = 0
-#### Set up the build ACE version in case the platform_macros.GNU wants it.
-ACE_MAJOR_VERSION := $(shell awk '/ACE_MAJOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
-ACE_MINOR_VERSION := $(shell awk '/ACE_MINOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
-ACE_BETA_VERSION := $(shell awk '/ACE_BETA_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
-
ifndef PACE_ROOT
PACE_ROOT = $(ACE_ROOT)/PACE
endif # PACE_ROOT
+ifeq ($(versioned_so),1)
+ # Turn on symbol versioning. The scheme that we follow is to allow
+ # applications dependent on libraries, with same version numbers (major,
+ # minor and beta) to run, but applications with dependencies on libraries
+ # with different minor or major or beta versions to fail.
+ #
+ ACE_MAJOR_VERSION := $(shell awk '/ACE_MAJOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
+ ACE_MINOR_VERSION := $(shell awk '/ACE_MINOR_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
+ ACE_BETA_VERSION := $(shell awk '/ACE_BETA_VERSION/ { print $$3}' ${ACE_ROOT}/ace/Version.h)
+
+ # Version number of the libraries
+ #
+ SOVERSION = .$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION)
+
+ # Name that will be written into the dynamic library
+ #
+ SONAME = $(SHLIB).$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION)
+endif
+
# Include this before the below variables to make it possible for
# platform_macros.GNU to set default values for them.
include $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
@@ -192,8 +208,7 @@ ifeq ($(threads),0)
endif # threads
####
-#### Defaults are exceptions off (0), fast off (0), rtti off (0), and
-#### versioned_so on (1).
+#### Defaults are exceptions off (0), fast off (0), and rtti off (0)
####
ifndef exceptions
exceptions = 0
@@ -209,26 +224,6 @@ ifndef rtti
rtti = 0
endif
-ifeq (,$(versioned_so))
- versioned_so = 1
-endif
-ifeq ($(versioned_so),1)
- # Turn on symbol versioning. The scheme that we follow is to allow
- # applications dependent on libraries, with same version numbers (major,
- # minor and beta) to run, but applications with dependencies on libraries
- # with different minor or major or beta versions to fail.
- #
- # Version number of the libraries
- #
- ifndef SOVERSION
- SOVERSION = .$(ACE_MAJOR_VERSION).$(ACE_MINOR_VERSION).$(ACE_BETA_VERSION)
- endif # SOVERSION
-
- # Name that will be written into the dynamic library
- #
- SONAME = $(SHLIB)$(SOVERSION)
-endif # versioned_so
-
#----------------------------------------------------------------------------
# Platform-independent macro definitions
#----------------------------------------------------------------------------
diff --git a/protocols/ace/RMCast/Makefile.am b/protocols/ace/RMCast/Makefile.am
deleted file mode 100644
index 5a183b2e90b..00000000000
--- a/protocols/ace/RMCast/Makefile.am
+++ /dev/null
@@ -1,105 +0,0 @@
-##----------------------------------------------------------------------------
-## $Id$
-##
-## Makefile.am for ACE_RMCast library
-##----------------------------------------------------------------------------
-
-##
-## Process this file with automake to create Makefile.in
-##
-
-INCLUDES = -I$(top_builddir) -I$(top_srcdir)
-
-lib_LTLIBRARIES = libACE_RMCast.la
-
-libACE_RMCast_la_SOURCES = \
- RMCast.cpp \
- RMCast_Ack_Worker.cpp \
- RMCast_Fork.cpp \
- RMCast_Fragment.cpp \
- RMCast_IO_UDP.cpp \
- RMCast_Membership.cpp \
- RMCast_Module.cpp \
- RMCast_Module_Factory.cpp \
- RMCast_Partial_Message.cpp \
- RMCast_Proxy.cpp \
- RMCast_Reassembly.cpp \
- RMCast_Receiver_Module.cpp \
- RMCast_Reliable_Factory.cpp \
- RMCast_Reordering.cpp \
- RMCast_Resend_Handler.cpp \
- RMCast_Resend_Worker.cpp \
- RMCast_Retransmission.cpp \
- RMCast_Sequencer.cpp \
- RMCast_Singleton_Factory.cpp \
- RMCast_UDP_Event_Handler.cpp \
- RMCast_UDP_Proxy.cpp \
- RMCast_UDP_Reliable_Receiver.cpp \
- RMCast_UDP_Reliable_Sender.cpp
-
-libACE_RMCast_la_LIBADD = $(top_builddir)/ace/libACE.la
-
-## These are template source files.
-TEMPLATE_FILES = \
- RMCast_Copy_On_Write.cpp \
- RMCast_Worker.cpp
-
-HEADER_FILES = \
- RMCast.h \
- RMCast_Ack_Worker.h \
- RMCast_Copy_On_Write.h \
- RMCast_Export.h \
- RMCast_Fork.h \
- RMCast_Fragment.h \
- RMCast_IO_UDP.h \
- RMCast_Membership.h \
- RMCast_Module.h \
- RMCast_Module_Factory.h \
- RMCast_Partial_Message.h \
- RMCast_Proxy.h \
- RMCast_Reassembly.h \
- RMCast_Receiver_Module.h \
- RMCast_Reliable_Factory.h \
- RMCast_Reordering.h \
- RMCast_Resend_Handler.h \
- RMCast_Resend_Worker.h \
- RMCast_Retransmission.h \
- RMCast_Sequencer.h \
- RMCast_Singleton_Factory.h \
- RMCast_UDP_Event_Handler.h \
- RMCast_UDP_Proxy.h \
- RMCast_UDP_Reliable_Receiver.h \
- RMCast_UDP_Reliable_Sender.h \
- RMCast_Worker.h
-
-INLINE_FILES = \
- RMCast.i \
- RMCast_Ack_Worker.i \
- RMCast_Copy_On_Write.i \
- RMCast_Fork.i \
- RMCast_Fragment.i \
- RMCast_IO_UDP.i \
- RMCast_Membership.i \
- RMCast_Module.i \
- RMCast_Module_Factory.i \
- RMCast_Partial_Message.i \
- RMCast_Proxy.i \
- RMCast_Reassembly.i \
- RMCast_Receiver_Module.i \
- RMCast_Reliable_Factory.i \
- RMCast_Reordering.i \
- RMCast_Resend_Handler.i \
- RMCast_Resend_Worker.i \
- RMCast_Retransmission.i \
- RMCast_Sequencer.i \
- RMCast_Singleton_Factory.i \
- RMCast_UDP_Event_Handler.i \
- RMCast_UDP_Proxy.i \
- RMCast_UDP_Reliable_Receiver.i \
- RMCast_UDP_Reliable_Sender.i \
- RMCast_Worker.i
-
-pkginclude_HEADERS = \
- $(HEADER_FILES) \
- $(INLINE_FILES) \
- $(TEMPLATE_FILES)
diff --git a/protocols/ace/RMCast/README b/protocols/ace/RMCast/README
deleted file mode 100644
index 2dd0c5d9cfc..00000000000
--- a/protocols/ace/RMCast/README
+++ /dev/null
@@ -1,57 +0,0 @@
-# $Id$
-
- This directory will contain a simple, small-scale reliable
-multicast framework for ACE. The framework is based on the ASX
-components of the ACE library: the protocol is implemented as a stack
-of interchangeable "modules", each one in charge of a very small task.
-For example, one module implements fragmentation and reassembly, other
-modules implement retransmission, send ACK and NAK messages, and
-maintain receiver membership.
-
- The modules are replaced to achieve different levels of
-reliability. For example, the retransmission module can be either the
-"Best_Effort", "Semi_Reliable" or "Reliable" implementation. In the
-first case no retransmissions are performed, but lost messages are
-detected and reported to the receiver. The "Semi_Reliable" case
-messages are held for a pre-specified amount of time, and
-re-transmited if requested, but it is possible to loose some messages
-if multiple re-transmissions fail. As in the "Best_Effort" case the
-lost messages are detected and flagged to the application. Finally
-in the "Reliable" mode the senders are flowed controlled until enough
-messages are successfully transmitted.
-
- In general the stack looks like this:
-
-
-SENDER:
-
-----------------------------------------------------------------
-Buffering : Save lost messages
-Retransmission : Retransmit
-----------------------------------------------------------------
-Fragmentation : Fragment messages in smaller chunks
-Reassembly : and ensure that the IOVMAX limit is not
- : reached
-----------------------------------------------------------------
-Tranport : Encapsulate the specific transport media
- : such as TCP/IP, ATM, or shared memory
- : Demuxes incoming data to the right chain
- : Change control messages and data messages
- : to the right dynamic types.
-----------------------------------------------------------------
-
-RECEIVER:
-
-----------------------------------------------------------------
-Lost detection : Detect lost messages and send control
- : messages back
-----------------------------------------------------------------
-Reassembly : Reassemble messages, fragment control
-Fragmentation : data
-----------------------------------------------------------------
-Transport : Group membership, ACT reception,
- : handle keep-alive messages...
-----------------------------------------------------------------
-
-
-@@ TODO: Piggybacking...
diff --git a/protocols/ace/RMCast/RMCast_Export.h b/protocols/ace/RMCast/RMCast_Export.h
deleted file mode 100644
index 51257c4d682..00000000000
--- a/protocols/ace/RMCast/RMCast_Export.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// -*- C++ -*-
-// $Id$
-// Definition for Win32 Export directives.
-// This file is generated automatically by
-// generate_export_file.pl
-// ------------------------------
-#if !defined (ACE_RMCAST_EXPORT_H)
-#define ACE_RMCAST_EXPORT_H
-
-#include "ace/config-all.h"
-
-#if defined (ACE_AS_STATIC_LIBS) && !defined (ACE_RMCAST_HAS_DLL)
-# define ACE_RMCAST_HAS_DLL 0
-#endif /* ACE_AS_STATIC_LIBS && ACE_RMCAST_HAS_DLL */
-
-#if !defined (ACE_RMCAST_HAS_DLL)
-#define ACE_RMCAST_HAS_DLL 1
-#endif /* ! ACE_RMCAST_HAS_DLL */
-
-#if defined (ACE_RMCAST_HAS_DLL)
-# if (ACE_RMCAST_HAS_DLL == 1)
-# if defined (ACE_RMCAST_BUILD_DLL)
-# define ACE_RMCast_Export ACE_Proper_Export_Flag
-# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
-# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# else
-# define ACE_RMCast_Export ACE_Proper_Import_Flag
-# define ACE_RMCAST_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
-# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# endif /* ACE_RMCAST_BUILD_DLL */
-# else
-# define ACE_RMCast_Export
-# define ACE_RMCAST_SINGLETON_DECLARATION(T)
-# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# endif /* ! ACE_RMCAST_HAS_DLL == 1 */
-#else
-# define ACE_RMCast_Export
-# define ACE_RMCAST_SINGLETON_DECLARATION(T)
-# define ACE_RMCAST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-#endif /* ACE_RMCAST_HAS_DLL */
-
-#endif /* ACE_RMCAST_EXPORT_H */
-
-// End of auto generated file.
diff --git a/tests/Makefile.tests b/tests/Makefile.tests
index 27dae6f9649..19d9b4827fb 100644
--- a/tests/Makefile.tests
+++ b/tests/Makefile.tests
@@ -96,7 +96,6 @@ BIN = \
Reactor_Dispatch_Order_Test \
Reactor_Exceptions_Test \
Reactor_Notify_Test \
- Reactor_Notification_Queue_Test \
Reactor_Performance_Test \
Reactor_Registration_Test \
Reactor_Timer_Test \
diff --git a/tests/Reactor_Notification_Queue_Test.cpp b/tests/Reactor_Notification_Queue_Test.cpp
deleted file mode 100644
index 26dfb59e426..00000000000
--- a/tests/Reactor_Notification_Queue_Test.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-/**
- * @file Reactor_Notification_Queue_Test.cpp
- *
- * $Id$
- *
- * Verify that the notification queue can be used with large numbers
- * of events.
- *
- * Normally the ACE_Reactor uses a pipe to implement the notify()
- * methods. ACE can be compiled with
- * ACE_HAS_REACTOR_NOTIFICATION_QUEUE, with this configuration flag
- * the Reactor uses a user-space queue to contain the notifications.
- * A single message is sent through the pipe to indicate "pipe not
- * empty."
- *
- * @author Carlos O'Ryan <coryan@atdesk.com>
- *
- */
-
-#include "test_config.h"
-#include "ace/Reactor.h"
-#include "ace/TP_Reactor.h"
-#include "ace/Select_Reactor.h"
-#include "ace/WFMO_Reactor.h"
-
-ACE_RCSID(tests,
- Reactor_Notification_Queue_Test, "$Id$")
-
-class Event_Handler : public ACE_Event_Handler
-{
-public:
- Event_Handler(ACE_Reactor * reactor,
- int max_notifications,
- char const *test_name);
-
- /// Run the test
- void run(void);
-
- /// Receive the notifications.
- virtual int handle_exception(ACE_HANDLE);
-
-private:
- /**
- * @brief Implement a single iteration.
- *
- * Each iteration of the test consists of sending multiple
- * notifications simultaneously.
- */
- void send_notifications (void);
-
- /**
- * @brief Return true if the test is finished.
- */
- bool done (void) const;
-
-private:
- /**
- * @brief The maximum number of notifications in any single
- * iteration.
- */
- int max_notifications_;
-
- /**
- * @brief The name of the test
- */
- char const * test_name_;
- /**
- * @brief Number of notifications received
- */
- int notifications_sent_;
- /**
- * @brief Number of notifications sent
- */
- int notifications_recv_;
-
- /**
- * @brief Number of notifications sent on each iteration
- */
- int notifications_curr_;
-};
-
-int
-run_main (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Reactor_Notification_Queue_Test"));
-
-#if !defined(ACE_HAS_REACTOR_NOTIFICATION_QUEUE)
- ACE_DEBUG ((LM_INFO,
- ACE_TEXT ("Notification queue disabled, ")
- ACE_TEXT ("small test version, ")
- ACE_TEXT ("which is of no practical use\n")));
-
- int max_notifications = 16;
-#else
- int max_notifications = 1024 * 1024;
-#endif /* ACE_HAS_THREADS */
-
- {
- ACE_Reactor select_reactor (
- new ACE_Select_Reactor,
- 1);
-
- Event_Handler handler(&select_reactor,
- max_notifications,
- "Select_Reactor");
-
- handler.run ();
- }
-
- {
- ACE_Reactor tp_reactor (new ACE_TP_Reactor,
- 1);
- Event_Handler handler(&tp_reactor,
- max_notifications,
- "TP_Reactor");
- handler.run();
- }
-
-#if 0
- /// @@todo: Need to talk to Irfan to see how the WFMO handles this.
-#if defined (ACE_WIN32)
- {
- ACE_Reactor wfmo_reactor (new ACE_WFMO_Reactor,
- 1);
-
- Event_Handler handler(&wfmo_reactor,
- max_notifications,
- "WFMO_Reactor");
- handler.run();
- }
-#endif /*ACE_WIN32*/
-#endif /*if 0 */
- ACE_END_TEST;
- return 0;
-}
-
-Event_Handler::Event_Handler (
- ACE_Reactor * reactor,
- int max_notifications,
- char const * test_name)
- : ACE_Event_Handler(reactor)
- , max_notifications_(max_notifications)
- , test_name_(test_name)
- , notifications_sent_(0)
- , notifications_recv_(0)
- , notifications_curr_(1)
-{
-}
-
-void
-Event_Handler::run (void)
-{
- send_notifications ();
-
- // Run for 30 seconds or until the test is done.
- for(int i = 0; i != 30 && !done(); ++i)
- {
- ACE_Time_Value tv (1,0);
- reactor ()->run_reactor_event_loop(tv);
- }
-
- if(!done())
- {
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("Test %s failed due to timeout ")
- ACE_TEXT (" sent=%d,recv=%d \n"),
- test_name_,
- notifications_sent_,
- notifications_recv_));
- }
- else
- {
- ACE_DEBUG ((LM_INFO,
- ACE_TEXT ("Test %s passed sent=%d, recv=%d\n"),
- test_name_,
- notifications_sent_,
- notifications_recv_));
- }
-}
-
-int
-Event_Handler::handle_exception (ACE_HANDLE)
-{
- ++notifications_recv_;
- if(notifications_recv_ == notifications_sent_)
- {
- if(notifications_curr_ >= max_notifications_)
- {
-
- return 0;
- }
- send_notifications();
- }
- return 0;
-}
-
-void
-Event_Handler::send_notifications (void)
-{
- for (int i = 0; i != notifications_curr_; ++i)
- {
- if(reactor()->notify (this) == -1)
- {
- ACE_ERROR((LM_ERROR,
- ACE_TEXT ("Cannot send notifications in %s test (%d/%d)\n"),
- test_name_, i, notifications_curr_));
- return;
- }
-
- ++notifications_sent_;
- }
- // ACE_ERROR((LM_ERROR,
- // "Started iteration with %d notify() calls in test %s\n",
- // notifications_curr_, test_name_));
- notifications_curr_ *= 2;
-}
-
-bool
-Event_Handler::done (void) const
-{
- return (notifications_curr_ >= max_notifications_)
- && (notifications_sent_ == notifications_recv_);
-}
diff --git a/tests/Reactor_Notification_Queue_Test.dsp b/tests/Reactor_Notification_Queue_Test.dsp
deleted file mode 100644
index 52528df64c0..00000000000
--- a/tests/Reactor_Notification_Queue_Test.dsp
+++ /dev/null
@@ -1,166 +0,0 @@
-# Microsoft Developer Studio Project File - Name="Reactor_Notification_Queue_Test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=Reactor_Notification_Queue_Test - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Reactor_Notification_Queue_Test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Reactor_Notification_Queue_Test.mak" CFG="Reactor_Notification_Queue_Test - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Static Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Static Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "Reactor_Notification_Queue_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Static Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Static_Debug"
-# PROP BASE Intermediate_Dir "Static_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Static_Debug"
-# PROP Intermediate_Dir "Static_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /D "_DEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
-# ADD LINK32 user32.lib acesd.lib advapi32.lib Test_Outputsd.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Static Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Static_Release"
-# PROP BASE Intermediate_Dir "Static_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Static_Release"
-# PROP Intermediate_Dir "Static_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /D "NDEBUG" /D "ACE_AS_STATIC_LIBS" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 user32.lib aces.lib advapi32.lib Test_Outputs.lib /nologo /subsystem:console /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib Test_Output.lib /nologo /subsystem:console /machine:I386 /libpath:"..\ace"
-
-!ELSEIF "$(CFG)" == "Reactor_Notification_Queue_Test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib Test_Outputd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "Reactor_Notification_Queue_Test - Win32 Static Debug"
-# Name "Reactor_Notification_Queue_Test - Win32 Static Release"
-# Name "Reactor_Notification_Queue_Test - Win32 Release"
-# Name "Reactor_Notification_Queue_Test - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\Main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Reactor_Notification_Queue_Test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\test_config.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/tests/Tests.bor b/tests/Tests.bor
index 14be8a5f026..ade1e4341c3 100644
--- a/tests/Tests.bor
+++ b/tests/Tests.bor
@@ -86,7 +86,6 @@ NAMES = \
Process_Strategy_Test \
RB_Tree_Test \
Reactor_Dispatch_Order_Test \
- Reactor_Notification_Queue_Test \
Reactor_Exceptions_Test \
Reactor_Notify_Test \
Reactor_Performance_Test \
diff --git a/tests/run_test.lst b/tests/run_test.lst
index 9754c133c99..8cd70816828 100644
--- a/tests/run_test.lst
+++ b/tests/run_test.lst
@@ -98,7 +98,6 @@ RB_Tree_Test
Reactor_Dispatch_Order_Test
Reactor_Exceptions_Test
Reactor_Notify_Test: !ST
-Reactor_Notification_Queue_Test
Reactor_Performance_Test: !chorus
Reactor_Registration_Test
Reactor_Timer_Test
diff --git a/tests/tests.dsw b/tests/tests.dsw
index 510d558b290..10d4fbf13ac 100644
--- a/tests/tests.dsw
+++ b/tests/tests.dsw
@@ -1275,21 +1275,6 @@ Package=<4>
###############################################################################
-Project: "Reactor_Notification_Queue_Test"=.\Reactor_Notification_Queue_Test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name Test_Output DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
Project: "Reactor_Performance_Test"=.\Reactor_Performance_Test.dsp - Package Owner=<4>
Package=<5>
diff --git a/tests/tests.mpc b/tests/tests.mpc
index e7cff0f52e7..7a7d18175d7 100644
--- a/tests/tests.mpc
+++ b/tests/tests.mpc
@@ -605,13 +605,6 @@ project(Reactor Notify Test) : acetest {
}
}
-project(Reactor Notification Queue Test) : acetest {
- exename = Reactor_Notification_Queue_Test
- Source_Files {
- Reactor_Notification_Queue_Test.cpp
- }
-}
-
project(Reactor Dispatch Order Test) : acetest {
exename = Reactor_Dispatch_Order_Test
Source_Files {