summaryrefslogtreecommitdiff
path: root/modules/CIAO/connectors
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/connectors')
-rw-r--r--modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.cpp28
-rw-r--r--modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.h41
-rw-r--r--modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.idl43
-rw-r--r--modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.mpc103
-rw-r--r--modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odtbin0 -> 15964 bytes
-rw-r--r--modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odtbin0 -> 20334 bytes
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.cpp315
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.h124
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl36
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc194
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl18
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc134
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp156
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h67
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl21
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc135
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp333
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h117
-rw-r--r--modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp373
-rwxr-xr-xmodules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/ami4ccm/tests/IDL_Test/AMI4CCM_IDLTest.mpc198
-rw-r--r--modules/CIAO/connectors/ami4ccm/tests/IDL_Test/Hello.idl50
-rw-r--r--modules/CIAO/connectors/dds4ccm/NDDS_DDS4CCM_CIAO.mwc19
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdfbin0 -> 386299 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdfbin0 -> 917372 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdfbin0 -> 35850 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml254
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd390
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml567
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/TestCoverage.odsbin0 -> 17931 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdfbin0 -> 26381 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl393
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl44
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/details.txt33
-rw-r--r--modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdfbin0 -> 1169849 bytes
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl28
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc159
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc11
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp169
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc11
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp151
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp304
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h157
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl28
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp282
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h148
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp1048
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp1041
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp882
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp1043
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp463
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp248
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp199
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml61
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl238
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl238
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl252
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl244
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl244
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl238
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.idl19
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.idl17
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.idl16
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.cpp103
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.h91
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.idl15
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.mpc137
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.cpp182
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.h160
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.idl14
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.cpp130
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.h114
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/LargePlan.cdp90684
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/NodeManagerMap.dat2
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/generate_large_plan.py247
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/run_test.pl237
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc139
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp352
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h134
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl34
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp306
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h166
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp425
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl36
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc139
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp370
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h151
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl28
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp285
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h108
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp464
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl262
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h54
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl69
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl34
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_lem_stub.mpc57
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_skel.mpc30
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_stub.mpc59
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl1275
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl16
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h37
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h66
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h48
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.cpp19
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.h43
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.cpp144
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.h71
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS4CCM_Traits.h66
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.cpp263
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.h155
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.cpp238
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.h57
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.cpp261
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.h95
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.cpp190
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.h65
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.cpp181
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.h65
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.cpp162
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.h59
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.cpp177
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.h62
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.cpp352
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.h118
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.cpp473
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h75
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.cpp151
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.cpp156
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.h59
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.cpp50
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.h48
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.cpp457
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.h134
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.cpp67
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.h63
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.cpp159
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.h74
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.cpp179
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.h58
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.cpp251
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.h53
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.cpp301
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.h113
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.cpp108
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.h71
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.cpp76
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.h72
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.cpp1132
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.h220
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.cpp355
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.h112
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.cpp127
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.h112
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.cpp152
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.h114
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp556
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h149
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.cpp73
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.cpp182
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.h84
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.cpp456
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.h133
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.cpp156
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.h90
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.cpp294
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.cpp134
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.h76
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.cpp80
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.h68
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp682
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h123
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.cpp35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.h38
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.cpp72
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.h65
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.cpp537
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.h177
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.cpp178
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.h95
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.cpp277
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.h87
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TimeUtilities.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Topic.cpp217
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Topic.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.cpp90
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.h64
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.cpp49
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.h53
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.cpp78
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.h47
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.cpp304
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.h86
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Utils.cpp10
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Utils.h91
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.cpp98
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.h55
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_dds_impl_export.h58
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_impl.mpc42
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/BuiltinTopicKey_t.h28
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataReaderQos.h68
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataWriterQos.h77
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DeadlineQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DestinationOrderQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantFactoryQos.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantQos.h38
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityServiceQosPolicy.h44
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Duration_t.h37
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/EntityFactoryQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/GroupDataQosPolicy.h35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/HistoryQosPolicy.h35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InconsistentTopicStatus.h36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandleSeq.h48
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandle_t.h92
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LatencyBudgetQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LifespanQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessChangedStatus.h43
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessLostStatus.h36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessQosPolicy.h36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OctetSeq.h32
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedDeadlineMissedStatus.h39
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedIncompatibleQosStatus.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipStrengthQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PartitionQosPolicy.h35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PresentationQosPolicy.h37
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationBuiltinTopicData.h81
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationMatchedStatus.h43
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublisherQos.h44
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/QosPolicyCountSeq.h44
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReaderDataLifecycleQosPolicy.h38
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliabilityQosPolicy.h36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableReaderActivityChangedStatus.h42
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableWriterCacheChangedStatus.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedDeadlineMissedStatus.h38
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedIncompatibleQosStatus.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ResourceLimitsQosPolicy.h37
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleInfo.h71
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleLostStatus.h36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleRejectedStatus.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/StringSeq.h45
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriberQos.h44
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionBuiltinTopicData.h80
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionMatchedStatus.h44
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TimeBasedFilterQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Time_t.h37
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicDataQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicQos.h71
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TransportPriorityQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/UserDataQosPolicy.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds/ndds/WriterDataLifecycleQosPolicy.h33
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/dds4ccm_conf.h26
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.cpp8
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.h100
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/logger/Logger.mpc15
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.idl19
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/DDS_Receiver.mpc15
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/Latency_Receiver.cpp355
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/DDS_Sender.mpc29
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/Latency_Sender.cpp656
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/NDDS_Latency_Sender.cpp605
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/USER_QOS_PROFILES.xml179
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_dds.pl48
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_ndds.pl48
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.idl42
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/DDS_Receiver.mpc15
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/Throughput_Receiver.cpp395
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/DDS_Sender.mpc15
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/Throughput_Sender.cpp319
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/USER_QOS_PROFILES.xml159
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/run_test_dds.pl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl31
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl31
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp198
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h103
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl33
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp571
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h181
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp492
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp344
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp344
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp344
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp246
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp247
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README24
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml125
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl219
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl221
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.mpc152
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.cpp135
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.h88
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.idl30
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.mpc148
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.cpp562
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.h174
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_SharedMem.cdp597
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_UDPv4.cdp597
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/README14
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/USER_QOS_PROFILES.xml179
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/run_test.pl217
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.idl42
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.mpc154
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.cpp255
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.h128
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.idl34
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.mpc152
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.cpp454
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.h141
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_pub.cdp414
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_sub.cdp368
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/USER_QOS_PROFILES.xml136
-rw-r--r--modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/run_test.pl252
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp193
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h130
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp235
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h105
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp411
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml79
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp205
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h101
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp195
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h93
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp372
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml74
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp373
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h169
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp155
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp457
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml127
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp425
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h167
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp485
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp431
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/USER_QOS_PROFILES.xml69
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.mpc114
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.mpc148
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.idl27
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.mpc157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.cpp305
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.h124
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.mpc155
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.cpp188
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.h96
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/Plan.cdp404
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/USER_QOS_PROFILES.xml64
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.mpc114
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.idl27
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.mpc157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.cpp305
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.h124
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.mpc155
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.cpp179
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.h96
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/Plan.cdp384
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/USER_QOS_PROFILES.xml64
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/README6
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.cpp125
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.h75
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.cpp268
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.h108
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/Plan.cdp361
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.mpc147
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.cpp71
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.h49
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp233
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h87
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp93
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h53
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp508
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.idl20
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.idl20
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl21
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc115
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl30
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl30
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/README15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp549
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h153
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl32
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc152
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp287
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h125
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp499
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl250
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/README6
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.cpp271
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.h93
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/Plan.cdp224
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp233
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h104
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp202
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h93
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp431
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README12
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp125
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h75
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp368
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h116
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp383
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml70
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl27
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README3
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp221
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h104
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp217
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h98
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp394
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml64
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README3
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl21
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp146
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h90
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp165
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h75
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp350
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl20
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl27
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README3
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp262
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h113
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp216
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h100
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp372
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.idl14
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.mpc24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.idl17
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.mpc131
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp98
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.idl33
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.cpp199
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.h107
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.cpp185
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.h91
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp402
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl238
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp388
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h150
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp203
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h117
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp430
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml85
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp405
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h156
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp410
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml89
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.cpp16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.cpp14
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.cpp9
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.h17
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.cpp46
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.h18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.cpp137
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.h18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.cpp19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/duration.cpp16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/duration.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.cpp164
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.h18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.cpp18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.cpp16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.cpp16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.cpp16
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.cpp17
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/main.cpp73
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.cpp34
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.h20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.cpp14
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.cpp33
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/policies.mpc46
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.cpp19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.cpp58
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.h18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.cpp19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.cpp17
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.cpp17
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.h19
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Policies/run_test.pl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.cpp59
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.cpp18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.cpp148
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.h18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.cpp14
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.cpp18
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.cpp15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.h19
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.idl36
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.idl27
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.cpp296
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.h125
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.cpp365
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.h140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Get.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Listen.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Write.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Get.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Listen.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Read.cdp246
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_StateListen.cdp258
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Update.cdp258
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/run_test.pl217
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.idl21
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.cpp67
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.h53
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/Plan.cdp205
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/USER_QOS_PROFILES.xml37
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/run_test.pl245
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.mpc114
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/README3
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.mpc157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.cpp545
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.h142
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.mpc155
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.cpp182
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.h96
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/Plan.cdp393
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/USER_QOS_PROFILES.xml64
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.idl20
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.cpp238
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.h103
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.cpp200
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.h86
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/Plan.cdp392
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.idl20
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.mpc151
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.cpp245
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.h111
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.idl26
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.cpp203
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.h95
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/Plan.cdp392
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl21
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc115
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl23
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl29
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/README22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl24
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp638
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h132
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl30
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc152
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp202
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h98
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp388
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml64
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp231
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h117
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp358
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h89
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp365
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp373
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp363
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h89
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp365
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp278
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h108
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp358
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h86
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp365
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README15
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp150
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.idl40
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.mpc158
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.cpp140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.h58
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.idl31
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/Plan.cdp444
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/USER_QOS_PROFILES.xml77
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/run_test.pl238
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/README11
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.idl27
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.mpc149
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.cpp239
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.h72
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.mpc142
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/DefaultQoS.cdp320
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/Plan.cdp495
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/USER_QOS_PROFILES.xml77
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test.pl238
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test_default_qos.pl238
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README35
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp325
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h119
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp100
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h52
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp644
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TimeConversion/Time_Conversion.mpc9
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/TimeConversion/run_test.pl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TimeConversion/time_conversion.cpp86
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.idl25
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.idl31
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.idl66
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.mpc158
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README6
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp224
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h118
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp214
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h90
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp393
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp157
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h82
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp334
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h106
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp396
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc26
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl21
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc138
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp185
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h88
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl23
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp672
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h93
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp370
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.idl75
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.mpc27
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.mpc173
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.cpp158
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.h94
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.mpc174
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.cpp141
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.h83
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/Plan.cdp1118
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/run_test.pl244
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.idl75
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.mpc27
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.mpc144
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.mpc147
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.idl25
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.mpc145
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.idl22
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.mpc176
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.cpp158
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.h92
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.idl24
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.mpc171
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.cpp140
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.h84
-rw-r--r--modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/Plan.cdp815
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/run_test.pl244
1031 files changed, 221981 insertions, 0 deletions
diff --git a/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.cpp b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.cpp
new file mode 100644
index 00000000000..e3b4bb4b7a7
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.cpp
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+// $Id$
+
+#include "ami4ccm/ami4ccm.h"
+
+#include "tao/debug.h"
+
+ACE_RCSID (ami4ccm,
+ ami4ccm,
+ "$Id$")
+
+CCM_AMI::ExceptionHolder_i::ExceptionHolder_i (::Messaging::ExceptionHolder* holder)
+ : holder_ (holder)
+{
+}
+
+void
+CCM_AMI::ExceptionHolder_i::raise_exception (void)
+{
+ if (holder_)
+ {
+ holder_->raise_exception ();
+ }
+ else
+ {
+ throw ::CORBA::UNKNOWN (TAO::VMCID, CORBA::COMPLETED_YES);
+ }
+}
diff --git a/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.h b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.h
new file mode 100644
index 00000000000..adff1d42a04
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.h
@@ -0,0 +1,41 @@
+// -*- C++ -*-
+
+// ================================================================
+/**
+ * @file ami4ccm.h
+ *
+ * $Id$
+ *
+ * Include all the required headers to use CCM AMI easily.
+ *
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ */
+// ================================================================
+
+#ifndef CIAO_AMI4CCM_H
+#define CIAO_AMI4CCM_H
+
+#include /**/ "ace/pre.h"
+
+#include "connectors/ami4ccm/ami4ccm/ami4ccmC.h"
+#include "tao/LocalObject.h"
+#include "tao/Messaging/Messaging.h"
+
+namespace CCM_AMI
+{
+ class AMI4CCM_STUB_Export ExceptionHolder_i
+ : public virtual ::CCM_AMI::ExceptionHolder,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ExceptionHolder_i (::Messaging::ExceptionHolder* holder);
+
+ virtual void raise_exception (void);
+
+ private:
+ ::Messaging::ExceptionHolder* holder_;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_AMI4CCM_H */
diff --git a/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.idl b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.idl
new file mode 100644
index 00000000000..1d572fd554d
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.idl
@@ -0,0 +1,43 @@
+// $Id$
+
+#if !defined (AMI4CCM_IDL_H)
+#define AMI4CCM_IDL_H
+
+#include <Components.idl>
+
+#pragma ciao lem "connectors/ami4ccm/ami4ccm/ami4ccmE.idl"
+
+module CCM_AMI
+{
+ native UserExceptionBase;
+
+ local interface ExceptionHolder
+ {
+ void raise_exception() raises (UserExceptionBase);
+ };
+
+ /// Base interface for the Callback model
+ local interface ReplyHandler
+ {
+ };
+
+ connector AMI_Base
+ {
+ };
+
+ module Connector_T<interface T, interface AMI_T>
+ {
+ porttype AMI_Port
+ {
+ provides AMI_T sendc_run;
+ uses T run;
+ };
+
+ connector The_Connector : AMI_Base
+ {
+ port AMI_Port The_Port;
+ };
+ };
+};
+
+#endif /* AMI4CCM_IDL_H */
diff --git a/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.mpc b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.mpc
new file mode 100644
index 00000000000..d039fd5d7bf
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/ami4ccm/ami4ccm.mpc
@@ -0,0 +1,103 @@
+// $Id$
+
+project(AMI4CCM_idl_gen) : componentidldefaults {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=AMI4CCM_STUB_Export \
+ -Wb,stub_export_include=ami4ccm_stub_export.h \
+ -Wb,svnt_export_macro=AMI4CCM_SVNT_Export \
+ -Wb,svnt_export_include=ami4ccm_svnt_export.h \
+ -Wb,skel_export_macro=AMI4CCM_SVNT_Export \
+ -Wb,skel_export_include=ami4ccm_svnt_export.h
+
+ IDL_Files {
+ ami4ccm.idl
+ }
+}
+
+project (AMI4CCM_lem_gen) : ciaoidldefaults {
+ custom_only = 1
+ after += AMI4CCM_idl_gen
+ idlflags += -I$(CIAO_ROOT)/connectors \
+ -Wb,stub_export_macro=AMI4CCM_LEM_STUB_Export \
+ -Wb,stub_export_include=ami4ccm_lem_stub_export.h -SS
+
+ IDL_Files {
+ idlflags += -Gxhst
+ ami4ccmE.idl
+ }
+}
+
+project(AMI4CCM_stub) : ciao_lib, messaging, ccm_stub {
+ after += AMI4CCM_idl_gen
+ sharedname = AMI4CCM_stub
+ dynamicflags = AMI4CCM_STUB_BUILD_DLL
+ includes += $(CIAO_ROOT)/connectors/ami4ccm
+
+ Source_Files {
+ ami4ccmC.cpp
+ ami4ccm.cpp
+ }
+
+ Header_Files {
+ ami4ccm.h
+ ami4ccmC.h
+ ami4ccm_stub_export.h
+ }
+
+ Inline_Files {
+ ami4ccmC.inl
+ }
+
+ IDL_Files {
+ }
+}
+
+project (AMI4CCM_lem_stub) : ccm_lem_stub, ciao_lib, ciao_output, taolib, valuetype, ifr_client {
+ after += AMI4CCM_stub AMI4CCM_lem_gen
+ libs += AMI4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+ sharedname = AMI4CCM_lem_stub
+ dynamicflags += AMI4CCM_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ami4ccmEC.cpp
+ }
+
+ Header_Files {
+ ami4ccmEC.h
+ }
+
+ Inline_Files {
+ ami4ccmEC.inl
+ }
+}
+
+project (AMI4CCM_svnt) : ciao_servant, ciao_lib {
+ after += AMI4CCM_lem_stub
+ libs += AMI4CCM_lem_stub AMI4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+ sharedname = AMI4CCM_svnt
+ dynamicflags += AMI4CCM_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ami4ccmS.cpp
+ ami4ccm_svnt.cpp
+ }
+
+ Header_Files {
+ ami4ccmS.h
+ ami4ccm_svnt.h
+ ami4ccm_svnt_export.h
+ }
+
+ Inline_Files {
+ ami4ccmS.inl
+ ami4ccm_svnt.inl
+ }
+}
diff --git a/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt
new file mode 100644
index 00000000000..fe474abf2d1
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-explanation.odt
Binary files differ
diff --git a/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt
new file mode 100644
index 00000000000..1a944433525
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/docs/AMI4CCM-spec.odt
Binary files differ
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.cpp
new file mode 100644
index 00000000000..f5d97fe0569
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.cpp
@@ -0,0 +1,315 @@
+// -*- C++ -*-
+// $Id$
+
+#include "AMI_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "connectors/ami4ccm/ami4ccm/ami4ccm.h"
+
+namespace CIAO_Hello_AMI_Sender_Impl
+{
+ AMI_MyFoo_reply_handler::AMI_MyFoo_reply_handler (::Hello::AMI_MyFooCallback_ptr foo_callback)
+ : foo_callback_ (::Hello::AMI_MyFooCallback::_duplicate (foo_callback))
+ {
+ }
+
+ AMI_MyFoo_reply_handler::~AMI_MyFoo_reply_handler ()
+ {
+ }
+
+ // FOO methods
+ void
+ AMI_MyFoo_reply_handler::foo (
+ CORBA::Long result,
+ const char * out_str)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Foo Reply Handler::foo\n");
+ this->foo_callback_->foo (result, out_str);
+ this->_remove_ref ();
+ }
+
+ void
+ AMI_MyFoo_reply_handler::foo_excep (
+ ::Messaging::ExceptionHolder * excep_holder)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Foo Reply Handler::foo_excep\n");
+ ::CCM_AMI::ExceptionHolder_i holder (excep_holder);
+ this->foo_callback_->foo_excep (&holder);
+ this->_remove_ref ();
+ }
+
+ // HELLO methods
+ void
+ AMI_MyFoo_reply_handler::hello (
+ CORBA::Long answer)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::hello\n");
+ this->foo_callback_->hello (answer);
+ this->_remove_ref ();
+ }
+
+ void
+ AMI_MyFoo_reply_handler::hello_excep (
+ ::Messaging::ExceptionHolder * excep_holder)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::hello_excep\n");
+ ::CCM_AMI::ExceptionHolder_i holder (excep_holder);
+ this->foo_callback_->hello_excep (&holder);
+ this->_remove_ref ();
+ }
+
+ //GET rw_attrib Reply Handler
+ void
+ AMI_MyFoo_reply_handler::get_rw_attrib (
+ ::CORBA::Short ami_return_val)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_rw_atrrib\n");
+ this->foo_callback_->get_rw_attrib (ami_return_val);
+ this->_remove_ref ();
+ }
+
+ void
+ AMI_MyFoo_reply_handler::get_rw_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_rw_attrib_excep\n");
+ ::CCM_AMI::ExceptionHolder_i holder (excep_holder);
+ this->foo_callback_->get_rw_attrib_excep (&holder);
+ this->_remove_ref ();
+ }
+
+ //SET rw_attrib Reply Handler
+ void
+ AMI_MyFoo_reply_handler::set_rw_attrib ()
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::set_rw_attrib\n");
+ this->foo_callback_->set_rw_attrib ();
+ this->_remove_ref ();
+ }
+
+ void
+ AMI_MyFoo_reply_handler::set_rw_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::set_rw_attrib_excep\n");
+ ::CCM_AMI::ExceptionHolder_i holder (excep_holder);
+ this->foo_callback_->set_rw_attrib_excep (&holder);
+ this->_remove_ref ();
+ }
+
+ //ro_attrib Reply Handler
+ void
+ AMI_MyFoo_reply_handler::get_ro_attrib (
+ ::CORBA::Short ami_return_val)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_ro_attrib\n");
+ this->foo_callback_->get_ro_attrib (ami_return_val);
+ this->_remove_ref ();
+ }
+
+ void
+ AMI_MyFoo_reply_handler::get_ro_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder)
+ {
+ printf ("AMI CORBA (FOO) :\tMyFoo Hello Reply Handler::get_ro_attrib_excep\n");
+ ::CCM_AMI::ExceptionHolder_i holder (excep_holder);
+ this->foo_callback_->get_ro_attrib_excep (&holder);
+ this->_remove_ref ();
+ }
+ AMI_MyFoo_exec_i::AMI_MyFoo_exec_i ()
+ {
+ }
+
+ AMI_MyFoo_exec_i::~AMI_MyFoo_exec_i (void)
+ {
+ }
+
+ void
+ AMI_MyFoo_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello::CCM_AMI_CONN_MyFoo_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->ami_foo_server_ = this->context_->get_connection_uses_MyFoo ();
+ }
+
+ void
+ AMI_MyFoo_exec_i::sendc_foo (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler,
+ const char * in_str)
+ {
+ printf ("AMI (FOO) :\tsendc_foo <%s>\n", in_str);
+ if (!::CORBA::is_nil (this->ami_foo_server_.in ()))
+ {
+ Hello::AMI_MyFooHandler_var the_handler_var;
+ if (!::CORBA::is_nil (ami_handler))
+ {
+ AMI_MyFoo_reply_handler* handler =
+ new AMI_MyFoo_reply_handler (ami_handler);
+ the_handler_var = handler->_this ();
+ }
+ printf ("AMI (FOO) :\tSending string <%s> to AMI CORBA server\n", in_str);
+ this->ami_foo_server_->sendc_foo (the_handler_var.in (), in_str);
+ printf ("AMI (FOO) : \tInvoked sendc_foo\n");
+ }
+ }
+
+ void
+ AMI_MyFoo_exec_i::sendc_hello (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler)
+ {
+ printf ("AMI (FOO) :\tsendc_hello\n");
+ if (!::CORBA::is_nil (this->ami_foo_server_.in ()))
+ {
+ Hello::AMI_MyFooHandler_var the_handler_var;
+ if (!::CORBA::is_nil (ami_handler))
+ {
+ AMI_MyFoo_reply_handler* handler =
+ new AMI_MyFoo_reply_handler (ami_handler);
+ the_handler_var = handler->_this ();
+ }
+ printf ("AMI (FOO) :\tCalling AMI CORBA server\n");
+ this->ami_foo_server_->sendc_hello (the_handler_var.in ());
+ printf ("AMI (FOO) : \tInvoked sendc_foo\n");
+ }
+ }
+
+ void
+ AMI_MyFoo_exec_i::sendc_get_rw_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler)
+ {
+ printf ("AMI (FOO) :\tsendc_get_rw_attrib\n");
+ if (!::CORBA::is_nil (this->ami_foo_server_.in ()))
+ {
+ Hello::AMI_MyFooHandler_var the_handler_var;
+ if (!::CORBA::is_nil (ami_handler))
+ {
+ AMI_MyFoo_reply_handler* handler =
+ new AMI_MyFoo_reply_handler (ami_handler);
+ the_handler_var = handler->_this ();
+ }
+ this->ami_foo_server_->sendc_get_rw_attrib (the_handler_var.in ());
+ printf ("AMI (FOO) : \tInvoked sendc_get_rw_attrib\n");
+ }
+ }
+
+ void
+ AMI_MyFoo_exec_i::sendc_set_rw_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler,
+ CORBA::Short rw_attrib)
+ {
+ printf ("AMI (FOO) :\tsendc_set_rw_attrib\n");
+ if (!::CORBA::is_nil (this->ami_foo_server_.in ()))
+ {
+ Hello::AMI_MyFooHandler_var the_handler_var;
+ if (!::CORBA::is_nil (ami_handler))
+ {
+ AMI_MyFoo_reply_handler* handler =
+ new AMI_MyFoo_reply_handler (ami_handler);
+ the_handler_var = handler->_this ();
+ }
+ printf ("AMI (FOO) : \tSet rw_attrib <%d>\n", rw_attrib);
+ this->ami_foo_server_->sendc_set_rw_attrib (the_handler_var.in (), rw_attrib);
+ printf ("AMI (FOO) : \tInvoked sendc_set_rw_attrib\n");
+ }
+ }
+
+ void
+ AMI_MyFoo_exec_i::sendc_get_ro_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler)
+ {
+ printf ("AMI (FOO) :\tsendc_get_ro_attrib\n");
+ if (!::CORBA::is_nil (this->ami_foo_server_.in ()))
+ {
+ Hello::AMI_MyFooHandler_var the_handler_var;
+ if (!::CORBA::is_nil (ami_handler))
+ {
+ AMI_MyFoo_reply_handler* handler =
+ new AMI_MyFoo_reply_handler (ami_handler);
+ the_handler_var = handler->_this ();
+ }
+ this->ami_foo_server_->sendc_get_ro_attrib (the_handler_var.in ());
+ printf ("AMI (FOO) : \tInvoked sendc_get_ro_attrib\n");
+ }
+ }
+ //============================================================
+ // Component Executor Implementation Class: AMI_exec_i
+ //============================================================
+
+ AMI_exec_i::AMI_exec_i (void)
+ : myfoo_ (new AMI_MyFoo_exec_i ())
+ {
+ }
+
+ AMI_exec_i::~AMI_exec_i (void)
+ {
+ delete myfoo_;
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ ::Hello::CCM_AMI_MyFoo_ptr
+ AMI_exec_i::get_provides_MyFoo (void)
+ {
+ return this->myfoo_;
+ }
+ // Operations from Components::SessionComponent.
+
+ void
+ AMI_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello::CCM_AMI_CONN_MyFoo_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->myfoo_->set_session_context (this->context_.in ());
+ }
+
+ void
+ AMI_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ AMI_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ AMI_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ AMI_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_AMI_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ AMI_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.h
new file mode 100644
index 00000000000..6d95574789e
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/HandCrafted/AMI_exec.h
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_AMI_EXEC_H_
+#define CIAO_AMI_EXEC_H_
+
+#include "HelloS.h"
+#include "HelloEC.h"
+#include "Hello_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Hello_AMI_Sender_Impl
+{
+ class AMI_MyFoo_reply_handler : public POA_Hello::AMI_MyFooHandler
+ {
+ public:
+ AMI_MyFoo_reply_handler (
+ ::Hello::AMI_MyFooCallback_ptr foo_callback);
+
+ virtual ~AMI_MyFoo_reply_handler (void);
+
+ virtual void foo (CORBA::Long result, const char * out_str);
+
+ virtual void foo_excep (::Messaging::ExceptionHolder * excep_holder);
+
+ virtual void hello (CORBA::Long answer);
+
+ virtual void hello_excep (::Messaging::ExceptionHolder * excep_holder);
+
+ virtual void get_rw_attrib (::CORBA::Short ami_return_val);
+
+ virtual void get_rw_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder);
+
+ virtual void set_rw_attrib ();
+
+ virtual void set_rw_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder);
+
+ virtual void get_ro_attrib (::CORBA::Short ami_return_val);
+
+ virtual void get_ro_attrib_excep (
+ ::Messaging::ExceptionHolder * excep_holder);
+ private:
+ ::Hello::AMI_MyFooCallback_var foo_callback_;
+ };
+
+ class AMI_MyFoo_exec_i
+ : public virtual ::Hello::CCM_AMI_MyFoo,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ AMI_MyFoo_exec_i ();
+
+ virtual ~AMI_MyFoo_exec_i (void);
+
+ virtual void
+ sendc_foo (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler,
+ const char * in_str);
+
+ virtual void
+ sendc_hello (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler);
+
+ virtual void
+ sendc_get_rw_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler);
+
+ virtual void
+ sendc_set_rw_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler,
+ CORBA::Short rw_attrib);
+
+ virtual void
+ sendc_get_ro_attrib (
+ ::Hello::AMI_MyFooCallback_ptr ami_handler);
+
+ void
+ set_session_context (::Components::SessionContext_ptr ctx);
+
+ private:
+ ::Hello::MyFoo_var ami_foo_server_;
+ ::Hello::CCM_AMI_CONN_MyFoo_Context_var context_;
+ };
+
+ class AMI_exec_i
+ : public virtual ::Hello::CCM_AMI_CONN_MyFoo,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ AMI_exec_i (void);
+ virtual ~AMI_exec_i (void);
+
+ virtual ::Hello::CCM_AMI_MyFoo_ptr
+ get_provides_MyFoo (void);
+
+ virtual void
+ set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Hello::CCM_AMI_CONN_MyFoo_Context_var context_;
+ ::Hello::AMI_MyFooCallback_var callback_foo_;
+ ::Hello::MyFoo_var receiver_foo_;
+ AMI_MyFoo_exec_i *myfoo_;
+ };
+
+ extern "C" HELLO_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_AMI_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl
new file mode 100644
index 00000000000..856056f807a
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+#ifndef HELLO_IDL
+#define HELLO_IDL
+
+#pragma ciao lem "Base/HelloE.idl"
+#pragma ciao ami4ccm interface "Hello::MyFoo"
+#pragma ciao lem "Base/HelloAE.idl"
+
+module Hello
+{
+ exception InternalError
+ {
+ long id;
+ string error_string;
+ };
+
+ // Sender/Receiver interface
+ interface MyFoo
+ {
+ long foo (in string in_str, out string answer)
+ raises (InternalError);
+ void hello (out long answer)
+ raises (InternalError);
+
+ attribute short rw_attrib
+ getraises (InternalError)
+ setraises (InternalError);
+
+ readonly attribute short ro_attrib
+ raises (InternalError);
+ };
+};
+
+#endif
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc
new file mode 100644
index 00000000000..459fd381e26
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Base/Hello.mpc
@@ -0,0 +1,194 @@
+// $Id$
+
+project(AMI_Hello_idl_gen) : componentidldefaults, ami, ami4ccm_stub {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_STUB_Export \
+ -Wb,stub_export_include=Hello_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SKEL_Export \
+ -Wb,skel_export_include=Hello_skel_export.h \
+ -Wb,conn_export_macro=HELLO_CONN_Export \
+ -Wb,conn_export_include=Hello_conn_export.h \
+ -Wb,exec_export_macro=HELLO_EXEC_Export \
+ -Wb,exec_export_include=Hello_exec_export.h \
+ -I.. -GM -Gxhcn
+ idlflags -= -Gsv
+
+ IDL_Files {
+ Hello.idl
+ }
+}
+
+project(AMI_Hello_lem_gen) : ciaoidldefaults {
+ after += AMI_Hello_idl_gen AMI_Hello_lema_gen
+ custom_only = 1
+ idlflags += -Wb,export_macro=HELLO_LEM_STUB_Export \
+ -Wb,export_include=Hello_lem_stub_export.h \
+ -I.. -SS -Gxhst
+
+ IDL_Files {
+ HelloE.idl
+ }
+}
+
+project(AMI_Hello_lema_gen) : ciaoidldefaults {
+ after += AMI_Hello_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_STUB_Export \
+ -Wb,stub_export_include=Hello_stub_export.h \
+ -Wb,conn_export_macro=HELLO_CONN_Export \
+ -Wb,conn_export_include=Hello_conn_export.h \
+ -Wb,svnt_export_macro=HELLO_SVNT_Export \
+ -Wb,svnt_export_include=Hello_svnt_export.h \
+ -Wb,skel_export_macro=HELLO_SKEL_Export \
+ -Wb,skel_export_include=Hello_skel_export.h \
+ -I.. -Gsv -Gcn -Glem -GC -Gxhst -Gxhsv
+
+ IDL_Files {
+ HelloA.idl
+ }
+}
+
+project(AMI_Hello_lemae_gen) : ciaoidldefaults {
+ after += AMI_Hello_lema_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_lem_stub_export.h \
+ -I.. -SS
+
+ IDL_Files {
+ HelloAE.idl
+ }
+}
+
+project(AMI_Hello_stub) : ccm_stub, ami, ami4ccm_stub {
+ after += AMI_Hello_lem_gen
+ libs +=
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ sharedname = Hello_stub
+ dynamicflags = HELLO_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloC.cpp
+ HelloAC.cpp
+ }
+
+ Header_Files {
+ HelloC.h
+ Hello_stub_export.h
+}
+
+ Inline_Files {
+ HelloC.inl
+ }
+}
+
+project(AMI_Hello_lem_stub) : ccm_executor, ami, ami4ccm_lem_stub {
+ after += AMI_Hello_lem_gen AMI_Hello_stub AMI_Hello_lemae_gen AMI_Hello_skel
+ libs += Hello_stub Hello_skel
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ sharedname = Hello_lem_stub
+ dynamicflags = HELLO_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloEC.cpp
+ HelloAEC.cpp
+ }
+
+ Header_Files {
+ HelloEC.h
+ Hello_lem_stub_export.h
+}
+
+ Inline_Files {
+ HelloEC.inl
+ }
+}
+
+project(AMI_Hello_skel) : ciao_executor, ami, ami4ccm_servant {
+ after += AMI_Hello_stub
+ sharedname = Hello_skel
+ libs += Hello_stub
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ dynamicflags = HELLO_SKEL_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloS.cpp
+ HelloAS.cpp
+ }
+
+ Header_Files {
+ HelloS.h
+ Hello_skel_export.h
+ }
+
+ Inline_Files {
+ HelloS.inl
+ }
+}
+
+project(AMI_Hello_conn) : ciao_executor, ami, ami4ccm_lem_stub {
+ after += AMI_Hello_lem_stub Hello_Base_AMI_stub AMI_Hello_skel AMI_Hello_lema_gen AMI_Hello_lemae_gen
+ sharedname = Hello_conn
+ libs += Hello_stub Hello_skel Hello_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_CONN_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloA_conn.cpp
+ }
+
+ Header_Files {
+ HelloA_conn.h
+ HelloA_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(AMI_Hello_svnt) : ciao_servant, ami, ami4ccm_servant {
+ after += AMI_Hello_lem_stub Hello_Base_AMI_stub AMI_Hello_skel AMI_Hello_lema_gen AMI_Hello_lemae_gen AMI_Hello_conn
+ sharedname = Hello_svnt
+ libs += Hello_stub Hello_skel Hello_lem_stub Hello_conn
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_SVNT_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloA_svnt.cpp
+ }
+
+ Header_Files {
+ HelloA_svnt.h
+ HelloA_svnt_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl
new file mode 100644
index 00000000000..242594e5681
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.idl
@@ -0,0 +1,18 @@
+// $Id$
+
+#ifndef HELLO_RECEIVER_IDL
+#define HELLO_RECEIVER_IDL
+
+#include <Components.idl>
+
+#include "Base/Hello.idl"
+
+module Hello
+{
+ component Receiver
+ {
+ /// Provides
+ provides MyFoo do_my_foo;
+ };
+};
+#endif
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc
new file mode 100644
index 00000000000..a32e360ee88
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver.mpc
@@ -0,0 +1,134 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Hello_Base Hello_Receiver"
+
+project(AMI_Hello_Base_Hello_Receiver_idl_gen) : componentidldefaults {
+ custom_only = 1
+ after += AMI_Hello_idl_gen
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_stub_export.h \
+ -Wb,skel_export_macro=HELLO_RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Hello_Receiver_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Hello_Receiver_exec_export.h \
+ -Glem -I..
+
+ IDL_Files {
+ Hello_Receiver.idl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Receiver_lem_gen) : ciaoidldefaults {
+ after += AMI_Hello_Base_Hello_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Hello_ReceiverE.idl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Receiver_l_stub) : ccm_svnt, messaging {
+ after += AMI_Hello_Base_Hello_Receiver_lem_gen AMI_Hello_Base_Hello_Receiver_stub AMI_Hello_stub
+ libs += Hello_stub Hello_Receiver_stub
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Hello_Receiver_lem_stub
+ dynamicflags = HELLO_RECEIVER_LEM_STUB_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverEC.h
+ Hello_Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverEC.inl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Receiver_stub) : ccm_stub, messaging {
+ after += AMI_Hello_Base_Hello_Receiver_idl_gen AMI_Hello_stub
+ libs += Hello_stub
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Hello_Receiver_stub
+ dynamicflags = HELLO_RECEIVER_STUB_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverC.h
+ Hello_Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverC.inl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Receiver_exec) : ciao_executor, messaging {
+ after += AMI_Hello_Base_Hello_Receiver_l_stub AMI_Hello_Base_Hello_Receiver_stub AMI_Hello_stub AMI_Hello_lem_stub
+ sharedname = Hello_Receiver_exec
+ libs += Hello_Receiver_stub Hello_Receiver_lem_stub Hello_stub Hello_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_RECEIVER_EXEC_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_exec.h
+ Hello_Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(AMI_Hello_Base_Hello_Receiver_svnt) : ciao_servant, messaging {
+ after += AMI_Hello_Base_skel AMI_Hello_Base_Hello_Receiver_l_stub AMI_Hello_stub AMI_Hello_skel AMI_Hello_lem_stub
+ sharedname = Hello_Receiver_svnt
+ libs += Hello_Receiver_stub Hello_Receiver_lem_stub \
+ Hello_skel \
+ Hello_stub Hello_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_RECEIVER_SVNT_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverS.cpp
+ Hello_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverS.h
+ Hello_Receiver_svnt.h
+ Hello_Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp
new file mode 100644
index 00000000000..7140896a887
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp
@@ -0,0 +1,156 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Hello_Receiver_exec.h"
+#include "ace/OS_NS_unistd.h"
+
+namespace CIAO_Hello_Receiver_Impl
+{
+ MyFoo_exec_i::MyFoo_exec_i (void) : get_rw_ (false), get_ro_ (false)
+ {
+ }
+
+ MyFoo_exec_i::~MyFoo_exec_i (void)
+ {
+ }
+
+ ::CORBA::Long
+ MyFoo_exec_i::foo (const char * in_str, ::CORBA::String_out answer)
+ {
+ if (ACE_OS::strlen (in_str) == 0)
+ {
+ printf ("Receiver (FOO) :\tEMPTY string received -> throw internal excep with id <42> and errorstring <Hello World>\n");
+ Hello::InternalError ex (42, "Hello world");
+ throw ex;
+ }
+ else
+ {
+ printf ("Receiver (FOO) :\tReceived string <%s>\n", in_str);
+ ACE_OS::sleep (ACE_OS::rand () % 2);
+ answer = CORBA::string_dup ("This is my answer : Hi");
+ return ACE_OS::rand () % 100;
+ }
+ }
+
+ void
+ MyFoo_exec_i::hello (::CORBA::Long_out answer)
+ {
+ printf ("Receiver (HELLO) :\tReceived request\n");
+ ACE_OS::sleep (ACE_OS::rand () % 2);
+ answer = ACE_OS::rand () % 100;
+ }
+
+ ::CORBA::Short
+ MyFoo_exec_i::rw_attrib ()
+ {
+ printf ("Receiver (RW_ATTRIB) :\tReceived request\n");
+ if (this->get_rw_)
+ {
+ this->get_rw_ = false;
+ printf ("Receiver (FOO) :\tSecond get rw_attrib received -> throw internal excep with id <42> and errorstring <Hello World>\n");
+ Hello::InternalError ex (42, "Hello world");
+ throw ex;
+ }
+ else
+ {
+ ACE_OS::sleep (ACE_OS::rand () % 2);
+ this->get_rw_ = true;
+ }
+ return ACE_OS::rand () % 100;
+ }
+
+ void
+ MyFoo_exec_i::rw_attrib (::CORBA::Short new_value)
+ {
+ if (new_value == 0)
+ {
+ printf ("Receiver (RW_ATTRIB) :\tnew_value == 0 -> throw internal excep with id <42> and errorstring <Hello World>\n");
+ Hello::InternalError ex (42, "Hello world");
+ throw ex;
+ }
+ else
+ {
+ printf ("Receiver (RW_ATTRIB) :\tSet <%d>\n", new_value);
+ ACE_OS::sleep (ACE_OS::rand () % 2);
+ }
+ }
+
+ CORBA::Short
+ MyFoo_exec_i::ro_attrib ()
+ {
+ printf ("Receiver (RO_ATTRIB) :\tReceived request\n");
+ if (this->get_ro_)
+ {
+ this->get_ro_ = false;
+ printf ("Receiver (FOO) :\tSecond get ro_attrib received -> throw internal excep with id <42> and errorstring <Hello World>\n");
+ Hello::InternalError ex (42, "Hello world");
+ throw ex;
+ }
+ else
+ {
+ ACE_OS::sleep (ACE_OS::rand () % 2);
+ this->get_ro_ = true;
+ }
+ return ACE_OS::rand () % 100;
+ }
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::Hello::CCM_MyFoo_ptr
+ Receiver_exec_i::get_do_my_foo (void)
+ {
+ return new MyFoo_exec_i ();
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::Hello::CCM_Receiver_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Receiver_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h
new file mode 100644
index 00000000000..e785da3f319
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h
@@ -0,0 +1,67 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_HELLO_RECEIVER_EXEC_H_
+#define CIAO_HELLO_RECEIVER_EXEC_H_
+
+#include "Hello_ReceiverEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "Hello_Receiver_exec_export.h"
+
+namespace CIAO_Hello_Receiver_Impl
+{
+ class MyFoo_exec_i
+ : public virtual ::Hello::CCM_MyFoo,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ MyFoo_exec_i (void);
+ virtual ~MyFoo_exec_i (void);
+
+ virtual ::CORBA::Long foo (const char * in_str, ::CORBA::String_out answer);
+
+ virtual void hello (::CORBA::Long_out answer);
+
+ virtual ::CORBA::Short rw_attrib ();
+
+ virtual void rw_attrib (::CORBA::Short new_value);
+
+ virtual CORBA::Short ro_attrib ();
+ private:
+ bool get_rw_;
+ bool get_ro_;
+ };
+
+ class Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ virtual ::Hello::CCM_MyFoo_ptr get_do_my_foo (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Hello::CCM_Receiver_Context_var context_;
+ };
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl
new file mode 100644
index 00000000000..993f1c80171
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+#ifndef HELLO_SENDER_IDL
+#define HELLO_SENDER_IDL
+
+#include <Components.idl>
+
+#include "Base/Hello.idl"
+
+#pragma ciao ami4ccm receptacle "Hello::Sender::run_my_foo"
+
+module Hello
+{
+ component Sender
+ {
+ /// For synchronous invocation
+ uses MyFoo run_my_foo;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc
new file mode 100644
index 00000000000..ab19fe9ed74
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender.mpc
@@ -0,0 +1,135 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Hello_Base Hello_Sender"
+
+project(AMI_Hello_Base_Hello_Sender_idl_gen) : componentidldefaults {
+ after += Conn_Hello_Base_idl_gen AMI_Hello_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SENDER_SVNT_Export \
+ -Wb,skel_export_include=Hello_Sender_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_SENDER_EXEC_Export \
+ -Wb,exec_export_include=Hello_Sender_exec_export.h \
+ -I.. -GM
+
+ IDL_Files {
+ Hello_Sender.idl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Sender_lem_gen) : ciaoidldefaults {
+ after += AMI_Hello_Base_Hello_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Hello_SenderE.idl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Sender_lem_stub) : ccm_svnt, ami {
+ after += AMI_Hello_Base_Hello_Sender_lem_gen AMI_Hello_stub Conn_Hello_Base_stub
+ libs += Hello_stub
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Hello_Sender_lem_stub
+ dynamicflags = HELLO_SENDER_LEM_STUB_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderEC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderEC.h
+ Hello_Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderEC.inl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Sender_stub) : ccm_stub, ami {
+ after += AMI_Hello_Base_Hello_Sender_idl_gen AMI_Hello_Base_stub AMI_Hello_stub Conn_Hello_Base_stub
+ libs += Hello_stub
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Hello_Sender_stub
+ dynamicflags = HELLO_SENDER_STUB_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderC.h
+ Hello_Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderC.inl
+ }
+}
+
+project(AMI_Hello_Base_Hello_Sender_exec) : ciao_executor, ami, ami4ccm_stub {
+ after += AMI_Hello_Base_Hello_Sender_lem_stub AMI_Hello_Base_Hello_Sender_stub AMI_Hello_Base_exec Conn_Hello_Base_stub AMI_Hello_lem_stub
+ sharedname = Hello_Sender_exec
+ libs += Hello_Sender_stub Hello_Sender_lem_stub Hello_stub Hello_stub Hello_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_SENDER_EXEC_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_exec.h
+ Hello_Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(AMI_Hello_Base_Hello_Sender_svnt) : ciao_servant, ami {
+ after += AMI_Hello_Base_skel AMI_Hello_Base_Hello_Sender_lem_stub AMI_Hello_Base_exec AMI_Hello_skel
+ sharedname = Hello_Sender_svnt
+ libs += Hello_Sender_stub Hello_Sender_lem_stub \
+ Hello_skel \
+ Hello_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_SENDER_SVNT_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderS.cpp
+ Hello_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_SenderS.h
+ Hello_Sender_svnt.h
+ Hello_Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp
new file mode 100644
index 00000000000..1050cb0deda
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp
@@ -0,0 +1,333 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Hello_Sender_exec.h"
+#include "ace/OS_NS_unistd.h"
+
+namespace CIAO_Hello_Sender_Impl
+{
+ void HandleException (
+ long id,
+ const char* error_string,
+ const char* func)
+ {
+ printf ("Sender (%s) :\tCallback except from AMI\n", func);
+ if (id != 42)
+ {
+ printf ("ERROR (%s) :\tReceived unexpected ID received in except handler\n",
+ func);
+ return;
+ }
+ if (ACE_OS::strcmp (error_string, "Hello world") != 0)
+ {
+ printf ("ERROR (%s) :\tReceived unexpected error string received in except handler\n",
+ func);
+ return;
+ }
+ printf ("OK (%s) :\tReceived the correct except parameters.\n", func);
+ }
+
+ void HandleException (
+ ::CCM_AMI::ExceptionHolder_ptr excep_holder,
+ const char* func)
+ {
+ printf ("Sender (%s) :\tHandle except AMI\n", func);
+ try
+ {
+ excep_holder->raise_exception ();
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender: Caught the correct except type <%d> <%C>\n",
+ ex.id, ex.error_string.in ()));
+ HandleException (ex.id, ex.error_string.in (), func);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: Caught unexpected except:");
+ }
+ }
+
+ //============================================================
+ // Facet Executor Implementation Class: MyFoo_callback_exec_i
+ //============================================================
+ MyFoo_callback_exec_i::MyFoo_callback_exec_i (void)
+ {
+ }
+
+ MyFoo_callback_exec_i::~MyFoo_callback_exec_i (void)
+ {
+ }
+
+ //============================================================
+ // Operations from ::CCM_AMI::MyFoo_callback
+ //============================================================
+
+ // FOO methods
+ void
+ MyFoo_callback_exec_i::foo (
+ ::CORBA::Long ami_return_val,
+ const char * answer)
+ {
+ printf ("Sender (FOO) :\tCallback from AMI : result <%d> answer <%s>\n", ami_return_val, answer);
+ }
+
+ void
+ MyFoo_callback_exec_i::foo_excep (
+ ::CCM_AMI::ExceptionHolder * excep_holder)
+ {
+ HandleException (excep_holder, "FOO");
+ }
+
+ // HELLO methods
+ void
+ MyFoo_callback_exec_i::hello (
+ ::CORBA::Long answer)
+ {
+ printf ("Sender (FOO) :\tCallback from AMI (HELLO) : answer <%d>\n", answer);
+ }
+
+ void
+ MyFoo_callback_exec_i::hello_excep (
+ ::CCM_AMI::ExceptionHolder * excep_holder)
+ {
+ HandleException (excep_holder, "HELLO");
+ }
+
+ //GET rw_attrib Reply Handler
+ void
+ MyFoo_callback_exec_i::get_rw_attrib (
+ ::CORBA::Short ami_return_val)
+ {
+ printf ("Sender (RW_ATTRIB) :\tCallback from AMI (RW_ATTRIB) : answer <%d>\n", ami_return_val);
+ }
+
+ void
+ MyFoo_callback_exec_i::get_rw_attrib_excep (
+ ::CCM_AMI::ExceptionHolder * excep_holder)
+ {
+ HandleException (excep_holder, "GET RW_ATTRIB");
+ }
+
+ //SET rw_attrib Reply Handler
+ void
+ MyFoo_callback_exec_i::set_rw_attrib ()
+ {
+ printf ("Sender (RW_ATTRIB) :\tCallback from AMI (RW_ATTRIB)\n");
+ }
+
+ void
+ MyFoo_callback_exec_i::set_rw_attrib_excep (
+ ::CCM_AMI::ExceptionHolder * excep_holder)
+ {
+ HandleException (excep_holder, "SET_RW_ATTRIB");
+ }
+
+ //ro_attrib Reply Handler
+ void
+ MyFoo_callback_exec_i::get_ro_attrib (
+ ::CORBA::Short ami_return_val)
+ {
+ printf ("Sender (RO_ATTRIB) :\tCallback from AMI (RO_ATTRIB) : answer <%d>\n", ami_return_val);
+ }
+
+ void
+ MyFoo_callback_exec_i::get_ro_attrib_excep (
+ ::CCM_AMI::ExceptionHolder * excep_holder)
+ {
+ HandleException (excep_holder, "RO_ATTRIB");
+ }
+
+ //============================================================
+ // Worker thread for asynchronous invocations for MyFoo
+ //============================================================
+ asynch_foo_generator::asynch_foo_generator (::Hello::AMI_MyFoo_ptr my_foo_ami)
+ : my_foo_ami_ (::Hello::AMI_MyFoo::_duplicate (my_foo_ami))
+ {
+ }
+
+ int asynch_foo_generator::svc ()
+ {
+ ACE_OS::sleep (3);
+ for (int i = 0; i < 5; ++i)
+ {
+ if (CORBA::is_nil (my_foo_ami_))
+ {
+ printf ("ERROR Sender (ASYNCH) :\tfoo_ami is NIL !!!\n");
+ return 1;
+ }
+ else
+ {
+ printf ("Sender (ASYNCH) :\tInvoke Asynchronous calls\n");
+ my_foo_ami_->sendc_foo (new MyFoo_callback_exec_i (), "Do something asynchronous");
+ my_foo_ami_->sendc_hello (new MyFoo_callback_exec_i ());
+ my_foo_ami_->sendc_get_rw_attrib(new MyFoo_callback_exec_i ());
+ my_foo_ami_->sendc_get_rw_attrib(new MyFoo_callback_exec_i ());
+ my_foo_ami_->sendc_set_rw_attrib(new MyFoo_callback_exec_i (), 15);
+ my_foo_ami_->sendc_get_ro_attrib(new MyFoo_callback_exec_i ());
+ my_foo_ami_->sendc_get_ro_attrib(new MyFoo_callback_exec_i ());
+ printf ("Sender (ASYNCH) :\tInvoked Asynchronous calls\n");
+ }
+ }
+ printf ("Sender (ASYNCH) :\tInvoke Asynchronous calls to test except handling\n");
+ my_foo_ami_->sendc_foo (new MyFoo_callback_exec_i (), "");
+ my_foo_ami_->sendc_set_rw_attrib(new MyFoo_callback_exec_i (), 0);
+ printf ("Sender (ASYNCH) :\tInvoked Asynchronous call.\n");
+ return 0;
+ }
+
+ //============================================================
+ // Worker thread for synchronous invocations for MyFoo
+ //============================================================
+ synch_foo_generator::synch_foo_generator (::Hello::MyFoo_ptr my_foo_ami)
+ : my_foo_ami_ (::Hello::MyFoo::_duplicate (my_foo_ami))
+ {
+ }
+
+ int synch_foo_generator::svc ()
+ {
+ ACE_OS::sleep (3);
+ //run synch calls
+ char * out_str = 0;
+ for (int i = 0; i < 5; ++i)
+ {
+ CORBA::Long result = my_foo_ami_->foo ("Do something synchronous", out_str);
+ printf ("Sender (SYNCH):\tInvoked synchronous call (FOO) result <%d> answer <%s>\n", result, out_str);
+
+ CORBA::Long answer;
+ my_foo_ami_->hello (answer);
+ printf ("Sender (SYNCH):\tInvoked synchronous call (HELLO) answer <%d>\n", answer);
+
+ try
+ {
+ CORBA::Short rw_attrib = my_foo_ami_->rw_attrib ();
+ printf ("Sender (SYNCH):\tInvoked synchronous call (GET_RW_ATTRIB) answer <%d>\n", rw_attrib);
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+
+ try
+ {
+ my_foo_ami_->rw_attrib (15);
+ printf ("Sender (SYNCH):\tInvoked synchronous call (SET_RW_ATTRIB) to <15>\n");
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+
+ try
+ {
+ CORBA::Short ro_attrib = my_foo_ami_->ro_attrib ();
+ printf ("Sender (SYNCH):\tInvoked synchronous call (GET_RO_ATTRIB) answer <%d>\n", ro_attrib);
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+ }
+ try
+ {
+ CORBA::Long result = my_foo_ami_->foo ("", out_str);
+ printf ("Sender (SYNCH) :\tInvoked synchronous call result <%d> answer <%s>\n", result, out_str);
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ printf ("Sender (SYNCH FOO) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+
+ try
+ {
+ my_foo_ami_->rw_attrib (0);
+ printf ("Sender (SYNCH) :\tInvoked synchronous call rw_attrib\n");
+ }
+ catch (const Hello::InternalError& ex)
+ {
+ printf ("Sender (SYNCH RW_ATTRIB) :\tExpected Except caught : <%d> <%s>\n", ex.id, ex.error_string.in ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: Caught unexpected except:");
+ }
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : global_foo_callback_ (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+ // Operations from Components::SessionComponent.
+
+ void
+ Sender_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello::CCM_Sender_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ ::Hello::AMI_MyFoo_var asynch_foo =
+ this->context_->get_connection_sendc_run_my_foo();
+ asynch_foo_generator* asynch_foo_gen =
+ new asynch_foo_generator (asynch_foo);
+ asynch_foo_gen->activate (THR_NEW_LWP | THR_JOINABLE, 1);
+
+ ::Hello::MyFoo_var synch_foo =
+ this->context_->get_connection_run_my_foo ();
+ synch_foo_generator* synch_foo_gen =
+ new synch_foo_generator (synch_foo);
+ synch_foo_gen->activate (THR_NEW_LWP | THR_JOINABLE, 1);
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Sender_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h
new file mode 100644
index 00000000000..fcf69d9bdee
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/Sender/Hello_Sender_exec.h
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#ifndef CIAO_HELLO_SENDER_EXEC_H_
+#define CIAO_HELLO_SENDER_EXEC_H_
+
+#include "Hello_SenderEC.h"
+#include "Hello_Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+
+namespace CIAO_Hello_Sender_Impl
+{
+ /// Common exception handlers
+ void HandleException (
+ long id,
+ const char* error_string,
+ const char* func);
+
+ void HandleException (
+ ::Messaging::ExceptionHolder * excep_holder,
+ const char* func);
+
+ /// Worker thread for asynchronous invocations
+ class asynch_foo_generator : public virtual ACE_Task_Base
+ {
+ public:
+ asynch_foo_generator (::Hello::AMI_MyFoo_ptr my_foo_ami);
+
+ virtual int svc (void);
+
+ private:
+ ::Hello::AMI_MyFoo_var my_foo_ami_;
+ };
+
+ /// Worker thread for synchronous invocations
+ class synch_foo_generator : public virtual ACE_Task_Base
+ {
+ public:
+ synch_foo_generator (::Hello::MyFoo_ptr my_foo_ami);
+
+ virtual int svc (void);
+
+ private:
+ ::Hello::MyFoo_var my_foo_ami_;
+ };
+
+ class MyFoo_callback_exec_i
+ : public virtual ::Hello::CCM_AMI_MyFooCallback,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ MyFoo_callback_exec_i (void);
+ virtual ~MyFoo_callback_exec_i (void);
+
+ virtual void foo (::CORBA::Long ami_return_val, const char * answer);
+
+ virtual void foo_excep (::CCM_AMI::ExceptionHolder_ptr excep_holder);
+
+ // Hello Reply Handler
+ virtual void hello (::CORBA::Long answer);
+
+ virtual void hello_excep (::CCM_AMI::ExceptionHolder_ptr excep_holder);
+
+ // GET rw_attrib Reply Handler
+ virtual void get_rw_attrib (
+ ::CORBA::Short ami_return_val);
+ virtual void get_rw_attrib_excep (
+ ::CCM_AMI::ExceptionHolder_ptr excep_holder);
+
+ // SET rw_attrib Reply Handler
+ virtual void set_rw_attrib (void);
+ virtual void set_rw_attrib_excep (
+ ::CCM_AMI::ExceptionHolder_ptr excep_holder);
+
+ // ro_attrib Reply Handler
+ virtual void get_ro_attrib (
+ ::CORBA::Short ami_return_val);
+ virtual void get_ro_attrib_excep (
+ ::CCM_AMI::ExceptionHolder_ptr excep_holder);
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Hello::CCM_Sender_Context_var context_;
+ MyFoo_callback_exec_i* global_foo_callback_;
+ };
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_AMI_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp
new file mode 100644
index 00000000000..519c4bbabdc
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/Plan.cdp
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:DeploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>6D382DAE-9024-4C4D-B91B-A0F9176AFACF</UUID>
+
+ <implementation xmi:id="Hello_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact"/>
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact"/>
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact"/>
+ <artifact xmi:idref="Hello_Sender_SvntArtifact"/>
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.SenderArtifacts.Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.SenderArtifacts.Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_AMIHomeImplementation">
+ <name>Hello_AMIHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_AMI_ExecArtifact"/>
+ <artifact xmi:idref="Hello_AMI_SvntArtifact"/>
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_MyFoo_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.AMIArtifacts.AMI_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_MyFoo_Connector_The_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello.ImplementationArtifacts.AMIArtifacts.AMI_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Hello.ComponentImplementations.HelloImplementation.Hello.Receiver">
+ <name>Hello.ComponentImplementations.HelloImplementation.Hello.Receiver</name>
+ <node>Receiver</node>
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation"/>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello.ComponentImplementations.HelloImplementation.Hello.Sender">
+ <name>Hello.ComponentImplementations.HelloImplementation.Hello.Sender</name>
+ <node>Sender</node>
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation"/>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello.ComponentImplementations.HelloImplementation.Hello.AMI">
+ <name>Hello.ComponentImplementations.HelloImplementation.Hello.AMI</name>
+ <node>Sender</node>
+ <source/>
+ <implementation xmi:idref="Hello_AMIHomeImplementation"/>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>AMI.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>run_asynch_foo_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>sendc_run_my_foo</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Sender" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>The_Port_sendc_run</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.AMI" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>do_foo_connection</name>
+ <internalEndpoint>
+ <portName>do_my_foo</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Receiver" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>The_Port_run</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.AMI" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>synch_foo_connection</name>
+ <internalEndpoint>
+ <portName>do_my_foo</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Receiver" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>run_my_foo</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello.ComponentImplementations.HelloImplementation.Hello.Sender" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Hello_AMI_SvntArtifact">
+ <name>Hello.ImplementationArtifacts.AMIArtifacts.AMI_svnt</name>
+ <source/>
+ <node/>
+ <location>Hello_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_MyFoo_Connector_The_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact xmi:id="Hello_AMI_ExecArtifact">
+ <name>Hello.ImplementationArtifacts.AMIArtifacts.AMI_exec</name>
+ <source/>
+ <node/>
+ <location>Hello_conn</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_MyFoo_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Hello_Receiver_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello.ImplementationArtifacts.ReceiverArtifacts.Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Hello_Receiver_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello.ImplementationArtifacts.SenderArtifacts.Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Hello_Sender_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello.ImplementationArtifacts.SenderArtifacts.Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Hello_Sender_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_AMI_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl
new file mode 100755
index 00000000000..766e82d9590
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/examples/Hello/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 3;
+@ports = ( 60000, 60001 );
+@iorbases = ( "Sender.ior", "Receiver.ior", "AMI.ior" );
+@iorfiles = 0;
+@nodenames = ( "Sender", "Receiver" );
+
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (90);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/AMI4CCM_IDLTest.mpc b/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/AMI4CCM_IDLTest.mpc
new file mode 100644
index 00000000000..e63733f3c40
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/AMI4CCM_IDLTest.mpc
@@ -0,0 +1,198 @@
+// $Id$
+
+project(AMI4CCM_IDL_Test_idl_gen) : componentidldefaults, ami, ami4ccm_stub {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_STUB_Export \
+ -Wb,stub_export_include=Hello_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SKEL_Export \
+ -Wb,skel_export_include=Hello_skel_export.h \
+ -Wb,conn_export_macro=HELLO_CONN_Export \
+ -Wb,conn_export_include=Hello_conn_export.h \
+ -Wb,exec_export_macro=HELLO_EXEC_Export \
+ -Wb,exec_export_include=Hello_exec_export.h \
+ -I.. -GM -Gxhcn
+ idlflags -= -Gsv
+
+ IDL_Files {
+ Hello.idl
+ }
+}
+
+project(AMI4CCM_IDL_Test_lem_gen) : ciaoidldefaults {
+ after += AMI4CCM_IDL_Test_idl_gen
+ custom_only = 1
+ idlflags += -Wb,export_macro=HELLO_LEM_STUB_Export \
+ -Wb,export_include=Hello_lem_stub_export.h \
+ -I.. -SS -Gxhst
+
+ IDL_Files {
+ HelloE.idl
+ }
+}
+
+project(AMI4CCM_IDL_Test_lema_gen) : ciaoidldefaults {
+ after += AMI4CCM_IDL_Test_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_STUB_Export \
+ -Wb,stub_export_include=Hello_stub_export.h \
+ -Wb,conn_export_macro=HELLO_CONN_Export \
+ -Wb,conn_export_include=Hello_conn_export.h \
+ -Wb,svnt_export_macro=HELLO_SVNT_Export \
+ -Wb,svnt_export_include=Hello_svnt_export.h \
+ -Wb,skel_export_macro=HELLO_SKEL_Export \
+ -Wb,skel_export_include=Hello_skel_export.h \
+ -I.. -Gsv -Gcn -Glem -GC -Gxhst -Gxhsv
+
+ IDL_Files {
+ HelloA.idl
+ }
+}
+
+project(AMI4CCM_IDL_Test_lemae_gen) : ciaoidldefaults {
+ after += AMI4CCM_IDL_Test_lema_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_lem_stub_export.h \
+ -I.. -SS
+
+ IDL_Files {
+ HelloAE.idl
+ }
+}
+
+project(AMI4CCM_IDL_Test_stub) : ccm_stub, ami, ami4ccm_stub {
+ after += AMI4CCM_IDL_Test_lem_gen AMI4CCM_IDL_Test_lema_gen
+ libs +=
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ sharedname = Hello_stub
+ dynamicflags = HELLO_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloC.cpp
+ HelloAC.cpp
+ }
+
+ Header_Files {
+ HelloC.h
+ Hello_stub_export.h
+}
+
+ Inline_Files {
+ HelloC.inl
+ }
+}
+
+project(AMI4CCM_IDL_Test_skel) : ciao_executor, ami, ami4ccm_servant {
+ after += AMI4CCM_IDL_Test_stub AMI4CCM_IDL_Test_exec
+ sharedname = Hello_skel
+ libs += Hello_stub
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ dynamicflags = HELLO_SKEL_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloS.cpp
+ HelloAS.cpp
+ }
+
+ Header_Files {
+ HelloS.h
+ HelloAS.h
+ Hello_skel_export.h
+ }
+
+ Inline_Files {
+ HelloS.inl
+ HelloAS.inl
+ }
+}
+
+project(AMI4CCM_IDL_Test_lem_stub) : ccm_executor, ami, ami4ccm_lem_stub {
+ after += AMI4CCM_IDL_Test_lem_gen AMI4CCM_IDL_Test_stub AMI4CCM_IDL_Test_lemae_gen AMI4CCM_IDL_Test_skel
+ libs += Hello_stub Hello_skel
+ libout = ../lib
+ libpaths += ../lib
+ includes += ..
+
+ sharedname = Hello_lem_stub
+ dynamicflags = HELLO_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloEC.cpp
+ HelloAEC.cpp
+ }
+
+ Header_Files {
+ HelloEC.h
+ Hello_lem_stub_export.h
+}
+
+ Inline_Files {
+ HelloEC.inl
+ }
+}
+
+project(AMI4CCM_IDL_Test_conn) : ciao_executor, ami, ami4ccm_lem_stub {
+ after += AMI4CCM_IDL_Test_lem_stub Hello_Base_AMI_stub AMI4CCM_IDL_Test_skel AMI4CCM_IDL_Test_lema_gen AMI4CCM_IDL_Test_lemae_gen
+// requires += dummy_label
+ sharedname = Hello_conn
+ libs += Hello_stub Hello_skel Hello_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_CONN_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloA_conn.cpp
+ }
+
+ Header_Files {
+ HelloA_conn.h
+ HelloA_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(AMI4CCM_IDL_Test_svnt) : ciao_servant, ami, ami4ccm_servant {
+// requires += dummy_label
+ after += AMI4CCM_IDL_Test_lem_stub Hello_Base_AMI_stub AMI4CCM_IDL_Test_skel AMI4CCM_IDL_Test_lema_gen AMI4CCM_IDL_Test_lemae_gen AMI4CCM_IDL_Test_conn
+ sharedname = Hello_svnt
+ libs += Hello_stub Hello_skel Hello_lem_stub Hello_conn
+ libpaths += ../lib
+ libout = ../lib
+ dynamicflags = HELLO_SVNT_BUILD_DLL
+ includes += ..
+ IDL_Files {
+ }
+
+ Source_Files {
+ HelloA_svnt.cpp
+ }
+
+ Header_Files {
+ HelloA_svnt.h
+ HelloA_svnt_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/Hello.idl b/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/Hello.idl
new file mode 100644
index 00000000000..9e2a46a130f
--- /dev/null
+++ b/modules/CIAO/connectors/ami4ccm/tests/IDL_Test/Hello.idl
@@ -0,0 +1,50 @@
+// $Id$
+
+#ifndef HELLO_IDL
+#define HELLO_IDL
+
+#pragma ciao lem "HelloE.idl"
+#pragma ciao ami4ccm interface "Hello::MyFoo"
+#pragma ciao ami4ccm interface "Hello::MyDerived"
+#pragma ciao ami4ccm interface "Foo::MyFoo"
+
+module Hello
+{
+ exception InternalError
+ {
+ long id;
+ string error_string;
+ };
+
+ interface MyFoo
+ {
+ long foo (in string in_str, out string answer)
+ raises (InternalError);
+ void hello (out long answer)
+ raises (InternalError);
+
+ attribute short rw_attrib
+ getraises (InternalError)
+ setraises (InternalError);
+
+ readonly attribute short ro_attrib
+ raises (InternalError);
+ };
+
+ interface MyDerived : MyFoo
+ {
+ long do_someting (in string str);
+ attribute long my_attribute;
+ };
+};
+
+module Foo
+{
+ interface MyFoo
+ {
+ long myop (in string str);
+ };
+};
+
+#endif
+
diff --git a/modules/CIAO/connectors/dds4ccm/NDDS_DDS4CCM_CIAO.mwc b/modules/CIAO/connectors/dds4ccm/NDDS_DDS4CCM_CIAO.mwc
new file mode 100644
index 00000000000..b21b3ef41f9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/NDDS_DDS4CCM_CIAO.mwc
@@ -0,0 +1,19 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+ $(TAO_ROOT)/TAO_IDL/TAO_IDL_ACE.mwc
+ $(TAO_ROOT)/tao/tao.mpc
+ $(TAO_ROOT)/tao/AnyTypeCode.mpc
+ $(TAO_ROOT)/tao/CodecFactory.mpc
+ $(TAO_ROOT)/tao/IFR_Client.mpc
+ $(TAO_ROOT)/tao/PI.mpc
+ $(TAO_ROOT)/tao/Valuetype.mpc
+ $(CIAO_ROOT)/ccm/CCM_stub.mpc
+ $(CIAO_ROOT)/ccm/CCM_lem_stub.mpc
+ $(CIAO_ROOT)/ciao/Logger/Logger.mpc
+ $(CIAO_ROOT)/connectors/dds4ccm/idl/dds4ccm_stub.mpc
+ $(CIAO_ROOT)/connectors/dds4ccm/idl/dds4ccm_lem_stub.mpc
+ $(CIAO_ROOT)/connectors/dds4ccm/impl/logger
+ $(CIAO_ROOT)/connectors/dds4ccm/impl/dds
+}
diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf
new file mode 100644
index 00000000000..26e72bcd894
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/09-10-23.pdf
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf
new file mode 100644
index 00000000000..69c23485067
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/09-10-25.pdf
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf b/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf
new file mode 100644
index 00000000000..038b2aa1e20
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/09-10-27.pdf
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml b/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml
new file mode 100644
index 00000000000..3c2fe44e581
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/DDS_DefaultQoS.xml
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dds xmlns="http://www.omg.org/dds/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="file:DDS_QoSProfile.xsd">
+<qos_profile name="DDS DefaultQosProfile">
+ <datareader_qos>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <deadline>
+ <period>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </period>
+ </deadline>
+ <latency_budget>
+ <duration>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </duration>
+ </latency_budget>
+ <liveliness>
+ <kind>AUTOMATIC_LIVELINESS_QOS</kind>
+ <lease_duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </lease_duration>
+ </liveliness>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>0</sec>
+ <nanosec>100000000</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <destination_order>
+ <kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
+ </destination_order>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <resource_limits>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>LENGTH_UNLIMITED</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <user_data>
+ <value></value>
+ </user_data>
+ <ownership>
+ <kind>SHARED_OWNERSHIP_QOS</kind>
+ </ownership>
+ <time_based_filter>
+ <minimum_separation>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </minimum_separation>
+ </time_based_filter>
+ <reader_data_lifecycle>
+ <autopurge_nowriter_samples_delay>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </autopurge_nowriter_samples_delay>
+ <autopurge_disposed_samples_delay>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </autopurge_disposed_samples_delay>
+ </reader_data_lifecycle>
+ </datareader_qos>
+ <datawriter_qos>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <durability_service>
+ <service_cleanup_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </service_cleanup_delay>
+ <history_kind>KEEP_LAST_HISTORY_QOS</history_kind>
+ <history_depth>1</history_depth>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>LENGTH_UNLIMITED</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </durability_service>
+ <deadline>
+ <period>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </period>
+ </deadline>
+ <latency_budget>
+ <duration>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </duration>
+ </latency_budget>
+ <liveliness>
+ <kind>AUTOMATIC_LIVELINESS_QOS</kind>
+ <lease_duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </lease_duration>
+ </liveliness>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>0</sec>
+ <nanosec>100000000</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <destination_order>
+ <kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
+ </destination_order>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <resource_limits>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>LENGTH_UNLIMITED</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <transport_priority>
+ <value>0</value>
+ </transport_priority>
+ <lifespan>
+ <duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </duration>
+ </lifespan>
+ <user_data>
+ <value></value>
+ </user_data>
+ <ownership>
+ <kind>SHARED_OWNERSHIP_QOS</kind>
+ </ownership>
+ <ownership_strength>
+ <value>0</value>
+ </ownership_strength>
+ <writer_data_lifecycle>
+ <autodispose_unregistered_instances>true</autodispose_unregistered_instances>
+ </writer_data_lifecycle>
+ </datawriter_qos>
+ <domainparticipant_qos>
+ <user_data>
+ <value></value>
+ </user_data>
+ <entity_factory>
+ <autoenable_created_entities>true</autoenable_created_entities>
+ </entity_factory>
+ </domainparticipant_qos>
+ <subscriber_qos>
+ <presentation>
+ <access_scope>INSTANCE_PRESENTATION_QOS</access_scope>
+ <coherent_access>false</coherent_access>
+ <ordered_access>false</ordered_access>
+ </presentation>
+ <partition>
+ <name></name>
+ </partition>
+ <group_data>
+ <value></value>
+ </group_data>
+ <entity_factory>
+ <autoenable_created_entities>true</autoenable_created_entities>
+ </entity_factory>
+ </subscriber_qos>
+ <publisher_qos>
+ <presentation>
+ <access_scope>INSTANCE_PRESENTATION_QOS</access_scope>
+ <coherent_access>false</coherent_access>
+ <ordered_access>false</ordered_access>
+ </presentation>
+ <partition>
+ <name></name>
+ </partition>
+ <group_data>
+ <value></value>
+ </group_data>
+ <entity_factory>
+ <autoenable_created_entities>true</autoenable_created_entities>
+ </entity_factory>
+ </publisher_qos>
+ <topic_qos>
+ <topic_data>
+ <value></value>
+ </topic_data>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <durability_service>
+ <service_cleanup_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </service_cleanup_delay>
+ <history_kind>KEEP_LAST_HISTORY_QOS</history_kind>
+ <history_depth>1</history_depth>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>LENGTH_UNLIMITED</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </durability_service>
+ <deadline>
+ <period>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </period>
+ </deadline>
+ <latency_budget>
+ <duration>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </duration>
+ </latency_budget>
+ <liveliness>
+ <kind>AUTOMATIC_LIVELINESS_QOS</kind>
+ <lease_duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </lease_duration>
+ </liveliness>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>0</sec>
+ <nanosec>100000000</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <destination_order>
+ <kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
+ </destination_order>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <resource_limits>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>LENGTH_UNLIMITED</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <transport_priority>
+ <value>0</value>
+ </transport_priority>
+ <lifespan>
+ <duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </duration>
+ </lifespan>
+ <ownership>
+ <kind>SHARED_OWNERSHIP_QOS</kind>
+ </ownership>
+ </topic_qos>
+</qos_profile>
+</dds>
diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd b/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd
new file mode 100644
index 00000000000..62a3a4731cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/DDS_QoSProfile.xsd
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.omg.org/dds/" xmlns:dds="http://www.omg.org/dds/" targetNamespace="http://www.omg.org/dds/" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <!-- definition of simple types -->
+ <xs:simpleType name="elementName">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([a-zA-Z0-9 ])+"></xs:pattern>
+ <!-- <xs:pattern value="^((::)?([a-zA-Z0-9])+(::([a-zA-Z0-9])+)*)$"/> -->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="topicNameFilter">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([a-zA-Z0-9])+"></xs:pattern>
+ <!-- <xs:pattern value="^((::)?([a-zA-Z0-9])+(::([a-zA-Z0-9])+)*)$"/> -->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="destinationOrderKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS"></xs:enumeration>
+ <xs:enumeration value="BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="durabilityKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="VOLATILE_DURABILITY_QOS"></xs:enumeration>
+ <xs:enumeration value="TRANSIENT_LOCAL_DURABILITY_QOS"></xs:enumeration>
+ <xs:enumeration value="TRANSIENT_DURABILITY_QOS"></xs:enumeration>
+ <xs:enumeration value="PERSISTENT_DURABILITY_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="historyKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="KEEP_LAST_HISTORY_QOS"></xs:enumeration>
+ <xs:enumeration value="KEEP_ALL_HISTORY_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="livelinessKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="AUTOMATIC_LIVELINESS_QOS"></xs:enumeration>
+ <xs:enumeration value="MANUAL_BY_PARTICIPANT_LIVELINESS_QOS"></xs:enumeration>
+ <xs:enumeration value="MANUAL_BY_TOPIC_LIVELINESS_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="presentationAccessScopeKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="INSTANCE_PRESENTATION_QOS"></xs:enumeration>
+ <xs:enumeration value="TOPIC_PRESENTATION_QOS"></xs:enumeration>
+ <xs:enumeration value="GROUP_PRESENTATION_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="reliabilityKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="BEST_EFFORT_RELIABILITY_QOS"></xs:enumeration>
+ <xs:enumeration value="RELIABLE_RELIABILITY_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ownershipKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="SHARED_OWNERSHIP_QOS"></xs:enumeration>
+ <xs:enumeration value="EXCLUSIVE_OWNERSHIP_QOS"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="nonNegativeInteger_UNLIMITED">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(LENGTH_UNLIMITED|([0-9])*)?"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="nonNegativeInteger_Duration_SEC">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(DURATION_INFINITY|DURATION_INFINITE_SEC|([0-9])*)?"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="nonNegativeInteger_Duration_NSEC">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(DURATION_INFINITY|DURATION_INFINITE_NSEC|([0-9])*)?"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="positiveInteger_UNLIMITED">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(LENGTH_UNLIMITED|[1-9]([0-9])*)?"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- definition of named types -->
+ <xs:complexType name="duration">
+ <xs:all>
+ <xs:element name="sec" type="dds:nonNegativeInteger_Duration_SEC" minOccurs="0"></xs:element>
+ <xs:element name="nanosec" type="dds:nonNegativeInteger_Duration_NSEC" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="stringSeq">
+ <xs:sequence>
+ <xs:element name="element" type="xs:string" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="deadlineQosPolicy">
+ <xs:all>
+ <xs:element name="period" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="destinationOrderQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:destinationOrderKind" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="durabilityQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:durabilityKind" default="VOLATILE_DURABILITY_QOS" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="durabilityServiceQosPolicy">
+ <xs:all>
+ <xs:element name="service_cleanup_delay" type="dds:duration" minOccurs="0"></xs:element>
+ <xs:element name="history_kind" type="dds:historyKind" default="KEEP_LAST_HISTORY_QOS" minOccurs="0"></xs:element>
+ <xs:element name="history_depth" type="xs:positiveInteger" minOccurs="0"></xs:element>
+ <xs:element name="max_samples" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ <xs:element name="max_instances" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ <xs:element name="max_samples_per_instance" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="entityFactoryQosPolicy">
+ <xs:all>
+ <xs:element name="autoenable_created_entities" type="xs:boolean" default="true" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="groupDataQosPolicy">
+ <xs:all>
+ <xs:element name="value" type="xs:base64Binary" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="historyQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:historyKind" default="KEEP_LAST_HISTORY_QOS" minOccurs="0"></xs:element>
+ <xs:element name="depth" type="xs:positiveInteger" default="1" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="latencyBudgetQosPolicy">
+ <xs:all>
+ <xs:element name="duration" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="lifespanQosPolicy">
+ <xs:all>
+ <xs:element name="duration" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="livelinessQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:livelinessKind" default="AUTOMATIC_LIVELINESS_QOS" minOccurs="0"></xs:element>
+ <xs:element name="lease_duration" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="ownershipQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:ownershipKind" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="ownershipStrengthQosPolicy">
+ <xs:all>
+ <xs:element name="value" type="xs:nonNegativeInteger" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="partitionQosPolicy">
+ <xs:all>
+ <xs:element name="name" type="dds:stringSeq" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="presentationQosPolicy">
+ <xs:all>
+ <xs:element name="access_scope" type="dds:presentationAccessScopeKind" default="INSTANCE_PRESENTATION_QOS" minOccurs="0"></xs:element>
+ <xs:element name="coherent_access" type="xs:boolean" default="false" minOccurs="0"></xs:element>
+ <xs:element name="ordered_access" type="xs:boolean" default="false" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="readerDataLifecycleQosPolicy">
+ <xs:all>
+ <xs:element name="autopurge_nowriter_samples_delay" type="dds:duration" minOccurs="0"></xs:element>
+ <xs:element name="autopurge_disposed_samples_delay" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="reliabilityQosPolicy">
+ <xs:all>
+ <xs:element name="kind" type="dds:reliabilityKind" minOccurs="0"></xs:element>
+ <xs:element name="max_blocking_time" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="resourceLimitsQosPolicy">
+ <xs:all>
+ <xs:element name="max_samples" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ <xs:element name="max_instances" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ <xs:element name="max_samples_per_instance" type="dds:positiveInteger_UNLIMITED" minOccurs="0"></xs:element>
+ <xs:element name="initial_samples" type="xs:positiveInteger" minOccurs="0"></xs:element>
+ <xs:element name="initial_instances" type="xs:positiveInteger" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="timeBasedFilterQosPolicy">
+ <xs:all>
+ <xs:element name="minimum_separation" type="dds:duration" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="topicDataQosPolicy">
+ <xs:all>
+ <xs:element name="value" type="xs:base64Binary" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="transportPriorityQosPolicy">
+ <xs:all>
+ <xs:element name="value" type="xs:nonNegativeInteger" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <!-- userDataQosPolicy uses base64Binary encoding:
+ * Allowed characters are all letters: a-z, A-Z, digits: 0-9, the characters: '+' '/' '=' and ' '
+ +,/.=,the plus sign (+), the slash (/), the equals sign (=), and XML whitespace characters.
+ * The number of nonwhitespace characters must be divisible by four.
+ * Equals signs, which are used as padding, can only appear at the end of the value,
+ and there can be zero, one, or two of them.
+ * If there are two equals signs, they must be preceded by one of the following characters:
+ A, Q, g, w.
+ * If there is only one equals sign, it must be preceded by one of the following characters: A, E, I, M, Q, U, Y, c, g, k, o, s, w, 0, 4, 8.
+ -->
+ <xs:complexType name="userDataQosPolicy">
+ <xs:all>
+ <xs:element name="value" type="xs:base64Binary" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:complexType name="writerDataLifecycleQosPolicy">
+ <xs:all>
+ <xs:element name="autodispose_unregistered_instances" type="xs:boolean" default="true" minOccurs="0"></xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="domainparticipantQos">
+ <xs:all>
+ <xs:element name="user_data" type="dds:userDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="entity_factory" type="dds:entityFactoryQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="publisherQos">
+ <xs:all>
+ <xs:element name="presentation" type="dds:presentationQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="partition" type="dds:partitionQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="group_data" type="dds:groupDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="entity_factory" type="dds:entityFactoryQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="subscriberQos">
+ <xs:all>
+ <xs:element name="presentation" type="dds:presentationQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="partition" type="dds:partitionQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="group_data" type="dds:groupDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="entity_factory" type="dds:entityFactoryQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="topicQos">
+ <xs:all>
+ <xs:element name="topic_data" type="dds:topicDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="durability" type="dds:durabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="durability_service" type="dds:durabilityServiceQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="deadline" type="dds:deadlineQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="latency_budget" type="dds:latencyBudgetQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="liveliness" type="dds:livelinessQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="reliability" type="dds:reliabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="destination_order" type="dds:destinationOrderQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="history" type="dds:historyQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="resource_limits" type="dds:resourceLimitsQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="transport_priority" type="dds:transportPriorityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="lifespan" type="dds:lifespanQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="ownership" type="dds:ownershipQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="datareaderQos">
+ <xs:all>
+ <xs:element name="durability" type="dds:durabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="deadline" type="dds:deadlineQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="latency_budget" type="dds:latencyBudgetQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="liveliness" type="dds:livelinessQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="reliability" type="dds:reliabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="destination_order" type="dds:destinationOrderQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="history" type="dds:historyQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="resource_limits" type="dds:resourceLimitsQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="user_data" type="dds:userDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="ownership" type="dds:ownershipQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="time_based_filter" type="dds:timeBasedFilterQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="reader_data_lifecycle" type="dds:readerDataLifecycleQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="datawriterQos">
+ <xs:all>
+ <xs:element name="durability" type="dds:durabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="durability_service" type="dds:durabilityServiceQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="deadline" type="dds:deadlineQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="latency_budget" type="dds:latencyBudgetQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="liveliness" type="dds:livelinessQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="reliability" type="dds:reliabilityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="destination_order" type="dds:destinationOrderQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="history" type="dds:historyQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="resource_limits" type="dds:resourceLimitsQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="transport_priority" type="dds:transportPriorityQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="lifespan" type="dds:lifespanQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="user_data" type="dds:userDataQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="ownership" type="dds:ownershipQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="ownership_strength" type="dds:ownershipStrengthQosPolicy" minOccurs="0"></xs:element>
+ <xs:element name="writer_data_lifecycle" type="dds:writerDataLifecycleQosPolicy" minOccurs="0"></xs:element>
+ </xs:all>
+ <xs:attribute name="name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ <xs:attribute name="topic_filter" type="dds:topicNameFilter"></xs:attribute>
+ </xs:complexType>
+
+ <xs:complexType name="domainparticipantQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:domainparticipantQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="topicQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:topicQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="publisherQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:publisherQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="subscriberQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:subscriberQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="datawriterQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:datawriterQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="datareaderQosProfile">
+ <xs:complexContent>
+ <xs:restriction base="dds:datareaderQos">
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="qosProfile">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="datareader_qos" type="dds:datareaderQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ <xs:element name="datawriter_qos" type="dds:datawriterQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ <xs:element name="topic_qos" type="dds:topicQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ <xs:element name="domainparticipant_qos" type="dds:domainparticipantQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ <xs:element name="publisher_qos" type="dds:publisherQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ <xs:element name="subscriber_qos" type="dds:subscriberQos" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" type="dds:elementName" use="required"></xs:attribute>
+ <xs:attribute name="base_name" type="dds:elementName"></xs:attribute>
+ </xs:complexType>
+
+ <xs:element name="dds_ccm">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="qos_profile" type="dds:qosProfile" minOccurs="0" maxOccurs="unbounded"></xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml b/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml
new file mode 100644
index 00000000000..9fec3ed3ac1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/DDSforCCM-meta.uml
@@ -0,0 +1,567 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_DWFT4BINEd2MuIEcqg0Vsw" name="DDSforCCM-meta">
+ <ownedComment xmi:id="_H7_O8BxIEd2uaZhm61RBnw" annotatedElement="_N9hMoBINEd2MuIEcqg0Vsw">
+ <body>Can be an interface which depends on the template parameters. Might be given in form of an interface template.</body>
+ </ownedComment>
+ <packageImport xmi:id="_DWFT4RINEd2MuIEcqg0Vsw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_EBWecBINEd2MuIEcqg0Vsw" name="ComponentDef">
+ <generalization xmi:id="_3dajwBuDEd2uaZhm61RBnw" general="_N9hMoBINEd2MuIEcqg0Vsw"/>
+ <ownedAttribute xmi:id="_nK5bEBINEd2MuIEcqg0Vsw" name="supports" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_nK1JoBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nK-TkBINEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nK9sgBINEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nzMKIBINEd2MuIEcqg0Vsw" name="facet" type="_PAvkMBINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_nzGqkBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nzN_URINEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nzN_UBINEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_oeIkkBINEd2MuIEcqg0Vsw" name="receptacle" type="_MSZHkBINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_oeETIBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oeLA0RINEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oeLA0BINEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_EX4nwBIQEd2MuIEcqg0Vsw" name="attributes" type="_FhPj4BINEd2MuIEcqg0Vsw" isUnique="false" association="_EXzIMBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EX-uYRIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EX-uYBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_FohJMBIQEd2MuIEcqg0Vsw" name="publishes" type="_G6DJ4BINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_FocQsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FokMgRIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FokMgBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_GLt84BIQEd2MuIEcqg0Vsw" name="emits" type="_IVOucBINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_GLnPMBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GLzccBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GLy1YBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_GkPKkBIQEd2MuIEcqg0Vsw" name="consumes" type="_JooQABINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_GkGnsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GkS08BIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GkSN4BIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_KZ3i4BIREd2MuIEcqg0Vsw" name="extendedPortDef" type="_q_iqABIQEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_KZrVoBIREd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KZ-3oBIREd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KZ-QkBIREd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Jvkh8BuDEd2uaZhm61RBnw" name="sinks" type="_DUacYBuDEd2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_JvJEIBuDEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JvtE0BuDEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JvsdwBuDEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_NbNGMBuDEd2uaZhm61RBnw" name="sources" type="_EcNx8BuDEd2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_Na1SwBuDEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NbZ6gBuDEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbZTcBuDEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FhPj4BINEd2MuIEcqg0Vsw" name="AttributeDef">
+ <ownedAttribute xmi:id="_46FHsBIPEd2MuIEcqg0Vsw" name="is_readonly" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_G6DJ4BINEd2MuIEcqg0Vsw" name="PublishesDef">
+ <generalization xmi:id="_UPWPsBIQEd2MuIEcqg0Vsw" general="_ZUvjkBINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IVOucBINEd2MuIEcqg0Vsw" name="EmitsDef">
+ <generalization xmi:id="_T_ensBIQEd2MuIEcqg0Vsw" general="_ZUvjkBINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JooQABINEd2MuIEcqg0Vsw" name="ConsumesDef">
+ <generalization xmi:id="_Th4FsBIQEd2MuIEcqg0Vsw" general="_ZUvjkBINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_MSZHkBINEd2MuIEcqg0Vsw" name="UsesDef">
+ <ownedAttribute xmi:id="_94osYBIPEd2MuIEcqg0Vsw" name="is_multiple" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_TbxLwBISEd2MuIEcqg0Vsw" name="usesIntf" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_Tbh7MBISEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Tb3SYBISEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tb2rUBISEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_9Y_mwBxGEd2uaZhm61RBnw" name="interfaceDef" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_9YZJ0BxGEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9ZGUcBxGEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9ZFtYBxGEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_N9hMoBINEd2MuIEcqg0Vsw" name="InterfaceDef">
+ <ownedAttribute xmi:id="_lVLzEBuDEd2uaZhm61RBnw" name="isAbstract" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_oZw-YBuDEd2uaZhm61RBnw" name="isLocal" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_-OeBkBwXEd2uaZhm61RBnw" name="derived" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_-OCjwBwXEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-Oi6ERwXEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-Oi6EBwXEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PAvkMBINEd2MuIEcqg0Vsw" name="ProvidesDef">
+ <ownedAttribute xmi:id="_UFjIkBISEd2MuIEcqg0Vsw" name="providesIntf" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_UFRbwBISEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UFmy8BISEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UFmL4BISEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_9INYwBxGEd2uaZhm61RBnw" name="interfaceDef" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_9Hr0UBxGEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9ITfYBxGEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9IS4UBxGEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RCTMQBINEd2MuIEcqg0Vsw" name="OperationDef"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Sz6T0BINEd2MuIEcqg0Vsw" name="FactoryDef">
+ <generalization xmi:id="_gFZQoBIQEd2MuIEcqg0Vsw" general="_RCTMQBINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TvgZYBINEd2MuIEcqg0Vsw" name="FinderDef">
+ <generalization xmi:id="_gfGxIBIQEd2MuIEcqg0Vsw" general="_RCTMQBINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_VZ3pcBINEd2MuIEcqg0Vsw" name="HomeDef">
+ <ownedAttribute xmi:id="_Z-oGsBIQEd2MuIEcqg0Vsw" name="primary_key" type="_XDOz8BINEd2MuIEcqg0Vsw" isUnique="false" association="_Z-gK4BIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Z-s_MBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Z-sYIBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_c4qO4BIQEd2MuIEcqg0Vsw" name="manages" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_c4hsABIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c4tSMBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c4srIBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iFtikBIQEd2MuIEcqg0Vsw" name="finders" type="_TvgZYBINEd2MuIEcqg0Vsw" isUnique="false" association="_iFk_sBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iFwl4RIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iFwl4BIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iix5EBIQEd2MuIEcqg0Vsw" name="factories" type="_Sz6T0BINEd2MuIEcqg0Vsw" isUnique="false" association="_iikdsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ii08YRIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ii08YBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_XDOz8BINEd2MuIEcqg0Vsw" name="ValueDef"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_YKWNABINEd2MuIEcqg0Vsw" name="EventDef">
+ <generalization xmi:id="_YvAR4BIQEd2MuIEcqg0Vsw" general="_XDOz8BINEd2MuIEcqg0Vsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZUvjkBINEd2MuIEcqg0Vsw" name="EventPortDef">
+ <ownedAttribute xmi:id="_XnepIBIQEd2MuIEcqg0Vsw" name="type" type="_YKWNABINEd2MuIEcqg0Vsw" isUnique="false" association="_XnWtUBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XnhFYBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XngeUBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_nK1JoBINEd2MuIEcqg0Vsw" name="Association_ComponentDef_InterfaceDef" memberEnd="_nK5bEBINEd2MuIEcqg0Vsw _nK-TkRINEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_nK-TkRINEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" aggregation="composite" association="_nK1JoBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nLAv0BINEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nLAv0RINEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_nzGqkBINEd2MuIEcqg0Vsw" name="Association_ComponentDef_ProvidesDef" memberEnd="_nzMKIBINEd2MuIEcqg0Vsw _nzOmYBINEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_nzOmYBINEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_nzGqkBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nzSQwBINEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nzS30BINEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_oeETIBINEd2MuIEcqg0Vsw" name="Association_ComponentDef_UsesDef" memberEnd="_oeIkkBINEd2MuIEcqg0Vsw _oeLn4BINEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_oeLn4BINEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_oeETIBINEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oeNdEBINEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oeOEIBINEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EXzIMBIQEd2MuIEcqg0Vsw" name="Association_ComponentDef_AttributeDef" memberEnd="_EX4nwBIQEd2MuIEcqg0Vsw _EX_VcBIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_EX_VcBIQEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_EXzIMBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EYBxsBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EYCYwBIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_FocQsBIQEd2MuIEcqg0Vsw" name="Association_ComponentDef_PublishesDef" memberEnd="_FohJMBIQEd2MuIEcqg0Vsw _FokzkBIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_FokzkBIQEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_FocQsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FonP0BIQEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fon24BIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_GLnPMBIQEd2MuIEcqg0Vsw" name="Association_ComponentDef_EmitsDef" memberEnd="_GLt84BIQEd2MuIEcqg0Vsw _GLzccRIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_GLzccRIQEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_GLnPMBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GL14sBIQEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GL2fwBIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_GkGnsBIQEd2MuIEcqg0Vsw" name="Association_ComponentDef_ConsumesDef" memberEnd="_GkPKkBIQEd2MuIEcqg0Vsw _GkS08RIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_GkS08RIQEd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_GkGnsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GkVRMBIQEd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GkV4QBIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_XnWtUBIQEd2MuIEcqg0Vsw" name="Association_EventPortDef_EventDef" memberEnd="_XnepIBIQEd2MuIEcqg0Vsw _XnhscBIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_XnhscBIQEd2MuIEcqg0Vsw" name="eventPortDef" type="_ZUvjkBINEd2MuIEcqg0Vsw" isUnique="false" association="_XnWtUBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XnkIsBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XnkIsRIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Z-gK4BIQEd2MuIEcqg0Vsw" name="Association_HomeDef_ValueDef" memberEnd="_Z-oGsBIQEd2MuIEcqg0Vsw _Z-s_MRIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_Z-s_MRIQEd2MuIEcqg0Vsw" name="homeDef" type="_VZ3pcBINEd2MuIEcqg0Vsw" isUnique="false" association="_Z-gK4BIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Z-wCgBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Z-wCgRIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_c4hsABIQEd2MuIEcqg0Vsw" name="Association_HomeDef_ComponentDef" memberEnd="_c4qO4BIQEd2MuIEcqg0Vsw _c4tSMRIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_c4tSMRIQEd2MuIEcqg0Vsw" name="homeDef" type="_VZ3pcBINEd2MuIEcqg0Vsw" isUnique="false" association="_c4hsABIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c4wVgBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c4w8kBIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_iFk_sBIQEd2MuIEcqg0Vsw" name="Association_HomeDef_Class_0" memberEnd="_iFtikBIQEd2MuIEcqg0Vsw _iFxM8BIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_iFxM8BIQEd2MuIEcqg0Vsw" name="homeDef" type="_VZ3pcBINEd2MuIEcqg0Vsw" isUnique="false" association="_iFk_sBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iF0QQBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iF0QQRIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_iikdsBIQEd2MuIEcqg0Vsw" name="Association_HomeDef_FinderDef" memberEnd="_iix5EBIQEd2MuIEcqg0Vsw _ii1jcBIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_ii1jcBIQEd2MuIEcqg0Vsw" name="homeDef" type="_VZ3pcBINEd2MuIEcqg0Vsw" isUnique="false" association="_iikdsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ii4mwBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ii5N0BIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ntaK4BIQEd2MuIEcqg0Vsw" name="PortKindDef">
+ <ownedAttribute xmi:id="_wUjm4BIQEd2MuIEcqg0Vsw" name="providesDef" type="_PAvkMBINEd2MuIEcqg0Vsw" isUnique="false" association="_wUYAsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUmqMBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUmDIBIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wz84oBIQEd2MuIEcqg0Vsw" name="usesDef" type="_MSZHkBINEd2MuIEcqg0Vsw" isUnique="false" association="_wzu2MBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wz_U4RIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wz_U4BIQEd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_q_iqABIQEd2MuIEcqg0Vsw" name="ExtendedPortDef">
+ <ownedAttribute xmi:id="_Eq6cABIREd2MuIEcqg0Vsw" name="kind" type="_ntaK4BIQEd2MuIEcqg0Vsw" isUnique="false" association="_EqwD8BIREd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Eq_UgBIREd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Eq-tcBIREd2MuIEcqg0Vsw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_cPAqwBwdEd2uaZhm61RBnw" name="templateParams" type="_vCfUsBwZEd2uaZhm61RBnw" isUnique="false" association="_cOnCIBwdEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cPHYcBwdEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cPGxYBwdEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_wUYAsBIQEd2MuIEcqg0Vsw" name="Association_ExtendedPortDef_ProvidesDef" memberEnd="_wUjm4BIQEd2MuIEcqg0Vsw _wUmqMRIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_wUmqMRIQEd2MuIEcqg0Vsw" name="extendedPortDef" type="_ntaK4BIQEd2MuIEcqg0Vsw" isUnique="false" association="_wUYAsBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wUqUkBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wUqUkRIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_wzu2MBIQEd2MuIEcqg0Vsw" name="Association_ExtendedPortDef_UsesDef" memberEnd="_wz84oBIQEd2MuIEcqg0Vsw _wz_78BIQEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_wz_78BIQEd2MuIEcqg0Vsw" name="extendedPortDef" type="_ntaK4BIQEd2MuIEcqg0Vsw" isUnique="false" association="_wzu2MBIQEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w0C_QBIQEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w0DmUBIQEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EqwD8BIREd2MuIEcqg0Vsw" name="Association_ExtendedPortDef_Kind" memberEnd="_Eq6cABIREd2MuIEcqg0Vsw _Eq_UgRIREd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_Eq_UgRIREd2MuIEcqg0Vsw" name="extendedPortDef" type="_q_iqABIQEd2MuIEcqg0Vsw" isUnique="false" association="_EqwD8BIREd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ErCX0BIREd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ErC-4BIREd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_KZrVoBIREd2MuIEcqg0Vsw" name="Association_ComponentDef_ExtendedPortDef" memberEnd="_KZ3i4BIREd2MuIEcqg0Vsw _KZ_esBIREd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_KZ_esBIREd2MuIEcqg0Vsw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_KZrVoBIREd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KaCiABIREd2MuIEcqg0Vsw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KaCiARIREd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Tbh7MBISEd2MuIEcqg0Vsw" name="Association_UsesDef_InterfaceDef" memberEnd="_TbxLwBISEd2MuIEcqg0Vsw _Tb35cBISEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_Tb35cBISEd2MuIEcqg0Vsw" name="usesDef" type="_MSZHkBINEd2MuIEcqg0Vsw" isUnique="false" association="_Tbh7MBISEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Tb7j0BISEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tb7j0RISEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UFRbwBISEd2MuIEcqg0Vsw" name="Association_ProvidesDef_InterfaceDef" memberEnd="_UFjIkBISEd2MuIEcqg0Vsw _UFnaABISEd2MuIEcqg0Vsw">
+ <ownedEnd xmi:id="_UFnaABISEd2MuIEcqg0Vsw" name="providesDef" type="_PAvkMBINEd2MuIEcqg0Vsw" isUnique="false" association="_UFRbwBISEd2MuIEcqg0Vsw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UFrEYBISEd2MuIEcqg0Vsw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UFrrcBISEd2MuIEcqg0Vsw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rLn4cBt3Ed2uaZhm61RBnw" name="D&amp;C">
+ <packagedElement xmi:type="uml:Class" xmi:id="_tvCQYBt3Ed2uaZhm61RBnw" name="Property"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DduasBISEd2MuIEcqg0Vsw" name="ConnectorPackageDescription"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9gJYsBt3Ed2uaZhm61RBnw" name="ConnectorImplementationDescription"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ERYb8Bt4Ed2uaZhm61RBnw" name="ComponentInterfaceDescription">
+ <ownedAttribute xmi:id="_WwFakBw2Ed2uaZhm61RBnw" name="label" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZDEJ0Bw2Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZC_RUBw2Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZDK3gBw2Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ZaGJwBw2Ed2uaZhm61RBnw" name="UUID" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_d0hGoBw2Ed2uaZhm61RBnw" name="specificType" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_h6rDsBw2Ed2uaZhm61RBnw" name="supportedType" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kBci8Bw2Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kBXqcBw2Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kBjQoBw2Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_qMB14Bw2Ed2uaZhm61RBnw" name="idlFile" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0euNsBw2Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0eouIBw2Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0e0UUBw2Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UnBKYBw4Ed2uaZhm61RBnw" name="configProperty" type="_tvCQYBt3Ed2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_Um51oBw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UnJGMBw4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UnIfIBw4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_VFG0kBw4Ed2uaZhm61RBnw" name="property" type="_PYWQoBw5Ed2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_VE9qoBw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VFPXcBw4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VFOwYBw4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_byNlwBw4Ed2uaZhm61RBnw" name="port" type="_k3QUIBw3Ed2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_byEb0Bw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_byX90Bw4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_byXWwBw4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KfIXoBt4Ed2uaZhm61RBnw" name="ConnectorImplementationDescription">
+ <ownedAttribute xmi:id="_YUiBMBt4Ed2uaZhm61RBnw" name="monolithicImplem" type="_N-sOwBt4Ed2uaZhm61RBnw" isUnique="false" aggregation="shared" association="_YUdvwBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_D1gU0KweEd2Ytox-zaOdkw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D1ZnIKweEd2Ytox-zaOdkw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_YzbjsBt4Ed2uaZhm61RBnw" name="configProperty" type="_tvCQYBt3Ed2uaZhm61RBnw" isUnique="false" aggregation="shared" association="_YzXSQBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YzgcMBt4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yzf1IBt4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ZMPFQBt4Ed2uaZhm61RBnw" name="capability" type="_6mgqUBxBEd2uaZhm61RBnw" isUnique="false" aggregation="shared" association="_ZMKMwBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZMUk0Bt4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZMT9wBt4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_baY-4Bt4Ed2uaZhm61RBnw" name="implements" type="_ERYb8Bt4Ed2uaZhm61RBnw" isUnique="false" association="_baUGYBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EoDBgKwdEd2Ytox-zaOdkw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_En9h8KwdEd2Ytox-zaOdkw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_lFtNoBt4Ed2uaZhm61RBnw" name="label" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_oluXwBt4Ed2uaZhm61RBnw" name="UUID" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_6t5hMBxAEd2uaZhm61RBnw" name="monolithicImplementationDescription" type="_N-sOwBt4Ed2uaZhm61RBnw" isUnique="false" association="_6tqQoBxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6uCrIBxAEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6uCEEBxAEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_HJz-MKweEd2Ytox-zaOdkw" name="assemblyImplem" type="_93v88KwdEd2Ytox-zaOdkw" isUnique="false" aggregation="shared" association="_HJhqUKweEd2Ytox-zaOdkw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MQ2wgKweEd2Ytox-zaOdkw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MQxQ8KweEd2Ytox-zaOdkw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_N-sOwBt4Ed2uaZhm61RBnw" name="MonolithicImplementationDescription"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_YUdvwBt4Ed2uaZhm61RBnw" name="Association_ConnectorImplementationDescription_MonolithicImplementationDescription" memberEnd="_YUiBMBt4Ed2uaZhm61RBnw _YUm5sBt4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_YUm5sBt4Ed2uaZhm61RBnw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_YUdvwBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YUryMBt4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YUuOcBt4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_YzXSQBt4Ed2uaZhm61RBnw" name="Association_ConnectorImplementationDescription_Property" memberEnd="_YzbjsBt4Ed2uaZhm61RBnw _YzhDQBt4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_YzhDQBt4Ed2uaZhm61RBnw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" aggregation="composite" association="_YzXSQBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YznJ4Bt4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yznw8Bt4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_ZMKMwBt4Ed2uaZhm61RBnw" name="A_ConnectorImplementationDescription_Capability" memberEnd="_ZMPFQBt4Ed2uaZhm61RBnw _ZMVL4Bt4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_ZMVL4Bt4Ed2uaZhm61RBnw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_ZMKMwBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZMbSgBt4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZMb5kBt4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_baUGYBt4Ed2uaZhm61RBnw" name="Association_ConnectorImplementationDescription_ComponentInterfaceDescription" memberEnd="_baY-4Bt4Ed2uaZhm61RBnw _bag6sRt4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_bag6sRt4Ed2uaZhm61RBnw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_baUGYBt4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bamaQBt4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_banBUBt4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_k3QUIBw3Ed2uaZhm61RBnw" name="ComponentPortDescription">
+ <ownedAttribute xmi:id="_k3QUIRw3Ed2uaZhm61RBnw" name="name" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k3QUIhw3Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k3QUIxw3Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_k3QUJBw3Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k3QUJRw3Ed2uaZhm61RBnw" name="specificType" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k3QUJhw3Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k3QUJxw3Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_k3QUKBw3Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k3QUKRw3Ed2uaZhm61RBnw" name="provider" visibility="public" isUnique="false" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k3QUKhw3Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k3QUKxw3Ed2uaZhm61RBnw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_k3QULBw3Ed2uaZhm61RBnw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k3QULRw3Ed2uaZhm61RBnw" name="exclusiverProvider" isUnique="false" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k3QULhw3Ed2uaZhm61RBnw" name="exclusiveUser" isUnique="false" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k3QULxw3Ed2uaZhm61RBnw" name="optional" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_y8kB8Bw3Ed2uaZhm61RBnw" name="kind" type="_3hF9EBw3Ed2uaZhm61RBnw" isUnique="false"/>
+ <ownedAttribute xmi:id="_CFa3cBw4Ed2uaZhm61RBnw" name="templateParam" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G1LyMBw4Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G1GSoBw4Ed2uaZhm61RBnw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tUy2QBw5Ed2uaZhm61RBnw" name="supportedType" isUnique="false" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vyscEBw5Ed2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vyluYBw5Ed2uaZhm61RBnw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3hF9EBw3Ed2uaZhm61RBnw" name="CCMComponentPortKind">
+ <ownedLiteral xmi:id="_Wt0CUBw5Ed2uaZhm61RBnw" name="Facet"/>
+ <ownedLiteral xmi:id="_YEMmcBw5Ed2uaZhm61RBnw" name="SimplexReceptacle"/>
+ <ownedLiteral xmi:id="_YP8jcBw5Ed2uaZhm61RBnw" name="MultiplexReceptacle"/>
+ <ownedLiteral xmi:id="_YZGfcBw5Ed2uaZhm61RBnw" name="EventEmitter"/>
+ <ownedLiteral xmi:id="_cUYCMBw5Ed2uaZhm61RBnw" name="EventPublisher"/>
+ <ownedLiteral xmi:id="_dbuEwBw5Ed2uaZhm61RBnw" name="EventConsumer"/>
+ <ownedLiteral xmi:id="_eYX6QBw5Ed2uaZhm61RBnw" name="ExtendedPort"/>
+ <ownedLiteral xmi:id="_onfZoBw5Ed2uaZhm61RBnw" name="InversePort"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Um51oBw4Ed2uaZhm61RBnw" name="Association_ComponentInterfaceDescription_Property" memberEnd="_UnBKYBw4Ed2uaZhm61RBnw _UnJtQBw4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_UnJtQBw4Ed2uaZhm61RBnw" name="componentInterfaceDescription" type="_ERYb8Bt4Ed2uaZhm61RBnw" isUnique="false" association="_Um51oBw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UnPM0Bw4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UnPz4Bw4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_VE9qoBw4Ed2uaZhm61RBnw" name="A_ComponentInterfaceDescription_ComponentPropertyDescription" memberEnd="_VFG0kBw4Ed2uaZhm61RBnw _VFP-gBw4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_VFP-gBw4Ed2uaZhm61RBnw" name="componentInterfaceDescription" type="_ERYb8Bt4Ed2uaZhm61RBnw" isUnique="false" association="_VE9qoBw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VFYhYBw4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VFZIcBw4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_byEb0Bw4Ed2uaZhm61RBnw" name="Association_ComponentInterfaceDescription_ComponentPortDescription" memberEnd="_byNlwBw4Ed2uaZhm61RBnw _byYk4Bw4Ed2uaZhm61RBnw">
+ <ownedEnd xmi:id="_byYk4Bw4Ed2uaZhm61RBnw" name="componentInterfaceDescription" type="_ERYb8Bt4Ed2uaZhm61RBnw" isUnique="false" association="_byEb0Bw4Ed2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_byergBw4Ed2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_byfSkBw4Ed2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PYWQoBw5Ed2uaZhm61RBnw" name="ComponentPropertyDescription"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_QDhXwBw9Ed2uaZhm61RBnw" name="PackageConfiguration"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SLGvUBw9Ed2uaZhm61RBnw" name="ConnectorPackageDescription">
+ <ownedAttribute xmi:id="_1iWCUBxAEd2uaZhm61RBnw" name="implementation" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_1iH_4BxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ielMBxAEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1id-IBxAEd2uaZhm61RBnw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3J6dEBxAEd2uaZhm61RBnw" name="realizes" type="_ERYb8Bt4Ed2uaZhm61RBnw" isUnique="false" association="_3JrMgBxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3J_8oBxAEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3J_VkBxAEd2uaZhm61RBnw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_1iH_4BxAEd2uaZhm61RBnw" name="Association_ConnectorPackageDescription_ConnectorImplementationDescription" memberEnd="_1iWCUBxAEd2uaZhm61RBnw _1ifMQBxAEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_1ifMQBxAEd2uaZhm61RBnw" name="connectorPackageDescription" type="_SLGvUBw9Ed2uaZhm61RBnw" isUnique="false" association="_1iH_4BxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1il58BxAEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1imhABxAEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3JrMgBxAEd2uaZhm61RBnw" name="Association_ConnectorPackageDescription_ComponentInterfaceDescription" memberEnd="_3J6dEBxAEd2uaZhm61RBnw _3KAjsBxAEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_3KAjsBxAEd2uaZhm61RBnw" name="connectorPackageDescription" type="_SLGvUBw9Ed2uaZhm61RBnw" isUnique="false" association="_3JrMgBxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3KHRYBxAEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3KH4cBxAEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_6tqQoBxAEd2uaZhm61RBnw" name="Association_ConnectorImplementationDescription_MonolithicImplementationDescription" memberEnd="_6t5hMBxAEd2uaZhm61RBnw _6uDSMBxAEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_6uDSMBxAEd2uaZhm61RBnw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_6tqQoBxAEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6uJ_4BxAEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6uKm8BxAEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6mgqUBxBEd2uaZhm61RBnw" name="Capability"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_93v88KwdEd2Ytox-zaOdkw" name="ComponentAssemblyDescription"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_HJhqUKweEd2Ytox-zaOdkw" name="Association_ConnectorImplementationDescription_ComponentAssemblyDescription" memberEnd="_HJz-MKweEd2Ytox-zaOdkw _HKALcKweEd2Ytox-zaOdkw">
+ <ownedEnd xmi:id="_HKALcKweEd2Ytox-zaOdkw" name="connectorImplementationDescription" type="_KfIXoBt4Ed2uaZhm61RBnw" isUnique="false" association="_HJhqUKweEd2Ytox-zaOdkw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HKJ8cKweEd2Ytox-zaOdkw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HKKjgKweEd2Ytox-zaOdkw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RmXcoKweEd2Ytox-zaOdkw" name="ComponentUsageDescription">
+ <ownedAttribute xmi:id="_aHd7AKweEd2Ytox-zaOdkw" name="baseConnectorPackage" type="_SLGvUBw9Ed2uaZhm61RBnw" isUnique="false" association="_aG7IcKweEd2Ytox-zaOdkw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fPZeIKweEd2Ytox-zaOdkw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fPUloKweEd2Ytox-zaOdkw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_aG7IcKweEd2Ytox-zaOdkw" name="Association_ComponentUsageDescription_ConnectorPackageDescription" memberEnd="_aHd7AKweEd2Ytox-zaOdkw _aHlPwKweEd2Ytox-zaOdkw">
+ <ownedEnd xmi:id="_aHlPwKweEd2Ytox-zaOdkw" name="componentUsageDescription" type="_RmXcoKweEd2Ytox-zaOdkw" isUnique="false" association="_aG7IcKweEd2Ytox-zaOdkw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aHr9cKweEd2Ytox-zaOdkw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aHtLkKweEd2Ytox-zaOdkw"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DUacYBuDEd2uaZhm61RBnw" name="SinkDef">
+ <generalization xmi:id="_Z4efMBuDEd2uaZhm61RBnw" general="_UR1m0BuDEd2uaZhm61RBnw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_EcNx8BuDEd2uaZhm61RBnw" name="SourceDef">
+ <generalization xmi:id="_YocasBuDEd2uaZhm61RBnw" general="_UR1m0BuDEd2uaZhm61RBnw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JvJEIBuDEd2uaZhm61RBnw" name="Association_ComponentDef_SinkDef" memberEnd="_Jvkh8BuDEd2uaZhm61RBnw _Jvtr4BuDEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_Jvtr4BuDEd2uaZhm61RBnw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_JvJEIBuDEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JvykYBuDEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JvzLcBuDEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Na1SwBuDEd2uaZhm61RBnw" name="Association_ComponentDef_SourceDef" memberEnd="_NbNGMBuDEd2uaZhm61RBnw _NbahkBuDEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_NbahkBuDEd2uaZhm61RBnw" name="componentDef" type="_EBWecBINEd2MuIEcqg0Vsw" isUnique="false" association="_Na1SwBuDEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NbgBIBuDEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbgoMBuDEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SImpcBuDEd2uaZhm61RBnw" name="StreamTypeDef">
+ <ownedAttribute xmi:id="_NLuycBwVEd2uaZhm61RBnw" name="groupedTypes" type="_SImpcBuDEd2uaZhm61RBnw" isUnique="false" association="_NLWX8BwVEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zUnGoBwYEd2uaZhm61RBnw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zUiOIBwYEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UR1m0BuDEd2uaZhm61RBnw" name="StreamPortDef">
+ <ownedAttribute xmi:id="_Lr2UEBwVEd2uaZhm61RBnw" name="stream_type" type="_SImpcBuDEd2uaZhm61RBnw" isUnique="false" association="_LrcEYBwVEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Lr6lgBwVEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lr5-cBwVEd2uaZhm61RBnw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LrcEYBwVEd2uaZhm61RBnw" name="Association_StreamPortDef_StreamTypeDef" memberEnd="_Lr2UEBwVEd2uaZhm61RBnw _Lr7MkBwVEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_Lr7MkBwVEd2uaZhm61RBnw" name="streamPortDef" type="_UR1m0BuDEd2uaZhm61RBnw" isUnique="false" association="_LrcEYBwVEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LsAFEBwVEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LsAsIBwVEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_NLWX8BwVEd2uaZhm61RBnw" name="Association_StreamTypeDef_StreamTypeDef" memberEnd="_NLuycBwVEd2uaZhm61RBnw _NLzq8BwVEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_NLzq8BwVEd2uaZhm61RBnw" name="streamTypeDef" type="_SImpcBuDEd2uaZhm61RBnw" isUnique="false" association="_NLWX8BwVEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NL5KgBwVEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NL5xkBwVEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_-OCjwBwXEd2uaZhm61RBnw" name="Association_InterfaceDef_InterfaceDef" memberEnd="_-OeBkBwXEd2uaZhm61RBnw _-OjhIBwXEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_-OjhIBwXEd2uaZhm61RBnw" name="interfaceDef" type="_N9hMoBINEd2MuIEcqg0Vsw" isUnique="false" association="_-OCjwBwXEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-OpAsBwXEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-OpnwBwXEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_vCfUsBwZEd2uaZhm61RBnw" name="IDLType"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_cOnCIBwdEd2uaZhm61RBnw" name="Association_ExtendedPortDef_IDLType" memberEnd="_cPAqwBwdEd2uaZhm61RBnw _cPH_gBwdEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_cPH_gBwdEd2uaZhm61RBnw" name="extendedPortDef" type="_q_iqABIQEd2MuIEcqg0Vsw" isUnique="false" association="_cOnCIBwdEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cPNfEBwdEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cPOGIBwdEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9Hr0UBxGEd2uaZhm61RBnw" name="Association_ProvidesDef_InterfaceDef" memberEnd="_9INYwBxGEd2uaZhm61RBnw _9IUGcBxGEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_9IUGcBxGEd2uaZhm61RBnw" name="providesDef" type="_PAvkMBINEd2MuIEcqg0Vsw" isUnique="false" association="_9Hr0UBxGEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Ia0IBxGEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9IbbMBxGEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9YZJ0BxGEd2uaZhm61RBnw" name="Association_UsesDef_InterfaceDef" memberEnd="_9Y_mwBxGEd2uaZhm61RBnw _9ZG7gBxGEd2uaZhm61RBnw">
+ <ownedEnd xmi:id="_9ZG7gBxGEd2uaZhm61RBnw" name="usesDef" type="_MSZHkBINEd2MuIEcqg0Vsw" isUnique="false" association="_9YZJ0BxGEd2uaZhm61RBnw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9ZOQQBxGEd2uaZhm61RBnw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9ZO3UBxGEd2uaZhm61RBnw"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_DWFT4hINEd2MuIEcqg0Vsw">
+ <eAnnotations xmi:id="_DWFT4xINEd2MuIEcqg0Vsw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+</uml:Model>
diff --git a/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods b/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods
new file mode 100644
index 00000000000..acdf62fc1df
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/TestCoverage.ods
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf b/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf
new file mode 100644
index 00000000000..ed6164d2e85
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/_DDS for CCM Readable Files README.pdf
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl
new file mode 100644
index 00000000000..305c22511a8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds.idl
@@ -0,0 +1,393 @@
+// $Id$
+
+#include "dds_rtf2_dcps.idl"
+
+module CCM_DDS {
+
+ // ===================================================================================
+ // Non-typed part
+ // (here are placed all the constructs that are not dependent on the data type)
+ // ===================================================================================
+ // ---------------------------
+ // Enums, structs and Typedefs
+ // ---------------------------
+ typedef unsigned long DataNumber_t; // count or index of data
+ typedef sequence<DataNumber_t> DataNumberSeq;
+
+ const DataNumber_t UNLIMITED = 0;
+
+ enum AccessStatus {
+ FRESH_INFO,
+ ALREADY_SEEN
+ };
+
+ enum InstanceStatus { // at sample time, as perceived by the component
+ INSTANCE_CREATED,
+ INSTANCE_FILTERED_IN,
+ INSTANCE_UPDATED,
+ INSTANCE_FILTERED_OUT,
+ INSTANCE_DELETED
+ };
+
+ struct ReadInfo {
+ DDS::InstanceHandle_t instance_handle;
+ DDS::Time_t source_timestamp;
+ AccessStatus access_status;
+ InstanceStatus instance_status;
+ };
+ typedef sequence<ReadInfo> ReadInfoSeq;
+
+ struct QueryFilter {
+ string query;
+ DDS::StringSeq query_parameters;
+ };
+
+ // Data Listener control
+ // ---------------------
+ enum ListenerMode {
+ NOT_ENABLED,
+ ONE_BY_ONE,
+ MANY_BY_MANY
+ };
+
+ // ----------
+ // Exceptions
+ // ----------
+ exception AlreadyCreated {
+ DataNumberSeq indexes; // of the erroneous
+ };
+
+ exception NonExistent{
+ DataNumberSeq indexes; // of the erroneous
+ };
+
+ exception InternalError{
+ DDS::ReturnCode_t error_code; // DDS codes that are relevant:
+ // ERROR (1);
+ // UNSUPPORTED (2);
+ // BAD_PARAMETER (3)
+ // PRECONDITION_NOT_MET (4)
+ // OUT_OF_RESOURCE (5)
+ DataNumber_t index; // of the erroneous
+ };
+
+ exception NonChangeable {};
+
+ // ----------
+ // Interfaces
+ // ----------
+
+ // Listener Control
+ // ----------------
+ local interface DataListenerControl {
+ attribute ListenerMode mode; // default NOT_ENABLED
+ attribute DataNumber_t max_delivered_data; // default 0 (no limit)
+ };
+
+ local interface StateListenerControl : DataListenerControl {
+ attribute boolean is_filter_interpreted; // default FALSE
+ };
+
+ // Status Access
+ // -------------
+ local interface PortStatusListener { // status that are relevant to the component
+ void on_requested_deadline_missed(
+ in DDS::DataReader the_reader,
+ in DDS::RequestedDeadlineMissedStatus status);
+ void on_sample_lost(
+ in DDS::DataReader the_reader,
+ in DDS::SampleLostStatus status);
+ };
+
+ local interface ConnectorStatusListener { // status that are relevant system-wide
+ void on_inconsistent_topic(
+ in DDS::Topic the_topic,
+ in DDS::InconsistentTopicStatus status);
+ void on_requested_incompatible_qos(
+ in DDS::DataReader the_reader,
+ in DDS::RequestedIncompatibleQosStatus status);
+ void on_sample_rejected(
+ in DDS::DataReader the_reader,
+ in DDS::SampleRejectedStatus status);
+ void on_offered_deadline_missed(
+ in DDS::DataWriter the_writer,
+ in DDS::OfferedDeadlineMissedStatus status);
+ void on_offered_incompatible_qos(
+ in DDS::DataWriter the_writer,
+ in DDS::OfferedIncompatibleQosStatus status);
+ void on_unexpected_status (
+ in DDS::Entity the_entity,
+ in DDS::StatusKind status_kind);
+ };
+
+ // ---------------
+ // Connector bases
+ // ---------------
+ connector DDS_Base {
+ uses ConnectorStatusListener error_listener;
+ attribute DDS::DomainId_t domain_id
+ setraises (NonChangeable);
+ attribute string qos_profile // File URL or XML string
+ setraises (NonChangeable);
+ };
+
+ connector DDS_TopicBase : DDS_Base {
+ attribute string topic_name
+ setraises (NonChangeable);
+ attribute DDS::StringSeq key_fields
+ setraises (NonChangeable);
+ };
+
+ // ===================================================================================
+ // Typed sub-part
+ // (here are placed all the construct that are depending on the data type
+ // either directly or indirectly)
+ // ===================================================================================
+
+ module Typed <typename T, sequence<T> TSeq> {
+ // Gathers all the constructs that are dependent on the data type (T),
+ // either directly -- interfaces making use of T or TSeq,
+ // or indirectly -- porttypes using or providing those intefaces.
+ // TSeq is passed as a second parameter to avoid creating a new sequence type.
+
+ // -------------------------------------
+ // Interfaces to be 'used' or 'provided'
+ // -------------------------------------
+
+ // Data access - publishing side
+ // -----------------------------
+
+ // -- InstanceHandle Manager
+ abstract interface InstanceHandleManager {
+ DDS::InstanceHandle_t register_instance (in T datum)
+ raises (InternalError);
+ void unregister_instance (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (InternalError);
+ };
+
+ // -- Writer: when the instance lifecycle is not a concern
+ local interface Writer : InstanceHandleManager {
+ void write_one (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (InternalError);
+ void write_many (in TSeq data)
+ raises (InternalError);
+ attribute boolean is_coherent_write; // FALSE by default
+ // behavior
+ // ---------
+ // - the handle is exactly managed as by DDS (cf. DDS spec for more details)
+ // - attempt to write_many is stopped at the first error
+ // - if is_coherent_write, DDS write orders issued by a write_many
+ // are placed between begin/end coherent updates (even if an error occurs)
+ };
+
+ // -- Updater: when the instance lifecycle is a concern
+ local interface Updater : InstanceHandleManager {
+ void create_one (in T datum)
+ raises (AlreadyCreated,
+ InternalError);
+ void update_one (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ void delete_one (in T datum,in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+
+ void create_many (in TSeq data)
+ raises (AlreadyCreated,
+ InternalError);
+ void update_many (in TSeq data)
+ raises (NonExistent,
+ InternalError);
+ void delete_many (in TSeq data)
+ raises (NonExistent,
+ InternalError);
+
+ readonly attribute boolean is_global_scope; // FALSE by default
+ attribute boolean is_coherent_write; // FALSE by default
+
+ // behavior
+ // --------
+ // - the handle is exactly managed as by DDS (cf. DDS spec for more details)
+ // - exceptions AlreadyCreated or NonExistent are raised at least if a local
+ // conflict exists; in addition if is_global_scope is true, the test on
+ // existence attempts to take into account the instances created outside
+ // - note: this check requires to previously attempt to read (not free)
+ // - note: this check is not 100% guaranteed as a creation or a deletion
+ // may occur in the short time between the check and the DDS order
+ // - For *-many operations:
+ // - global check is performed before actual write or dispose
+ // (in case of error, all the erroneous instances are reported
+ // in the exception)
+ // - attempt to DDS write or dispose is stopped at the first error
+ // - if is_coherent_write, DDS orders resulting from a *_many operation
+ // are placed between begin/end coherent updates (even if an error
+ // occurs)
+ };
+
+ // Data access - subscribing side
+ // ------------------------------
+
+ // -- Reader: to simply access to the available data (no wait)
+ local interface Reader {
+ void read_last (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_all (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_one_last (inout T datum, out ReadInfo info,
+ in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ void read_one_all (in T datum, out TSeq data, out ReadInfoSeq infos,
+ in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ attribute QueryFilter filter
+ setraises (InternalError);
+ // behavior
+ // --------
+ // - read operations are performed with the following parameters
+ // - READ or NO_READ
+ // - NEW or NOT_NEW
+ // - ALIVE
+ // - through the query as specified in the filter ("" means no query)
+ // - data returned:
+ // - read_last returns for each living instance, its last sample
+ // - read_all returns all the samples of all instances
+ // ordered by instance first and then by sample
+ // - read_one_last returns the last sample of the given instance
+ // - read_one_all returns all the samples for the given instance
+ // - read_one operations use the instance_handle the same way
+ // the Writer or Updater *_one operations do
+ };
+
+ // -- Getter: to get new data (and wait for)
+ local interface Getter {
+ boolean get_one (out T datum, out ReadInfo info)
+ raises (InternalError);
+ boolean get_many (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ attribute DDS::Duration_t time_out;
+ attribute DataNumber_t max_delivered_data; // default 0 (no limit)
+ // behavior
+ // --------
+ // - get operations are performed with the following parameters
+ // - NO_READ
+ // - NEW or NOT_NEW
+ // - ALIVE or NOT_ALIVE
+ // - through the query as specified in the associated Reader
+ // - within the time limit specified in time_out
+ // - all operations returns TRUE if data are provided
+ // or FALSE if time-out occurred
+ // - data returned:
+ // - get_one returns each read sample one by one
+ // - get_many returns all available samples within the
+ // max_delivered_data limit
+ };
+
+ // -- Listener: similar to a Getter but in push mode
+ local interface Listener {
+ void on_one_data (in T datum, in ReadInfo info);
+ void on_many_data (in TSeq data, in ReadInfoSeq infos);
+ // behavior
+ // --------
+ // - on_one_data() trigered is the mode of the associated listener control
+ // is ONE_BY_ONE (then similar to a get_one(), except that in push mode
+ // instead of pull mode)
+ // - on_many_data() triggered if the listener mode is MANY_BY_MANY (then
+ // similar to get_many() but in push mode)
+ // - query filter (if any) in the associated Reader
+ };
+
+ // -- StateListener: listener to be notified based on the instance lifecycle
+ local interface StateListener {
+ void on_creation (in T datum, in ReadInfo info);
+ void on_one_update (in T datum, in ReadInfo info);
+ void on_many_updates (in TSeq data, in ReadInfoSeq infos);
+ void on_deletion (in T datum, in ReadInfo info);
+ // behavior
+ // --------
+ // - no operations are trigerred if the mode of the associated listener
+ // control is NOT_ENABLED
+ // - on_creation() is triggered if the instance is considered as new in the
+ // component scope; note that in case there is a filter and the attribute
+ // is_filter_interpreted of the listener control is TRUE, this gathers also
+ // the case when the instance is filtered-in.
+ // - on_delation() is triggered if the instance is no more existing; note
+ // that in case there is a filter and the attribute
+ // is_filter_interpreted of the listener control is TRUE, this gathers
+ // also the case when the instance is filtered-out
+ // - on_one_update() is trigrered if neither on_creation() nor on_deletion()
+ // are triggered and the mode of the associated listener control is
+ // ONE_BY_ONE
+ // - on_many_updates()is triggered if neither on_creation() nor on_deletion()
+ // are triggered and the mode of the associated listener control is
+ // MANY_BY_MANY; the number of returned samples is within the limits of
+ // max_delivered_data attribute of the associated listener control.
+ // - query filter (if any) in the associated Reader
+ };
+
+
+ // ---------
+ // DDS Ports
+ // ---------
+
+ porttype DDS_Write {
+ uses Writer data;
+ uses DDS::DataWriter dds_entity;
+ };
+
+ porttype DDS_Update {
+ uses Updater data;
+ uses DDS::DataWriter dds_entity;
+ };
+
+ porttype DDS_Read {
+ uses Reader data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_Get {
+ uses Reader data;
+ uses Getter fresh_data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_Listen {
+ uses Reader data;
+ uses DataListenerControl data_control;
+ provides Listener data_listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_StateListen {
+ uses Reader data;
+ uses StateListenerControl data_control;
+ provides StateListener data_listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ // ----------------------------
+ // Connectors
+ // (Correspond to DDS patterns)
+ // ----------------------------
+
+ connector DDS_State : DDS_TopicBase {
+ mirrorport DDS_Update observable;
+ mirrorport DDS_Read passive_observer;
+ mirrorport DDS_Get pull_observer;
+ mirrorport DDS_Listen push_observer;
+ mirrorport DDS_StateListen push_state_observer;
+ };
+
+ connector DDS_Event : DDS_TopicBase {
+ mirrorport DDS_Write supplier;
+ mirrorport DDS_Get pull_consumer;
+ mirrorport DDS_Listen push_consumer;
+ };
+ };
+ };
+
diff --git a/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl
new file mode 100644
index 00000000000..42b65c36406
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/ccm_dds_dlrl.idl
@@ -0,0 +1,44 @@
+// $Id$
+
+#include "dds_rtf2_dlrl.idl"
+
+module CCM_DDS {
+
+local interface CacheOperation {
+ // Cache kind
+ // ----------
+ readonly attribute DDS::CacheUsage cache_usage;
+
+ // Other Cache attributes
+ // ----------------------
+ readonly attribute DDS::ObjectRootSeq objects;
+ readonly attribute boolean updates_enabled;
+ readonly attribute DDS::ObjectHomeSeq homes;
+ readonly attribute DDS::CacheAccessSeq sub_accesses;
+ readonly attribute DDS::CacheListenerSeq listeners;
+
+ // Cache update
+ // ------------
+ void DDS::refresh( )
+ raises (DDS::DCPSError);
+
+ // Listener management
+ // -------------------
+ void attach_listener (in DDS::CacheListener listener);
+ void detach_listener (in DDS::CacheListener listener);
+
+ // Updates management
+ // ------------------
+ void enable_updates ();
+ void disable_updates ();
+
+ // CacheAccess Management
+ // ----------------------
+ DDS::CacheAccess create_access (in DDS::CacheUsage purpose)
+ raises (DDS::PreconditionNotMet);
+ void delete_access (in DDS::CacheAccess access)
+ raises (DDS::PreconditionNotMet);
+ };
+};
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/docs/details.txt b/modules/CIAO/connectors/dds4ccm/docs/details.txt
new file mode 100644
index 00000000000..8d871ba686b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/details.txt
@@ -0,0 +1,33 @@
+$Id$
+
+For more information regarding DDS4CCM also check the CCM tutoral, see
+$CIAO_ROOT/docs/OMG-CCM-Tutorial.ppt
+
+Currently the exact syntax of IDL3+ is not clear. The batch 4 document has
+been outdated and we are waiting for a new batch 5. Before this will be
+published a decision on IDL3+ has to be made. The latest proposal is to just
+use templated modules, no templated interfaces. The usage of $ as
+concatanation symbol has been removed from the spec.
+
+A lis of all open issues can be found at:
+http://www.omg.org/issues/dds4ccm-ftf.open.html
+
+The list of issues that have been resolved are in the DDS for CCM FTF
+27Aug09 document in the same directory as this file.
+
+One issue that has to be reraised is the fact that DDS SampleInfo is not
+available at the CCM level, we need to have access to that.
+
+The DDS4CCM spec still has to be reviewed whether the given ports deliver the
+correct abstraction. We want to prevent that we get lightweight DDS for
+lightweight CCM.
+
+The CIAO tooling will generate the full connector. The goal is to have just
+template instantiations and simple pass through code inside the connector, all
+real code should be in a supporting core library. That makes it possible to
+change the connector without changing the code generators.
+
+A problem to resolve is the fact that DDS defines an implicit sequence. We
+need to be able to have the same sequence in IDL to be used for DDS and CCM.
+This is not possible at this moment because we have 2 different code
+generators each generating the same type.
diff --git a/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf b/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf
new file mode 100644
index 00000000000..2f99240be78
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/docs/ptc_09-10-26 DDS4CCM v1-0 WCB.pdf
Binary files differ
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl
new file mode 100644
index 00000000000..b888931845c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file Hello_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef HELLO_BASE_IDL
+#define HELLO_BASE_IDL
+
+#pragma ndds typesupport "Base/Hello_BaseSupport.h"
+#pragma opendds typesupport "Base/Hello_BaseTypeSupportC.h"
+#pragma splice typesupport "Base/Hello_BaseDcpsC.h"
+
+#pragma DCPS_DATA_TYPE "DDSHello"
+
+struct DDSHello {
+ string hello;
+ short iterator;
+};
+
+typedef sequence<DDSHello> DDSHelloSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc
new file mode 100644
index 00000000000..465eab68916
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Base/Hello_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Hello_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Hello_Base_stub
+ dynamicflags += HELLO_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=HELLO_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Hello_Base.idl
+ }
+
+ opendds_ts_flags += --export=HELLO_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl
new file mode 100644
index 00000000000..f3c49a5a087
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.idl
@@ -0,0 +1,28 @@
+// $Id$
+
+/**
+ * @file Hello_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef HELLO_CONNECTOR_IDL_
+#define HELLO_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Hello_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Hello_ConnectorE.idl"
+
+module Hello
+{
+ module ::CCM_DDS::Typed <::DDSHello, ::DDSHelloSeq> HelloConn;
+
+ connector Hello_Connector : HelloConn::DDS_Event
+ {
+ };
+};
+
+#endif /* HELLO_CONNECTOR_IDL_ */
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc
new file mode 100644
index 00000000000..0bfe674d52a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Connector/Hello_Connector.mpc
@@ -0,0 +1,159 @@
+// $Id$
+
+project(DDS_Hello_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Hello_Connector_stub_export.h \
+ -Wb,skel_export_macro=HELLO_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Hello_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=HELLO_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Hello_Connector_svnt_export.h \
+ -Wb,conn_export_macro=HELLO_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Hello_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Hello_Connector.idl
+ }
+}
+
+project(DDS_Hello_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Hello_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=HELLO_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Hello_ConnectorE.idl
+ }
+}
+
+project(DDS_Hello_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Hello_Connector_lem_gen \
+ DDS_Hello_Connector_stub \
+ DDS_Hello_Base_stub \
+ DDS4CCM_lem_stub
+ libs += DDS_Hello_Base_stub \
+ DDS_Hello_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Hello_Connector_lem_stub
+ dynamicflags = HELLO_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Hello_ConnectorEC.h
+ Hello_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ConnectorEC.inl
+ }
+}
+
+project(DDS_Hello_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Hello_Connector_idl_gen DDS_Hello_Base_stub
+ libs += DDS_Hello_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Hello_Connector_stub
+ dynamicflags = HELLO_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Hello_ConnectorC.h
+ Hello_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ConnectorC.inl
+ }
+}
+
+project(DDS_Hello_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Hello_Connector_lem_stub \
+ DDS_Hello_Connector_stub \
+ DDS4CCM_lem_stub \
+ DDS_Hello_Base_stub
+ sharedname = DDS_Hello_Connector_exec
+ libs += DDS_Hello_Connector_stub \
+ DDS_Hello_Connector_lem_stub \
+ DDS_Hello_Base_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = HELLO_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Hello_Connector_conn.h
+ Hello_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Hello_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ avoids += ace_for_tao
+ after += DDS_Hello_Connector_lem_stub \
+ DDS_Hello_Connector_exec \
+ DDS_Hello_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = DDS_Hello_Connector_svnt
+ libs += DDS_Hello_Connector_stub \
+ DDS_Hello_Connector_lem_stub \
+ DDS_Hello_Base_stub \
+ DDS_Hello_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = HELLO_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ConnectorS.cpp
+ Hello_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_ConnectorS.h
+ Hello_Connector_svnt.h
+ Hello_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc
new file mode 100644
index 00000000000..3405db77926
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc
@@ -0,0 +1,11 @@
+// $Id$
+
+project(*receiver) : nddslib, acelib {
+ exename = DDS_receiver
+ avoids += ace_for_tao
+
+ Source_Files {
+ Hello_Receiver.cpp
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp
new file mode 100644
index 00000000000..e4b26b81f31
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp
@@ -0,0 +1,169 @@
+// $Id$
+
+#include "ace/OS_main.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/OS_NS_string.h"
+#include "ace/OS_NS_stdlib.h"
+#include "ace/Date_Time.h"
+#include "ace/SString.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+
+/* By default DDS::String type manage strings up to 1k */
+#define MAX_STRING_SIZE 1024
+
+bool shutdown_flag = false;
+long num_samples = 0;
+long received_samples = 0;
+
+/* The listener of events and data from the middleware */
+class HelloListener: public ::DDS::DataReaderListener {
+public:
+ void on_data_available(::DDS::DataReader *reader);
+};
+
+
+int ACE_TMAIN(int argc, ACE_TCHAR** argv) {
+ HelloListener listener;
+ int main_result = 1; /* error by default */
+ ::DDS::Topic * topic = 0;
+ ::DDS::DataReader *data_reader = 0;
+
+ if (argc == 2)
+ {
+ char *end = 0;
+ num_samples = ACE_OS::strtol (argv[1], &end, 10);
+
+ if (end == argv[1] && num_samples < 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: provided argument not a valid integer over zero\n"));
+ return -1;
+ }
+ }
+
+ /* Create the domain participant on domain ID 0 */
+ ::DDS::DomainParticipant *participant = ::DDS::DomainParticipantFactory::get_instance()->
+ create_participant(
+ 0, /* Domain ID */
+ DDS_PARTICIPANT_QOS_DEFAULT, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!participant) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the topic "Hello, World" for the String type */
+ topic = participant->create_topic(
+ "Hello, World", /* Topic name*/
+ ::DDS::StringTypeSupport::get_type_name(), /* Type name */
+ DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!topic) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the data writer using the default publisher */
+ data_reader = participant->create_datareader(
+ topic,
+ DDS_DATAREADER_QOS_DEFAULT, /* QoS */
+ &listener, /* Listener */
+ DDS_DATA_AVAILABLE_STATUS);
+ if (!data_reader) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+
+ /* --- Sleep During Asynchronous Reception ---------------------------- */
+
+ /* This thread sleeps forever. When a sample is received, RTI Data
+ * Distribution Service will call the on_data_available_callback function.
+ */
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Ready to read data.\n")));
+ for (;;) {
+ ACE_OS::sleep (1);
+ if(shutdown_flag){
+ break;
+ }
+ }
+
+ /* --- Clean Up ------------------------------------------------------- */
+
+ main_result = 0;
+ clean_exit:
+ ::DDS::ReturnCode_t retcode;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting.")));
+ if (participant) {
+ retcode = participant->delete_contained_entities();
+ if (retcode != DDS_RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = ::DDS::DomainParticipantFactory::get_instance()->
+ delete_participant(participant);
+ if (retcode != DDS_RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+
+ return main_result;
+}
+
+
+/* This method gets called back by DDS when one or more data samples have been
+ * received.
+ */
+void HelloListener::on_data_available(::DDS::DataReader *reader) {
+ /* Perform a safe type-cast from a generic data reader into a
+ * specific data reader for the type "DDS::String"
+ */
+ ::DDS::StringDataReader * string_reader = ::DDS::StringDataReader::narrow(reader);
+ if (!string_reader) {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("::DDS::StringDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ char sample[MAX_STRING_SIZE];
+ char *ptr_sample = &sample[0];
+ for(;;) {
+ ::DDS::SampleInfo info;
+ ::DDS::ReturnCode_t retcode = string_reader->take_next_sample(
+ ptr_sample,
+ info);
+ if (retcode == DDS_RETCODE_NO_DATA) {
+ /* No more samples */
+ break;
+ } else if (retcode != DDS_RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), retcode));
+ return;
+ }
+ if (info.valid_data) {
+ // Valid (this isn't just a lifecycle sample): print it
+ ++received_samples;
+ ACE_CString rec (sample);
+ ACE_Date_Time now;
+ int sec_rec = ACE_OS::atoi (rec.substr (0, 2).c_str() );
+ if (sec_rec > 0)
+ {
+ int usec_rec = ACE_OS::atoi (rec.substr (3, 6).c_str ());
+ if (sec_rec != now.second ())
+ usec_rec += 10000000;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT("%C dur <%d>\n"), sample, now.microsec () - usec_rec));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT("%C\n"), sample));
+ }
+ if(received_samples == num_samples || ACE_OS::strlen(sample) == 0){
+ shutdown_flag = true;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc
new file mode 100644
index 00000000000..43154f47f03
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc
@@ -0,0 +1,11 @@
+// $Id$
+
+project(*sender) : nddslib, acelib {
+ exename = DDS_Sender
+ avoids += ace_for_tao
+
+ Source_Files {
+ Hello_Sender.cpp
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp
new file mode 100644
index 00000000000..c761e4e7b8f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp
@@ -0,0 +1,151 @@
+// $Id$
+
+#include "ace/OS_main.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/Date_Time.h"
+#include "ace/SString.h"
+#include <ndds/ndds_namespace_cpp.h>
+
+int number_of_iterations = 100;
+bool log_time = false;
+const char* send_string = "This is a DDS sender";
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("i:s:t"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 's':
+ send_string = ACE_TEXT_ALWAYS_CHAR (get_opts.opt_arg ());
+ break;
+ case 'i':
+ number_of_iterations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 't':
+ log_time = true;
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-s <send string>"
+ "-i <number of iterations>"
+ "-t log timing"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) {
+ ::DDS::ReturnCode_t retcode;
+ ::DDS::StringDataWriter *string_writer = 0;
+ ::DDS::Topic *topic = 0;
+ ::DDS::DataWriter *data_writer = 0;
+ int main_result = 1; /* error by default */
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ ACE_Time_Value tv (0, 1000); //1 msec
+ /* Create the domain participant */
+ ::DDS::DomainParticipant *participant = ::DDS::DomainParticipantFactory::get_instance()->
+ create_participant(
+ 0, /* Domain ID */
+ DDS_PARTICIPANT_QOS_DEFAULT, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!participant) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the topic "Hello, World" for the String type */
+ topic = participant->create_topic(
+ "Hello, World", /* Topic name*/
+ ::DDS::StringTypeSupport::get_type_name(), /* Type name */
+ DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!topic) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the data writer using the default publisher */
+ data_writer = participant->create_datawriter(
+ topic,
+ DDS_DATAWRITER_QOS_DEFAULT, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!data_writer) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Perform a safe type-cast from a generic data writer into a
+ * specific data writer for the type "DDS::String"
+ */
+ string_writer = ::DDS::StringDataWriter::narrow(data_writer);
+ if (!string_writer) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("DDS_StringDataWriter_narrow failed.\n")));
+ /* In this specific case, this will never fail */
+ goto clean_exit;
+ }
+
+ // Sleep a couple seconds to allow discovery to happen
+ ACE_OS::sleep (1);
+
+ /* --- Write Data ----------------------------------------------------- */
+
+ for (int i = 0; i < number_of_iterations; i++)
+ {
+ ACE_TCHAR timestamp[16];
+ ACE_CString msg (send_string);
+ ACE_CString ret;
+ ACE_Date_Time now;
+ ACE_OS::sprintf (timestamp,
+ "%02d.%d",
+ now.second(),
+ now.microsec ());
+ ret.set (timestamp);
+ ret = ret + " " + msg;
+ retcode = string_writer->write(
+ ret.c_str (),
+ DDS_HANDLE_NIL);
+ if (retcode != DDS_RETCODE_OK)
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Write failed: %d.\n"), retcode));
+ //ACE_ERROR ((LM_ERROR, ACE_TEXT ("%C.\n"), ret.c_str()));
+ ACE_OS::sleep (tv);
+ }
+
+ /* --- Clean Up ------------------------------------------------------- */
+
+ main_result = 0;
+clean_exit:
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting.")));
+ if (participant) {
+ retcode = participant->delete_contained_entities();
+ if (retcode != DDS_RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = ::DDS::DomainParticipantFactory::get_instance()->
+ delete_participant(participant);
+ if (retcode != DDS_RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+ return main_result;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl
new file mode 100644
index 00000000000..b2cb9fc83d5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef HELLO_RECEIVER_IDL
+#define HELLO_RECEIVER_IDL
+
+#include "Connector/Hello_Connector.idl"
+
+module Hello
+{
+ component Receiver
+ {
+ port HelloConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+
+ attribute string name;
+ attribute unsigned long expected_samples;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc
new file mode 100644
index 00000000000..02de4b48707
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_Hello_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ avoids += ace_for_tao
+ custom_only = 1
+ after += DDS_Hello_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=HELLO_RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=HELLO_RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Hello_Receiver.idl
+ }
+}
+
+project(DDS_Hello_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ avoids += ace_for_tao
+ after += DDS_Hello_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Hello_ReceiverE.idl
+ }
+}
+
+project(DDS_Hello_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Receiver_lem_gen DDS_Hello_Receiver_stub DDS_Hello_Connector_stub DDS_Hello_Base_stub
+ libs += Receiver_stub DDS_Hello_Connector_stub DDS_Hello_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = HELLO_RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverEC.h
+ Hello_Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverEC.inl
+ }
+}
+
+project(DDS_Hello_Receiver_stub) : ccm_stub, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Receiver_idl_gen DDS_Hello_Connector_stub DDS_Hello_Base_stub DDS_Hello_Connector_lem_gen
+ libs += DDS_Hello_Connector_stub DDS_Hello_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = HELLO_RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverC.h
+ Hello_Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverC.inl
+ }
+}
+
+project(DDS_Hello_Receiver_exec) : ciao_executor, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = HELLO_RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_exec.h
+ Hello_Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Hello_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Receiver_exec DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_stub DDS_Hello_Connector_svnt Receiver_exec DDS_Hello_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = HELLO_RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_ReceiverS.cpp
+ Hello_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_ReceiverS.h
+ Hello_Receiver_svnt.h
+ Hello_Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp
new file mode 100644
index 00000000000..7661d512983
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp
@@ -0,0 +1,304 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Hello_Receiver_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+#include "ace/Date_Time.h"
+
+namespace CIAO_Hello_Receiver_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: DDSHello_Listener_exec_i
+ //============================================================
+
+ DDSHello_Listener_exec_i::DDSHello_Listener_exec_i (Atomic_ULong &received,
+ const ACE_CString &name)
+ : received_ (received),
+ name_ (name)
+ {
+ }
+
+ DDSHello_Listener_exec_i::~DDSHello_Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::DDSHello_Listener
+
+ void
+ DDSHello_Listener_exec_i::on_many_data (
+ const DDSHelloSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ void
+ DDSHello_Listener_exec_i::on_one_data (
+ const DDSHello & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ++this->received_;
+ ACE_CString rec (an_instance.hello.in ());
+ ACE_Date_Time now;
+ int sec_rec = ACE_OS::atoi (rec.substr (0, 2).c_str() );
+ if (sec_rec > 0)
+ {
+ int usec_rec = ACE_OS::atoi (rec.substr (3, 6).c_str ());
+ if (sec_rec != now.second ())
+ usec_rec += 10000000;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("<%C> received <%C> - <%d>. difference <%d>\n"),
+ this->name_.c_str (),
+ an_instance.hello.in (),
+ an_instance.iterator,
+ now.microsec () - usec_rec));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT("<%C> received <%C> - <%d>.\n"),
+ this->name_.c_str (),
+ an_instance.hello.in (),
+ an_instance.iterator));
+ }
+/*
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("DDSHello_Listener: ")
+ ACE_TEXT ("received hello for <%C> - iterator <%d>\n"),
+ an_instance.hello.in (),
+ an_instance.iterator));
+*/
+ }
+ //============================================================
+ // Facet Executor Implementation Class: PortStatusListener_exec_i
+ //============================================================
+
+ PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_ULong &lost)
+ : lost_ (lost)
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ ++this->lost_;
+ ACE_DEBUG ((LM_ERROR, ACE_TEXT("port status listener::on_sample_lost\n")));
+ }
+
+
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /* the_topic */,
+ const DDS::InconsistentTopicStatus & /* status */)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_inconsistent_topic\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_sample_rejected\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_deadline_missed\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_unexpected_status\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_subscription_matched (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const ::DDS::SubscriptionMatchedStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_subscription_matched\n")));
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iDDSHello_Listener_exec_i ();
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : expected_ (0),
+ received_ (0),
+ lost_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CORBA::ULong
+ Receiver_exec_i::expected_samples (void)
+ {
+ return this->expected_;
+ }
+
+ void
+ Receiver_exec_i::expected_samples (::CORBA::ULong expected_samples)
+ {
+ this->expected_ = expected_samples;
+ }
+
+ char *
+ Receiver_exec_i::name (void)
+ {
+ return CORBA::string_dup (this->name_.c_str ());
+ }
+
+ void
+ Receiver_exec_i::name (const char *name)
+ {
+ this->name_ = name;
+ }
+
+ // Port operations.
+ ::Hello::HelloConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new DDSHello RAW listener\n")));
+ return new DDSHello_Listener_exec_i (this->received_, this->name_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i (this->lost_);
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new ConnectorStatusListener\n")));
+ return new ConnectorStatusListener_exec_i ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode ( ::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary: received <%u> - expected <%d> - lost <%u>\n",
+ this->received_.value (),
+ this->expected_,
+ this->lost_.value ()));
+ if (this->lost_ > 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : Lost %u samples\n",
+ this->lost_.value ()));
+ }
+ if (this->received_ < this->expected_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : Expected to receive %u samples, actually got %u\n",
+ this->expected_, this->received_.value ()));
+ }
+ }
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h
new file mode 100644
index 00000000000..f04b0e85720
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h
@@ -0,0 +1,157 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef HELLO_RECEIVER_EXEC_H_
+#define HELLO_RECEIVER_EXEC_H_
+
+
+#include "Hello_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Hello_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong;
+
+ class HELLO_RECEIVER_EXEC_Export DDSHello_Listener_exec_i
+ : public virtual ::Hello::HelloConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ DDSHello_Listener_exec_i (Atomic_ULong &,
+ const ACE_CString &);
+ virtual ~DDSHello_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const DDSHello & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+
+ virtual void
+ on_many_data (
+ const DDSHelloSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_;
+ const ACE_CString &name_;
+ };
+
+ class HELLO_RECEIVER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (Atomic_ULong &);
+ virtual ~PortStatusListener_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::PortStatusListener
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+ private:
+ Atomic_ULong &lost_;
+ };
+
+ class HELLO_RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (void);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ virtual
+ void on_subscription_matched (::DDS::DataReader_ptr the_reader,
+ const ::DDS::SubscriptionMatchedStatus & status);
+
+ };
+
+ class HELLO_RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Port operations.
+
+ virtual ::CORBA::ULong expected_samples (void);
+ virtual void expected_samples (::CORBA::ULong expected_samples);
+
+ virtual char * name (void);
+ virtual void name (const char *name);
+
+ virtual ::Hello::HelloConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+
+ // Operations from Components::SessionComponent.
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Hello::CCM_Receiver_Context_var context_;
+ CORBA::ULong expected_;
+ Atomic_ULong received_;
+ Atomic_ULong lost_;
+ ACE_CString name_;
+ };
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl
new file mode 100644
index 00000000000..7dbae7b2ce4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl
@@ -0,0 +1,28 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_SENDER_IDL
+#define DDS_SENDER_IDL
+
+#include "Connector/Hello_Connector.idl"
+
+module Hello
+{
+ component Sender
+ {
+ port HelloConn::DDS_Write info_in;
+ attribute unsigned long rate;
+ attribute unsigned long iterations;
+ attribute string message;
+ attribute boolean log_time;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc
new file mode 100644
index 00000000000..75ffd5ce6fa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc
@@ -0,0 +1,145 @@
+// $Id$
+
+project(DDS_Hello_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ avoids += ace_for_tao
+ after += DDS_Hello_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=HELLO_SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Hello_Sender.idl
+ }
+}
+
+project(DDS_Hello_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ avoids += ace_for_tao
+ after += DDS_Hello_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Hello_SenderE.idl
+ }
+}
+
+project(DDS_Hello_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Sender_lem_gen DDS_Hello_Sender_stub DDS_Hello_Base_stub
+ libs += DDS_Hello_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = HELLO_SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderEC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderEC.inl
+ }
+}
+
+project(DDS_Hello_Sender_stub) : ccm_stub, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Sender_idl_gen DDS_Hello_Base_stub DDS_Hello_Connector_stub
+ libs += DDS_Hello_Base_stub DDS_Hello_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = HELLO_SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderC.inl
+ }
+}
+
+project(DDS_Hello_Sender_exec) : ciao_executor, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Sender_lem_stub DDS_Hello_Sender_stub DDS_Hello_Connector_lem_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Hello_Base_stub DDS_Hello_Connector_lem_stub DDS_Hello_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = HELLO_SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Hello_Sender_svnt) : ciao_servant, dds4ccm_base {
+ avoids += ace_for_tao
+ after += DDS_Hello_Base_stub DDS_Hello_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_Hello_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Hello_Connector_stub DDS_Hello_Connector_svnt DDS_Hello_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = HELLO_SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderS.cpp
+ Hello_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_SenderS.h
+ Hello_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp
new file mode 100644
index 00000000000..f9f2df4fa71
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp
@@ -0,0 +1,282 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Hello_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+#include "ace/Date_Time.h"
+#include "ace/OS_NS_unistd.h"
+
+namespace CIAO_Hello_Sender_Impl
+{
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &ready_to_start)
+ :ready_to_start_(ready_to_start)
+ {
+ }
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/) {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/) {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/) {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/) {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind status_kind)
+ {
+ if(!this->ready_to_start_.value())
+ {
+ // be aware that when only the sender runs, ready_to_start will never
+ // be true.
+ this->ready_to_start_ = status_kind == DDS::PUBLICATION_MATCHED_STATUS;
+ }
+ }
+
+
+ //============================================================
+ // Pulse generator
+ //============================================================
+
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ pulse_Generator::~pulse_Generator ()
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &,
+ const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iteration_ (0),
+ iterations_ (1000),
+ log_time_ (false),
+ msg_ ("Hello World!"),
+ ready_to_start_(false)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->ready_to_start_);
+ }
+
+ ACE_CString Sender_exec_i::create_message (const ACE_CString &msg)
+ {
+ if (!this->log_time_)
+ return msg;
+ char timestamp[16];
+ ACE_Date_Time now;
+ ACE_OS::sprintf (timestamp,
+ "%02d.%06d",
+ now.second(),
+ now.microsec ());
+ ACE_CString ret (timestamp);
+ ret = ret + " " + msg;
+ return ret.c_str ();
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ // Start writing after DataWriter find first DataReader that matched the Topic
+ // It is stll possible that other Readers aren't yet ready to recieve data, for that case in the
+ // profile the durability is set to TRANSIENT_DURABILITY_QOS, so each Raeder should receive each message.
+ if(this->ready_to_start_.value())
+ {
+ if (this->iteration_ < this->iterations_)
+ {
+ DDSHello * new_msg = new DDSHello();
+ ACE_CString msg = create_message (this->msg_);
+ new_msg->hello = msg.c_str ();
+ new_msg->iterator = ++this->iteration_;
+ this->writer_->write_one (*new_msg, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::tick - "
+ "Written sample: <%C> - <%u>\n",
+ msg.c_str (),
+ new_msg->iterator));
+ }
+ else
+ { //we're done
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (3, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ // Component attributes.
+ ::CORBA::ULong
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::ULong iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ char *
+ Sender_exec_i::message (void)
+ {
+ return CORBA::string_dup (this->msg_.c_str());
+ }
+ void
+ Sender_exec_i::message (const char *msg)
+ {
+ this->msg_ = msg;
+ }
+
+ ::CORBA::Boolean
+ Sender_exec_i::log_time (void)
+ {
+ return this->log_time_;
+ }
+
+ void
+ Sender_exec_i::log_time (::CORBA::Boolean log_time)
+ {
+ this->log_time_ = log_time;
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::ULong rate)
+ {
+ if (rate == 0)
+ {
+ rate = 1;
+ }
+ else
+ {
+ this->rate_ = rate;
+ }
+ }
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent.
+ void
+ Sender_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_in_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h
new file mode 100644
index 00000000000..8806da5da94
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h
@@ -0,0 +1,148 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef HELLO_SENDER_EXEC_H_
+#define HELLO_SENDER_EXEC_H_
+
+
+#include "Hello_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+#include <map>
+
+namespace CIAO_Hello_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ class HELLO_SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &ready_to_start_;
+
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ ~pulse_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ // Supported operations and attributes.
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ void start (void);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ void stop (void);
+
+ void tick ();
+
+ // Component attributes.
+ virtual ::CORBA::ULong iterations (void);
+
+ virtual void iterations (CORBA::ULong iterations);
+
+ virtual char * message (void);
+
+ virtual void message (const char *message);
+
+ virtual ::CORBA::Boolean log_time (void);
+
+ virtual void log_time (::CORBA::Boolean log_time);
+
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status(void);
+
+ private:
+ ::Hello::CCM_Sender_Context_var context_;
+ Hello::HelloConn::Writer_var writer_;
+ pulse_Generator * ticker_;
+ CORBA::ULong rate_;
+ CORBA::ULong iteration_, iterations_;
+ CORBA::Boolean log_time_;
+ ACE_CString msg_;
+
+ ACE_CString create_message (
+ const ACE_CString &msg);
+ Atomic_Boolean ready_to_start_;
+
+ };
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp
new file mode 100644
index 00000000000..7fa83efc8d3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp
@@ -0,0 +1,1048 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_Depl_1</label>
+ <UUID>Hello_Depl_1</UUID>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceOne">
+ <name>Hello_ReceiverComponentOne</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>100</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceOne">
+ <name>Hello_ReceiverConnectorComponentOne</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceTwo">
+ <name>Hello_ReceiverComponentTwo</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>100</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceTwo">
+ <name>Hello_ReceiverConnectorComponentTwo</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceThree">
+ <name>Hello_ReceiverComponentThree</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>100</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceThree">
+ <name>Hello_ReceiverConnectorComponentThree</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceFour">
+ <name>Hello_ReceiverComponentFour</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>100</ulong>
+ </value>
+ </value>
+ </configProperty>
+
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceFour">
+ <name>Hello_ReceiverConnectorComponentFour</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceFive">
+ <name>Hello_ReceiverComponentFive</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>100</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceFive">
+ <name>Hello_ReceiverConnectorComponentFive</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstance">
+ <name>Hello_SenderConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_write_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+
+
+
+ <connection>
+ <name>_portstatuslistenerOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+
+
+
+ <connection>
+ <name>_listenerOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp
new file mode 100644
index 00000000000..2c6429403b9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp
@@ -0,0 +1,1041 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_DDS_Deployment_5_Receivers</label>
+ <UUID>Hello_DDS_Deployment_5_Receivers</UUID>
+
+ <!-- Implementations declarations -->
+
+ <!-- Home implementation -->
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceOne">
+ <name>Hello_ReceiverComponentOne</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>500</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceOne">
+ <name>Hello_ReceiverConnectorComponentOne</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceTwo">
+ <name>Hello_ReceiverComponentTwo</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>500</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceTwo">
+ <name>Hello_ReceiverConnectorComponentTwo</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceThree">
+ <name>Hello_ReceiverComponentThree</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>500</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceThree">
+ <name>Hello_ReceiverConnectorComponentThree</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceFour">
+ <name>Hello_ReceiverComponentFour</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>500</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceFour">
+ <name>Hello_ReceiverConnectorComponentFour</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverComponentInstanceFive">
+ <name>Hello_ReceiverComponentFive</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>500</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstanceFive">
+ <name>Hello_ReceiverConnectorComponentFive</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listenercontrolOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrolFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+
+
+
+ <connection>
+ <name>_portstatuslistenerOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistenerFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+
+
+
+ <connection>
+ <name>_listenerOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenerFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp
new file mode 100644
index 00000000000..c358229d69c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp
@@ -0,0 +1,882 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_DDS_Deployment_5_Senders</label>
+ <UUID>Hello_DDS_Deployment_5_Senders</UUID>
+
+ <!-- Implementations declarations -->
+
+ <!-- Home implementation -->
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Hello_SenderComponentInstanceOne">
+ <name>Hello_SenderComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender One!</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceOne">
+ <name>Hello_SenderConnectorComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderComponentInstanceTwo">
+ <name>Hello_SenderComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Two!</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceTwo">
+ <name>Hello_SenderConnectorComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceThree">
+ <name>Hello_SenderComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Three!</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceThree">
+ <name>Hello_SenderConnectorComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceFour">
+ <name>Hello_SenderComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Four!</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFour">
+ <name>Hello_SenderConnectorComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceFive">
+ <name>Hello_SenderComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Five!</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFive">
+ <name>Hello_SenderConnectorComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_write_dataOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp
new file mode 100644
index 00000000000..de44d461117
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp
@@ -0,0 +1,1043 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_Depl_1</label>
+ <UUID>Hello_Depl_1</UUID>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Hello_SenderComponentInstanceOne">
+ <name>Hello_SenderComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS Sender One</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderOne</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceOne">
+ <name>Hello_SenderConnectorComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorOne</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceTwo">
+ <name>Hello_SenderComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS Sender Two</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceTwo">
+ <name>Hello_SenderConnectorComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorTwo</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceThree">
+ <name>Hello_SenderComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS Sender Three</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderThree</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceThree">
+ <name>Hello_SenderConnectorComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorThree</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceFour">
+ <name>Hello_SenderComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS Sender Four</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFour</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFour">
+ <name>Hello_SenderConnectorComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFour</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderComponentInstanceFive">
+ <name>Hello_SenderComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS Sender Five</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFive</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFive">
+ <name>Hello_SenderConnectorComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFive</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstance">
+ <name>Hello_ReceiverConnectorComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverComponentImplementation" />
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>500</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_write_dataOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderOne</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderTwo</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderThree</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderFour</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_write_dataFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_senderFive</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp
new file mode 100644
index 00000000000..5a71dfa85e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,463 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_Depl_1</label>
+ <UUID>Hello_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver1</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstance">
+ <name>Hello_ReceiverConnectorComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorComponentInstance">
+ <name>Hello_SenderConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello, World via DDS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>log_time</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp
new file mode 100644
index 00000000000..5bd769432db
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp
@@ -0,0 +1,248 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_DDS_Deployment_1</label>
+ <UUID>Hello_DDS_Deployment_1</UUID>
+
+ <!-- Implementations declarations -->
+
+ <!-- Home implementation -->
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver1</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_ConnectorComponentInstance">
+ <name>Hello_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp
new file mode 100644
index 00000000000..f79157f2c56
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp
@@ -0,0 +1,199 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello_DDS_Deployment_1</label>
+ <UUID>Hello_DDS_Deployment_1</UUID>
+
+ <!-- Implementations declarations -->
+
+ <!-- Home implementation -->
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ConnectorComponentImplementation">
+ <name>Hello_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Connector_ExecArtifact" />
+ <artifact xmi:idref="Hello_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_Hello_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+ <instance xmi:id="Hello_ConnectorComponentInstance">
+ <name>Hello_ConnectorComponent2</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_write_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Connector_ExecArtifact">
+ <name>Hello_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_SvntArtifact">
+ <name>Hello_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Hello_Connector_StubArtifact">
+ <name>Hello_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..705e3d4edb5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Hello_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl
new file mode 100755
index 00000000000..f15d7b4f0cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "Sender.ior", "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "1_to_5.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (3 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl
new file mode 100755
index 00000000000..c28adced639
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "Sender.ior", "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "5_to_1.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (3 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl
new file mode 100755
index 00000000000..522972bf6f2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl
@@ -0,0 +1,252 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "Sender.ior", "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$E2 = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "5_Senders.cdp";
+$cdp_file_two = "5_Receivers.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Start dance_plan_launcher.exe with -x $cdp_file_two -k file://$ior_emfile\n";
+$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file_two -k file://$ior_emfile");
+$E2->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file_two -s\n";
+
+$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file_two -s");
+$E2->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl
new file mode 100755
index 00000000000..09a8a098e5e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60002 );
+@iorbases = ( "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "ReceiverOnly.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl
new file mode 100755
index 00000000000..c73fc8e11a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "Sender.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "SenderOnly.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl
new file mode 100755
index 00000000000..40764f5b852
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "Sender.ior", "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "DeploymentPlan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl
new file mode 100755
index 00000000000..020c238f5b4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test_dds.pl
@@ -0,0 +1,26 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+
+$tg_sender = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+$tg_receiver = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+
+
+print "Start receiver\n";
+$R = $tg_receiver->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_receiver", "");
+$R->Spawn();
+print "Start sender\n";
+$S = $tg_sender->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender",
+ "-i 10000 -t -s \"Hello, World\"");
+$S->SpawnWaitKill ($tg_sender->ProcessStartWaitInterval ());
+$R->Kill ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.idl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.idl
new file mode 100644
index 00000000000..a0079689b0e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef LARGE_COMMON_IDL
+#define LARGE_COMMON_IDL
+
+#pragma ndds typesupport "Common/CommonSupport.h"
+
+struct LargeType {
+ string value; //@key
+};
+
+typedef sequence<LargeType> LargeTypeSeq;
+
+interface Simple_Service
+{
+ oneway void ping ();
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.mpc b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.mpc
new file mode 100644
index 00000000000..407bc39ee51
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Common/Common.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (Large_Deployment_stub) : ciaoidldefaults, anytypecode, \
+ portableserver, dds4ccm_ts_default {
+ sharedname = Large_Deployment_stub
+ dynamicflags += LARGE_DEPLOYMENT_COMMON_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -Gxhst \
+ -Wb,export_macro=LARGE_DEPLOYMENT_COMMON_STUB_Export \
+ -Wb,export_include=Large_Deployment_Common_stub_export.h
+
+
+ IDL_Files {
+ Common.idl
+ }
+
+ opendds_ts_flags += --export=LARGE_DEPLOYMENT_COMMON_STUB_Export
+
+ DDSGenerator_Files {
+ Common.idl
+ }
+
+ Source_Files {
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.idl
new file mode 100644
index 00000000000..1d7412c3186
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.idl
@@ -0,0 +1,17 @@
+// $Id$
+
+#ifndef LARGE_CONNECTOR_IDL
+#define LARGE_CONNECTOR_IDL
+
+#include <Components.idl>
+#include "Common/Common.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Large_ConnectorE.idl"
+
+module ::CCM_DDS::Typed < ::LargeType, ::LargeTypeSeq> LargeTypeConn;
+connector Large_Connector : LargeTypeConn::DDS_Event
+{
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.mpc
new file mode 100644
index 00000000000..088aad9efe0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Connector/Large_Connector.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -b dds4ccm_base -u Large Large_Connector"
+
+project(Large_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LARGE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Large_Connector_stub_export.h \
+ -Wb,skel_export_macro=LARGE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Large_Connector_svnt_export.h \
+ -Wb,exec_export_macro=LARGE_CONNECTOR_EXEC_Export \
+ -Wb,exec_export_include=Large_Connector_exec_export.h \
+ -Wb,conn_export_macro=LARGE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=LARGE_Connector_conn_export.h \
+ -Gxhex -Gxhsk -Gxhst -I..
+
+ IDL_Files {
+ Large_Connector.idl
+ }
+}
+
+project(Large_Connector_lem_gen) : ciaoidldefaults, dds4ccm_base {
+ after += Large_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LARGE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Large_Connector_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Large_ConnectorE.idl
+ }
+}
+
+project(Large_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += Large_Connector_lem_gen Large_Connector_stub_stub Large_Deployment_stub
+ libs += Large_Connector_stub Large_Deployment_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Large_Connector_lem_stub
+ dynamicflags = LARGE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Large_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Large_ConnectorEC.h
+ Large_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Large_ConnectorEC.inl
+ }
+}
+
+project(Large_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += Large_Connector_idl_gen Large_Deployment_stub
+ libs += Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Large_Connector_stub
+ dynamicflags = LARGE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Large_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Large_ConnectorC.h
+ Large_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Large_ConnectorC.inl
+ }
+}
+
+project(Large_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += Large_Connector_lem_stub Large_Connector_stub
+ sharedname = Large_Connector_exec
+ libs += Large_Connector_stub Large_Connector_lem_stub DDS4CCM_lem_stub Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LARGE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Large_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Large_Connector_conn.h
+ Large_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Large_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += Large_Connector_lem_stub DDS4CCM_lem_stub Large_Connector_exec Large_Connector_stub
+ sharedname = Large_Connector_svnt
+ libs += Large_Connector_stub Large_Connector_lem_stub DDS4CCM_lem_stub Large_Connector_exec Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LARGE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Large_ConnectorS.cpp
+ Large_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Large_ConnectorS.h
+ Large_Connector_svnt.h
+ Large_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Large_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.idl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.idl
new file mode 100644
index 00000000000..fee404a267e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.idl
@@ -0,0 +1,16 @@
+// $Id$
+
+#ifndef DDS_PUB_IDL
+#define DDS_PUB_IDL
+
+#include "Common/Common.idl"
+#include "Connector/Large_Connector.idl"
+
+component DDS_Pub
+{
+ port Large_Connector::DDS_Write info;
+ uses Simple_Service ping_one;
+ uses Simple_Service ping_two;
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.mpc b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.mpc
new file mode 100644
index 00000000000..4778a1b20cf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub.mpc
@@ -0,0 +1,138 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -b dds4ccm_base -u Large DDS_Pub"
+
+project(Large_DDS_Pub_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DDS_PUB_STUB_Export \
+ -Wb,stub_export_include=DDS_Pub_stub_export.h \
+ -Wb,skel_export_macro=DDS_PUB_SVNT_Export \
+ -Wb,skel_export_include=DDS_Pub_svnt_export.h \
+ -Wb,exec_export_macro=DDS_PUB_EXEC_Export \
+ -Wb,exec_export_include=DDS_Pub_exec_export.h \
+ -Gxhex -Gxhsk -Gxhst -I..
+
+ IDL_Files {
+ DDS_Pub.idl
+ }
+}
+
+project(Large_DDS_Pub_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += Large_DDS_Pub_idl_gen Large_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DDS_PUB_LEM_STUB_Export \
+ -Wb,stub_export_include=DDS_Pub_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ DDS_PubE.idl
+ }
+}
+
+project(Large_DDS_Pub_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += Large_DDS_Pub_lem_gen Large_DDS_Pub_stub Large_Deployment_stub
+ libs += DDS_Pub_stub Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Pub_lem_stub
+ dynamicflags = DDS_PUB_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_PubEC.cpp
+ }
+
+ Header_Files {
+ DDS_PubEC.h
+ DDS_Pub_lem_stub_export.h
+ }
+
+ Inline_Files {
+ DDS_PubEC.inl
+ }
+}
+
+project(Large_DDS_Pub_stub) : ccm_stub, dds4ccm_base {
+ after += Large_DDS_Pub_idl_gen Large_Deployment_stub
+ libs += Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Pub_stub
+ dynamicflags = DDS_PUB_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_PubC.cpp
+ }
+
+ Header_Files {
+ DDS_PubC.h
+ DDS_Pub_stub_export.h
+ }
+
+ Inline_Files {
+ DDS_PubC.inl
+ }
+}
+
+project(Large_DDS_Pub_exec) : ciao_executor, dds4ccm_base {
+ after += Large_DDS_Pub_lem_stub Large_DDS_Pub_stub Large_Connector_stub DDS4CCM_lem_stub Large_Connector_lem_stub
+ sharedname = DDS_Pub_exec
+ libs += DDS_Pub_stub DDS_Pub_lem_stub Large_Deployment_stub Large_Connector_stub DDS4CCM_lem_stub Large_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DDS_PUB_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_Pub_exec.cpp
+ }
+
+ Header_Files {
+ DDS_Pub_exec.h
+ DDS_Pub_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Large_DDS_Pub_svnt) : ciao_servant, dds4ccm_base {
+ after += Large_DDS_Pub_lem_stub Large_Connector_stub
+ sharedname = DDS_Pub_svnt
+ libs += DDS_Pub_stub DDS_Pub_lem_stub Large_Deployment_stub
+ libs += Large_Connector_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DDS_PUB_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_PubS.cpp
+ DDS_Pub_svnt.cpp
+ }
+
+ Header_Files {
+ DDS_PubS.h
+ DDS_Pub_svnt.h
+ DDS_Pub_svnt_export.h
+ }
+
+ Inline_Files {
+ DDS_PubS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.cpp
new file mode 100644
index 00000000000..79eefb9e8e0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.cpp
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1277
+
+#include "DDS_Pub_exec.h"
+
+namespace CIAO_DDS_Pub_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: DDS_Pub_exec_i
+ //============================================================
+
+ DDS_Pub_exec_i::DDS_Pub_exec_i (void)
+ {
+ }
+
+ DDS_Pub_exec_i::~DDS_Pub_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes and port operations.
+
+ // Operations from Components::SessionComponent.
+
+ void
+ DDS_Pub_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CCM_DDS_Pub_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ DDS_Pub_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Pub_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Pub_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Pub_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" DDS_PUB_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_DDS_Pub_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ DDS_Pub_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.h
new file mode 100644
index 00000000000..8d1e118879c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Pub/DDS_Pub_exec.h
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1216
+
+#ifndef CIAO_DDS_PUB_EXEC_MKL1YH_H_
+#define CIAO_DDS_PUB_EXEC_MKL1YH_H_
+
+#include /**/ "ace/pre.h"
+
+#include "DDS_PubEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "DDS_Pub_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO_DDS_Pub_Impl
+{
+ class DDS_PUB_EXEC_Export DDS_Pub_exec_i
+ : public virtual DDS_Pub_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ DDS_Pub_exec_i (void);
+ virtual ~DDS_Pub_exec_i (void);
+
+ //@{
+ /** Supported operations and attributes. */
+
+ //@}
+
+ //@{
+ /** Component attributes and port operations. */
+
+ //@}
+
+ //@{
+ /** Operations from Components::SessionComponent. */
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ //@}
+
+
+ private:
+ ::CCM_DDS_Pub_Context_var context_;
+ };
+
+ extern "C" DDS_PUB_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_DDS_Pub_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.idl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.idl
new file mode 100644
index 00000000000..343069b78b8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.idl
@@ -0,0 +1,15 @@
+//$Id$
+
+#ifndef DDS_SUB_IDL
+#define DDS_SUB_IDL
+
+#include "Common/Common.idl"
+#include "Connector/Large_Connector.idl"
+
+component DDS_Sub
+{
+ port Large_Connector::DDS_Listen info_in;
+ port Large_Connector::DDS_Get ingo_get;
+ uses Simple_Service ping_port;
+};
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.mpc b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.mpc
new file mode 100644
index 00000000000..1ff8d09ddc9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub.mpc
@@ -0,0 +1,137 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -b dds4ccm_base -u Large DDS_Sub"
+
+project(Large_DDS_Sub_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DDS_SUB_STUB_Export \
+ -Wb,stub_export_include=DDS_Sub_stub_export.h \
+ -Wb,skel_export_macro=DDS_SUB_SVNT_Export \
+ -Wb,skel_export_include=DDS_Sub_svnt_export.h \
+ -Wb,exec_export_macro=DDS_SUB_EXEC_Export \
+ -Wb,exec_export_include=DDS_Sub_exec_export.h \
+ -Gxhex -Gxhsk -Gxhst -I..
+
+ IDL_Files {
+ DDS_Sub.idl
+ }
+}
+
+project(Large_DDS_Sub_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += Large_DDS_Sub_idl_gen Large_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DDS_SUB_LEM_STUB_Export \
+ -Wb,stub_export_include=DDS_Sub_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ DDS_SubE.idl
+ }
+}
+
+project(Large_DDS_Sub_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += Large_DDS_Sub_lem_gen Large_DDS_Sub_stub Large_Deployment_stub
+ libs += DDS_Sub_stub Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Sub_lem_stub
+ dynamicflags = DDS_SUB_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_SubEC.cpp
+ }
+
+ Header_Files {
+ DDS_SubEC.h
+ DDS_Sub_lem_stub_export.h
+ }
+
+ Inline_Files {
+ DDS_SubEC.inl
+ }
+}
+
+project(Large_DDS_Sub_stub) : ccm_stub, dds4ccm_base {
+ after += Large_DDS_Sub_idl_gen Large_Deployment_stub
+ libs += Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Sub_stub
+ dynamicflags = DDS_SUB_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_SubC.cpp
+ }
+
+ Header_Files {
+ DDS_SubC.h
+ DDS_Sub_stub_export.h
+ }
+
+ Inline_Files {
+ DDS_SubC.inl
+ }
+}
+
+project(Large_DDS_Sub_exec) : ciao_executor, dds4ccm_base {
+ after += Large_DDS_Sub_lem_stub Large_DDS_Sub_stub Large_Connector_stub DDS4CCM_lem_stub Large_Connector_lem_stub
+ sharedname = DDS_Sub_exec
+ libs += DDS_Sub_stub DDS_Sub_lem_stub Large_Deployment_stub Large_Connector_stub DDS4CCM_lem_stub Large_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DDS_SUB_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_Sub_exec.cpp
+ }
+
+ Header_Files {
+ DDS_Sub_exec.h
+ DDS_Sub_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Large_DDS_Sub_svnt) : ciao_servant, dds4ccm_base {
+ after += Large_DDS_Sub_lem_stub Large_Connector_stub
+ sharedname = DDS_Sub_svnt
+ libs += DDS_Sub_stub DDS_Sub_lem_stub Large_Deployment_stub Large_Connector_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DDS_SUB_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DDS_SubS.cpp
+ DDS_Sub_svnt.cpp
+ }
+
+ Header_Files {
+ DDS_SubS.h
+ DDS_Sub_svnt.h
+ DDS_Sub_svnt_export.h
+ }
+
+ Inline_Files {
+ DDS_SubS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.cpp
new file mode 100644
index 00000000000..a90efcf4fc1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.cpp
@@ -0,0 +1,182 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1277
+
+#include "DDS_Sub_exec.h"
+
+namespace CIAO_DDS_Sub_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: Listener_exec_i
+ //============================================================
+
+ Listener_exec_i::Listener_exec_i (void)
+ {
+ }
+
+ Listener_exec_i::~Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::LargeTypeConn::Listener
+
+ void
+ Listener_exec_i::on_one_data (
+ const ::LargeType & /* datum */,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Listener_exec_i::on_many_data (
+ const ::LargeTypeSeq & /* data */,
+ const ::CCM_DDS::ReadInfoSeq & /* infos */)
+ {
+ /* Your code here. */
+ }
+ //============================================================
+ // Facet Executor Implementation Class: PortStatusListener_exec_i
+ //============================================================
+
+ PortStatusListener_exec_i::PortStatusListener_exec_i (void)
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ /* Your code here. */
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ /* Your code here. */
+ }
+ //============================================================
+ // Component Executor Implementation Class: DDS_Sub_exec_i
+ //============================================================
+
+ DDS_Sub_exec_i::DDS_Sub_exec_i (void)
+ {
+ }
+
+ DDS_Sub_exec_i::~DDS_Sub_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes and port operations.
+
+ ::LargeTypeConn::CCM_Listener_ptr
+ DDS_Sub_exec_i::get_info_in_data_listener (void)
+ {
+ /* Your code here. */
+ return ::LargeTypeConn::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ DDS_Sub_exec_i::get_info_in_status (void)
+ {
+ /* Your code here. */
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ DDS_Sub_exec_i::get_ingo_get_status (void)
+ {
+ /* Your code here. */
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ DDS_Sub_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CCM_DDS_Sub_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ DDS_Sub_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Sub_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Sub_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ DDS_Sub_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" DDS_SUB_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_DDS_Sub_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ DDS_Sub_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.h
new file mode 100644
index 00000000000..4f461606c02
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/DDS_Sub/DDS_Sub_exec.h
@@ -0,0 +1,160 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1216
+
+#ifndef CIAO_DDS_SUB_EXEC_NW9STU_H_
+#define CIAO_DDS_SUB_EXEC_NW9STU_H_
+
+#include /**/ "ace/pre.h"
+
+#include "DDS_SubEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "DDS_Sub_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO_DDS_Sub_Impl
+{
+ // TAO_IDL - Generated from
+ // be/be_visitor_component/facet_exh.cpp:53
+
+ class DDS_SUB_EXEC_Export Listener_exec_i
+ : public virtual ::LargeTypeConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Listener_exec_i (void);
+ virtual ~Listener_exec_i (void);
+
+ // Operations and attributes from ::LargeTypeConn::Listener
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:37
+
+ virtual void
+ on_one_data (
+ const ::LargeType & datum,
+ const ::CCM_DDS::ReadInfo & info) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:37
+
+ virtual void
+ on_many_data (
+ const ::LargeTypeSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & infos) = 0;
+ };
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_component/facet_exh.cpp:53
+
+ class DDS_SUB_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (void);
+ virtual ~PortStatusListener_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::PortStatusListener
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:37
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:37
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status) = 0;
+ };
+
+ class DDS_SUB_EXEC_Export DDS_Sub_exec_i
+ : public virtual DDS_Sub_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ DDS_Sub_exec_i (void);
+ virtual ~DDS_Sub_exec_i (void);
+
+ //@{
+ /** Supported operations and attributes. */
+
+ //@}
+
+ //@{
+ /** Component attributes and port operations. */
+
+
+ virtual ::LargeTypeConn::CCM_Listener_ptr
+ get_info_in_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_in_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_ingo_get_status (void);
+ //@}
+
+ //@{
+ /** Operations from Components::SessionComponent. */
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ //@}
+
+
+ private:
+ ::CCM_DDS_Sub_Context_var context_;
+ };
+
+ extern "C" DDS_SUB_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_DDS_Sub_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.idl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.idl
new file mode 100644
index 00000000000..d0952f70803
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.idl
@@ -0,0 +1,14 @@
+// $Id$
+
+#ifndef SINGLE_SERVICE_IDL
+#define SINGLE_SERVICE_IDL
+
+#include <Components.idl>
+#include "Common/Common.idl"
+
+component Single_Service
+{
+ provides Simple_Service ping_port;
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.mpc b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.mpc
new file mode 100644
index 00000000000..aeabc169ee1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service.mpc
@@ -0,0 +1,138 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -o ../lib -l ../lib Single_Service"
+
+project(Single_Service_idl_gen) : componentidldefaults {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SINGLE_SERVICE_STUB_Export \
+ -Wb,stub_export_include=Single_Service_stub_export.h \
+ -Wb,skel_export_macro=SINGLE_SERVICE_SVNT_Export \
+ -Wb,skel_export_include=Single_Service_svnt_export.h \
+ -Wb,exec_export_macro=SINGLE_SERVICE_EXEC_Export \
+ -Wb,exec_export_include=Single_Service_exec_export.h \
+ -Gxhex -Gxhsk -Gxhst -I.. -Glfa
+
+ IDL_Files {
+ Single_Service.idl
+ }
+}
+
+project(Single_Service_lem_gen) : ciaoidldefaults {
+ after += Single_Service_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SINGLE_SERVICE_LEM_STUB_Export \
+ -Wb,stub_export_include=Single_Service_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Single_ServiceE.idl
+ }
+}
+
+project(Single_Service_lem_stub) : ccm_svnt {
+ after += Single_Service_lem_gen Single_Service_stub Large_Deployment_stub
+ libs += Single_Service_stub Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Single_Service_lem_stub
+ dynamicflags = SINGLE_SERVICE_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Single_ServiceEC.cpp
+ }
+
+ Header_Files {
+ Single_ServiceEC.h
+ Single_Service_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Single_ServiceEC.inl
+ }
+}
+
+project(Single_Service_stub) : ccm_stub {
+ after += Single_Service_idl_gen Large_Deployment_stub
+ libs += Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Single_Service_stub
+ dynamicflags = SINGLE_SERVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Single_ServiceC.cpp
+ }
+
+ Header_Files {
+ Single_ServiceC.h
+ Single_Service_stub_export.h
+ }
+
+ Inline_Files {
+ Single_ServiceC.inl
+ }
+}
+
+project(Single_Service_exec) : ciao_executor {
+ after += Single_Service_lem_stub Single_Service_stub
+ sharedname = Single_Service_exec
+ libs += Single_Service_stub Single_Service_lem_stub Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SINGLE_SERVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Single_Service_exec.cpp
+ }
+
+ Header_Files {
+ Single_Service_exec.h
+ Single_Service_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Single_Service_svnt) : ciao_servant {
+ after += Single_Service_lem_stub
+ sharedname = Single_Service_svnt
+ libs += Single_Service_stub Single_Service_lem_stub \
+ Large_Deployment_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SINGLE_SERVICE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Single_ServiceS.cpp
+ Single_Service_svnt.cpp
+ }
+
+ Header_Files {
+ Single_ServiceS.h
+ Single_Service_svnt.h
+ Single_Service_svnt_export.h
+ }
+
+ Inline_Files {
+ Single_ServiceS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.cpp
new file mode 100644
index 00000000000..efdca13b09c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.cpp
@@ -0,0 +1,130 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1277
+
+#include "Single_Service_exec.h"
+
+namespace CIAO_Single_Service_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: Simple_Service_exec_i
+ //============================================================
+
+ Simple_Service_exec_i::Simple_Service_exec_i (void)
+ {
+ }
+
+ Simple_Service_exec_i::~Simple_Service_exec_i (void)
+ {
+ }
+
+ // Operations from ::Simple_Service
+
+ void
+ Simple_Service_exec_i::ping (void)
+ {
+ /* Your code here. */
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Single_Service_exec_i
+ //============================================================
+
+ Single_Service_exec_i::Single_Service_exec_i (void)
+ {
+ }
+
+ Single_Service_exec_i::~Single_Service_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes and port operations.
+
+ ::CCM_Simple_Service_ptr
+ Single_Service_exec_i::get_ping_port (void)
+ {
+ /* Your code here. */
+ return ::CCM_Simple_Service::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Single_Service_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CCM_Single_Service_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Single_Service_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Single_Service_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Single_Service_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Single_Service_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" SINGLE_SERVICE_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Single_Service_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Single_Service_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.h
new file mode 100644
index 00000000000..52f57318dbf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/Single_Service/Single_Service_exec.h
@@ -0,0 +1,114 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.7
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1216
+
+#ifndef CIAO_SINGLE_SERVICE_EXEC_AZRZEB_H_
+#define CIAO_SINGLE_SERVICE_EXEC_AZRZEB_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Single_ServiceEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Single_Service_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO_Single_Service_Impl
+{
+ // TAO_IDL - Generated from
+ // be/be_visitor_component/facet_exh.cpp:53
+
+ class SINGLE_SERVICE_EXEC_Export Simple_Service_exec_i
+ : public virtual ::CCM_Simple_Service,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Simple_Service_exec_i (void);
+ virtual ~Simple_Service_exec_i (void);
+
+ // Operations and attributes from ::Simple_Service
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:37
+
+ virtual void
+ ping (void);
+ };
+
+ class SINGLE_SERVICE_EXEC_Export Single_Service_exec_i
+ : public virtual Single_Service_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Single_Service_exec_i (void);
+ virtual ~Single_Service_exec_i (void);
+
+ //@{
+ /** Supported operations and attributes. */
+
+ //@}
+
+ //@{
+ /** Component attributes and port operations. */
+
+
+ virtual ::CCM_Simple_Service_ptr
+ get_ping_port (void);
+ //@}
+
+ //@{
+ /** Operations from Components::SessionComponent. */
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ //@}
+
+
+ private:
+ ::CCM_Single_Service_Context_var context_;
+ };
+
+ extern "C" SINGLE_SERVICE_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Single_Service_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/LargePlan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/LargePlan.cdp
new file mode 100644
index 00000000000..0a3b8f089c6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/LargePlan.cdp
@@ -0,0 +1,90684 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Large_Plan</label>
+ <UUID>Large_Plan</UUID>
+
+<implementation xmi:id="Large_ConnectorComponentImplementation">
+ <name>Large_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Large_Connector_ExecArtifact" />
+ <artifact xmi:idref="Large_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Large_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Large_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Large_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Large_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+</implementation>
+<implementation xmi:id="Single_ServiceComponentImplementation">
+ <name>Single_ServiceComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Single_Service_ExecArtifact" />
+ <artifact xmi:idref="Single_Service_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Single_Service_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Single_Service_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Single_Service_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Single_Service_exec</string>
+ </value>
+ </value>
+ </execParameter>
+</implementation>
+<implementation xmi:id="DDS_PubComponentImplementation">
+ <name>DDS_PubComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="DDS_Pub_ExecArtifact" />
+ <artifact xmi:idref="DDS_Pub_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_DDS_Pub_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_DDS_Pub_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Pub_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Pub_exec</string>
+ </value>
+ </value>
+ </execParameter>
+</implementation>
+<implementation xmi:id="DDS_SubComponentImplementation">
+ <name>DDS_SubComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="DDS_Sub_ExecArtifact" />
+ <artifact xmi:idref="DDS_Sub_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_DDS_Sub_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_DDS_Sub_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Sub_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Sub_exec</string>
+ </value>
+ </value>
+ </execParameter>
+</implementation>
+<instance xmi:id="Pub_Node_0_0_0_ComponentInstance">
+ <name>Pub_Node_0_0_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_0__prov1ComponentInstance">
+ <name>Pub_Node_0_0_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_0__prov2ComponentInstance">
+ <name>Pub_Node_0_0_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_0_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_202</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_1_ComponentInstance">
+ <name>Pub_Node_0_0_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_1__prov1ComponentInstance">
+ <name>Pub_Node_0_0_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_1__prov2ComponentInstance">
+ <name>Pub_Node_0_0_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_0_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_153</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_0_ComponentInstance">
+ <name>Sub_Node_0_0_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_0__prov1ComponentInstance">
+ <name>Sub_Node_0_0_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_0__prov2ComponentInstance">
+ <name>Sub_Node_0_0_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_0_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_150</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_1_ComponentInstance">
+ <name>Sub_Node_0_0_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_1__prov1ComponentInstance">
+ <name>Sub_Node_0_0_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_1__prov2ComponentInstance">
+ <name>Sub_Node_0_0_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_0_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_186</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_0_ComponentInstance">
+ <name>Pub_Node_0_1_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_0__prov1ComponentInstance">
+ <name>Pub_Node_0_1_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_0__prov2ComponentInstance">
+ <name>Pub_Node_0_1_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_1_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_61</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_1_ComponentInstance">
+ <name>Pub_Node_0_1_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_1__prov1ComponentInstance">
+ <name>Pub_Node_0_1_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_1__prov2ComponentInstance">
+ <name>Pub_Node_0_1_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_1_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_216</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_0_ComponentInstance">
+ <name>Sub_Node_0_1_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_0__prov1ComponentInstance">
+ <name>Sub_Node_0_1_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_0__prov2ComponentInstance">
+ <name>Sub_Node_0_1_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_1_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_169</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_1_ComponentInstance">
+ <name>Sub_Node_0_1_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_1__prov1ComponentInstance">
+ <name>Sub_Node_0_1_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_1__prov2ComponentInstance">
+ <name>Sub_Node_0_1_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_1_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_37</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_0_ComponentInstance">
+ <name>Pub_Node_0_2_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_0__prov1ComponentInstance">
+ <name>Pub_Node_0_2_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_0__prov2ComponentInstance">
+ <name>Pub_Node_0_2_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_2_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_94</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_1_ComponentInstance">
+ <name>Pub_Node_0_2_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_1__prov1ComponentInstance">
+ <name>Pub_Node_0_2_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_1__prov2ComponentInstance">
+ <name>Pub_Node_0_2_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_2_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_188</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_0_ComponentInstance">
+ <name>Sub_Node_0_2_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_0__prov1ComponentInstance">
+ <name>Sub_Node_0_2_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_0__prov2ComponentInstance">
+ <name>Sub_Node_0_2_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_2_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_1_ComponentInstance">
+ <name>Sub_Node_0_2_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_1__prov1ComponentInstance">
+ <name>Sub_Node_0_2_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_1__prov2ComponentInstance">
+ <name>Sub_Node_0_2_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_2_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_194</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_0_ComponentInstance">
+ <name>Pub_Node_0_3_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_0__prov1ComponentInstance">
+ <name>Pub_Node_0_3_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_0__prov2ComponentInstance">
+ <name>Pub_Node_0_3_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_3_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_183</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_1_ComponentInstance">
+ <name>Pub_Node_0_3_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_1__prov1ComponentInstance">
+ <name>Pub_Node_0_3_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_1__prov2ComponentInstance">
+ <name>Pub_Node_0_3_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_3_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_32</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_0_ComponentInstance">
+ <name>Sub_Node_0_3_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_0__prov1ComponentInstance">
+ <name>Sub_Node_0_3_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_0__prov2ComponentInstance">
+ <name>Sub_Node_0_3_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_3_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_43</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_1_ComponentInstance">
+ <name>Sub_Node_0_3_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_1__prov1ComponentInstance">
+ <name>Sub_Node_0_3_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_1__prov2ComponentInstance">
+ <name>Sub_Node_0_3_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_3_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_73</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_0_ComponentInstance">
+ <name>Pub_Node_0_4_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_0__prov1ComponentInstance">
+ <name>Pub_Node_0_4_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_0__prov2ComponentInstance">
+ <name>Pub_Node_0_4_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_4_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_128</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_1_ComponentInstance">
+ <name>Pub_Node_0_4_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_1__prov1ComponentInstance">
+ <name>Pub_Node_0_4_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_1__prov2ComponentInstance">
+ <name>Pub_Node_0_4_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_4_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_101</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_0_ComponentInstance">
+ <name>Sub_Node_0_4_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_0__prov1ComponentInstance">
+ <name>Sub_Node_0_4_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_0__prov2ComponentInstance">
+ <name>Sub_Node_0_4_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_4_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_203</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_1_ComponentInstance">
+ <name>Sub_Node_0_4_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_1__prov1ComponentInstance">
+ <name>Sub_Node_0_4_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_1__prov2ComponentInstance">
+ <name>Sub_Node_0_4_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_4_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_71</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_0_ComponentInstance">
+ <name>Pub_Node_0_5_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_0__prov1ComponentInstance">
+ <name>Pub_Node_0_5_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_0__prov2ComponentInstance">
+ <name>Pub_Node_0_5_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_5_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_192</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_1_ComponentInstance">
+ <name>Pub_Node_0_5_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_1__prov1ComponentInstance">
+ <name>Pub_Node_0_5_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_1__prov2ComponentInstance">
+ <name>Pub_Node_0_5_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_5_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_64</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_0_ComponentInstance">
+ <name>Sub_Node_0_5_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_0__prov1ComponentInstance">
+ <name>Sub_Node_0_5_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_0__prov2ComponentInstance">
+ <name>Sub_Node_0_5_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_5_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_1_ComponentInstance">
+ <name>Sub_Node_0_5_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_1__prov1ComponentInstance">
+ <name>Sub_Node_0_5_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_1__prov2ComponentInstance">
+ <name>Sub_Node_0_5_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_5_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_15</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_0_ComponentInstance">
+ <name>Pub_Node_0_6_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_0__prov1ComponentInstance">
+ <name>Pub_Node_0_6_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_0__prov2ComponentInstance">
+ <name>Pub_Node_0_6_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_6_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_1_ComponentInstance">
+ <name>Pub_Node_0_6_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_1__prov1ComponentInstance">
+ <name>Pub_Node_0_6_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_1__prov2ComponentInstance">
+ <name>Pub_Node_0_6_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_6_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_55</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_0_ComponentInstance">
+ <name>Sub_Node_0_6_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_0__prov1ComponentInstance">
+ <name>Sub_Node_0_6_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_0__prov2ComponentInstance">
+ <name>Sub_Node_0_6_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_6_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_1_ComponentInstance">
+ <name>Sub_Node_0_6_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_1__prov1ComponentInstance">
+ <name>Sub_Node_0_6_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_1__prov2ComponentInstance">
+ <name>Sub_Node_0_6_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_6_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_172</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_0_ComponentInstance">
+ <name>Pub_Node_0_7_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_0__prov1ComponentInstance">
+ <name>Pub_Node_0_7_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_0__prov2ComponentInstance">
+ <name>Pub_Node_0_7_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_7_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_60</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_1_ComponentInstance">
+ <name>Pub_Node_0_7_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_1__prov1ComponentInstance">
+ <name>Pub_Node_0_7_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_1__prov2ComponentInstance">
+ <name>Pub_Node_0_7_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_7_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_238</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_0_ComponentInstance">
+ <name>Sub_Node_0_7_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_0__prov1ComponentInstance">
+ <name>Sub_Node_0_7_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_0__prov2ComponentInstance">
+ <name>Sub_Node_0_7_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_7_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_151</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_1_ComponentInstance">
+ <name>Sub_Node_0_7_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_1__prov1ComponentInstance">
+ <name>Sub_Node_0_7_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_1__prov2ComponentInstance">
+ <name>Sub_Node_0_7_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_7_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_66</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_0_ComponentInstance">
+ <name>Pub_Node_0_8_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_0__prov1ComponentInstance">
+ <name>Pub_Node_0_8_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_0__prov2ComponentInstance">
+ <name>Pub_Node_0_8_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_8_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_164</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_1_ComponentInstance">
+ <name>Pub_Node_0_8_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_1__prov1ComponentInstance">
+ <name>Pub_Node_0_8_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_1__prov2ComponentInstance">
+ <name>Pub_Node_0_8_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_8_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_94</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_0_ComponentInstance">
+ <name>Sub_Node_0_8_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_0__prov1ComponentInstance">
+ <name>Sub_Node_0_8_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_0__prov2ComponentInstance">
+ <name>Sub_Node_0_8_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_8_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_49</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_1_ComponentInstance">
+ <name>Sub_Node_0_8_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_1__prov1ComponentInstance">
+ <name>Sub_Node_0_8_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_1__prov2ComponentInstance">
+ <name>Sub_Node_0_8_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_8_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_80</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_0_ComponentInstance">
+ <name>Pub_Node_0_9_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_0__prov1ComponentInstance">
+ <name>Pub_Node_0_9_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_0__prov2ComponentInstance">
+ <name>Pub_Node_0_9_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_9_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_1_ComponentInstance">
+ <name>Pub_Node_0_9_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_1__prov1ComponentInstance">
+ <name>Pub_Node_0_9_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_1__prov2ComponentInstance">
+ <name>Pub_Node_0_9_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_9_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_37</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_0_ComponentInstance">
+ <name>Sub_Node_0_9_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_0__prov1ComponentInstance">
+ <name>Sub_Node_0_9_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_0__prov2ComponentInstance">
+ <name>Sub_Node_0_9_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_9_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_166</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_1_ComponentInstance">
+ <name>Sub_Node_0_9_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_1__prov1ComponentInstance">
+ <name>Sub_Node_0_9_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_1__prov2ComponentInstance">
+ <name>Sub_Node_0_9_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_9_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_28</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_0_ComponentInstance">
+ <name>Pub_Node_0_10_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_0__prov1ComponentInstance">
+ <name>Pub_Node_0_10_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_0__prov2ComponentInstance">
+ <name>Pub_Node_0_10_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_10_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_105</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_1_ComponentInstance">
+ <name>Pub_Node_0_10_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_1__prov1ComponentInstance">
+ <name>Pub_Node_0_10_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_1__prov2ComponentInstance">
+ <name>Pub_Node_0_10_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_10_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_89</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_0_ComponentInstance">
+ <name>Sub_Node_0_10_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_0__prov1ComponentInstance">
+ <name>Sub_Node_0_10_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_0__prov2ComponentInstance">
+ <name>Sub_Node_0_10_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_10_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_106</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_1_ComponentInstance">
+ <name>Sub_Node_0_10_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_1__prov1ComponentInstance">
+ <name>Sub_Node_0_10_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_1__prov2ComponentInstance">
+ <name>Sub_Node_0_10_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_10_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_139</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_0_ComponentInstance">
+ <name>Pub_Node_0_11_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_0__prov1ComponentInstance">
+ <name>Pub_Node_0_11_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_0__prov2ComponentInstance">
+ <name>Pub_Node_0_11_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_11_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_92</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_1_ComponentInstance">
+ <name>Pub_Node_0_11_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_1__prov1ComponentInstance">
+ <name>Pub_Node_0_11_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_1__prov2ComponentInstance">
+ <name>Pub_Node_0_11_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_11_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_189</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_0_ComponentInstance">
+ <name>Sub_Node_0_11_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_0__prov1ComponentInstance">
+ <name>Sub_Node_0_11_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_0__prov2ComponentInstance">
+ <name>Sub_Node_0_11_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_11_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_167</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_1_ComponentInstance">
+ <name>Sub_Node_0_11_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_1__prov1ComponentInstance">
+ <name>Sub_Node_0_11_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_1__prov2ComponentInstance">
+ <name>Sub_Node_0_11_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_11_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_0_ComponentInstance">
+ <name>Pub_Node_0_12_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_0__prov1ComponentInstance">
+ <name>Pub_Node_0_12_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_0__prov2ComponentInstance">
+ <name>Pub_Node_0_12_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_12_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_100</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_1_ComponentInstance">
+ <name>Pub_Node_0_12_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_1__prov1ComponentInstance">
+ <name>Pub_Node_0_12_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_1__prov2ComponentInstance">
+ <name>Pub_Node_0_12_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_12_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_194</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_0_ComponentInstance">
+ <name>Sub_Node_0_12_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_0__prov1ComponentInstance">
+ <name>Sub_Node_0_12_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_0__prov2ComponentInstance">
+ <name>Sub_Node_0_12_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_12_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_249</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_1_ComponentInstance">
+ <name>Sub_Node_0_12_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_1__prov1ComponentInstance">
+ <name>Sub_Node_0_12_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_1__prov2ComponentInstance">
+ <name>Sub_Node_0_12_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_12_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_0_ComponentInstance">
+ <name>Pub_Node_0_13_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_0__prov1ComponentInstance">
+ <name>Pub_Node_0_13_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_0__prov2ComponentInstance">
+ <name>Pub_Node_0_13_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_13_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_1_ComponentInstance">
+ <name>Pub_Node_0_13_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_1__prov1ComponentInstance">
+ <name>Pub_Node_0_13_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_1__prov2ComponentInstance">
+ <name>Pub_Node_0_13_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_13_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_0_ComponentInstance">
+ <name>Sub_Node_0_13_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_0__prov1ComponentInstance">
+ <name>Sub_Node_0_13_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_0__prov2ComponentInstance">
+ <name>Sub_Node_0_13_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_13_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_177</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_1_ComponentInstance">
+ <name>Sub_Node_0_13_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_1__prov1ComponentInstance">
+ <name>Sub_Node_0_13_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_1__prov2ComponentInstance">
+ <name>Sub_Node_0_13_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_13_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_0_ComponentInstance">
+ <name>Pub_Node_0_14_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_0__prov1ComponentInstance">
+ <name>Pub_Node_0_14_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_0__prov2ComponentInstance">
+ <name>Pub_Node_0_14_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_14_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_199</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_1_ComponentInstance">
+ <name>Pub_Node_0_14_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_1__prov1ComponentInstance">
+ <name>Pub_Node_0_14_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_1__prov2ComponentInstance">
+ <name>Pub_Node_0_14_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_14_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_25</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_0_ComponentInstance">
+ <name>Sub_Node_0_14_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_0__prov1ComponentInstance">
+ <name>Sub_Node_0_14_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_0__prov2ComponentInstance">
+ <name>Sub_Node_0_14_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_14_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_179</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_1_ComponentInstance">
+ <name>Sub_Node_0_14_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_1__prov1ComponentInstance">
+ <name>Sub_Node_0_14_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_1__prov2ComponentInstance">
+ <name>Sub_Node_0_14_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_14_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_197</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_0_ComponentInstance">
+ <name>Pub_Node_0_15_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_0__prov1ComponentInstance">
+ <name>Pub_Node_0_15_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_0__prov2ComponentInstance">
+ <name>Pub_Node_0_15_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_15_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_187</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_1_ComponentInstance">
+ <name>Pub_Node_0_15_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_1__prov1ComponentInstance">
+ <name>Pub_Node_0_15_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_1__prov2ComponentInstance">
+ <name>Pub_Node_0_15_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_15_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_93</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_0_ComponentInstance">
+ <name>Sub_Node_0_15_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_0__prov1ComponentInstance">
+ <name>Sub_Node_0_15_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_0__prov2ComponentInstance">
+ <name>Sub_Node_0_15_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_15_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_137</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_1_ComponentInstance">
+ <name>Sub_Node_0_15_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_1__prov1ComponentInstance">
+ <name>Sub_Node_0_15_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_1__prov2ComponentInstance">
+ <name>Sub_Node_0_15_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_15_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_90</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_0_ComponentInstance">
+ <name>Pub_Node_0_16_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_0__prov1ComponentInstance">
+ <name>Pub_Node_0_16_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_0__prov2ComponentInstance">
+ <name>Pub_Node_0_16_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_16_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_158</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_1_ComponentInstance">
+ <name>Pub_Node_0_16_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_1__prov1ComponentInstance">
+ <name>Pub_Node_0_16_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_1__prov2ComponentInstance">
+ <name>Pub_Node_0_16_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_16_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_3</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_0_ComponentInstance">
+ <name>Sub_Node_0_16_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_0__prov1ComponentInstance">
+ <name>Sub_Node_0_16_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_0__prov2ComponentInstance">
+ <name>Sub_Node_0_16_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_16_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_100</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_1_ComponentInstance">
+ <name>Sub_Node_0_16_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_1__prov1ComponentInstance">
+ <name>Sub_Node_0_16_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_1__prov2ComponentInstance">
+ <name>Sub_Node_0_16_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_16_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_103</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_0_ComponentInstance">
+ <name>Pub_Node_0_17_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_0__prov1ComponentInstance">
+ <name>Pub_Node_0_17_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_0__prov2ComponentInstance">
+ <name>Pub_Node_0_17_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_17_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_1_ComponentInstance">
+ <name>Pub_Node_0_17_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_1__prov1ComponentInstance">
+ <name>Pub_Node_0_17_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_1__prov2ComponentInstance">
+ <name>Pub_Node_0_17_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_17_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_210</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_0_ComponentInstance">
+ <name>Sub_Node_0_17_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_0__prov1ComponentInstance">
+ <name>Sub_Node_0_17_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_0__prov2ComponentInstance">
+ <name>Sub_Node_0_17_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_17_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_90</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_1_ComponentInstance">
+ <name>Sub_Node_0_17_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_1__prov1ComponentInstance">
+ <name>Sub_Node_0_17_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_1__prov2ComponentInstance">
+ <name>Sub_Node_0_17_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_17_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_10</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_0_ComponentInstance">
+ <name>Pub_Node_0_18_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_0__prov1ComponentInstance">
+ <name>Pub_Node_0_18_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_0__prov2ComponentInstance">
+ <name>Pub_Node_0_18_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_18_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_30</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_1_ComponentInstance">
+ <name>Pub_Node_0_18_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_1__prov1ComponentInstance">
+ <name>Pub_Node_0_18_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_1__prov2ComponentInstance">
+ <name>Pub_Node_0_18_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_18_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_165</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_0_ComponentInstance">
+ <name>Sub_Node_0_18_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_0__prov1ComponentInstance">
+ <name>Sub_Node_0_18_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_0__prov2ComponentInstance">
+ <name>Sub_Node_0_18_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_18_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_1_ComponentInstance">
+ <name>Sub_Node_0_18_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_1__prov1ComponentInstance">
+ <name>Sub_Node_0_18_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_1__prov2ComponentInstance">
+ <name>Sub_Node_0_18_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_18_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_99</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_0_ComponentInstance">
+ <name>Pub_Node_0_19_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_0__prov1ComponentInstance">
+ <name>Pub_Node_0_19_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_0__prov2ComponentInstance">
+ <name>Pub_Node_0_19_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_19_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_1_ComponentInstance">
+ <name>Pub_Node_0_19_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_1__prov1ComponentInstance">
+ <name>Pub_Node_0_19_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_1__prov2ComponentInstance">
+ <name>Pub_Node_0_19_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_0_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_0_19_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_218</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_0_ComponentInstance">
+ <name>Sub_Node_0_19_0_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_0__prov1ComponentInstance">
+ <name>Sub_Node_0_19_0__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_0__prov2ComponentInstance">
+ <name>Sub_Node_0_19_0__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_19_0_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_1</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_1_ComponentInstance">
+ <name>Sub_Node_0_19_1_Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_1__prov1ComponentInstance">
+ <name>Sub_Node_0_19_1__prov1Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_1__prov2ComponentInstance">
+ <name>Sub_Node_0_19_1__prov2Component</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_0_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_0_19_1_DDSConnectorComponent</name>
+ <node>Node_0</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_238</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_0_ComponentInstance">
+ <name>Pub_Node_1_0_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_0__prov1ComponentInstance">
+ <name>Pub_Node_1_0_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_0__prov2ComponentInstance">
+ <name>Pub_Node_1_0_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_0_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_203</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_1_ComponentInstance">
+ <name>Pub_Node_1_0_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_1__prov1ComponentInstance">
+ <name>Pub_Node_1_0_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_1__prov2ComponentInstance">
+ <name>Pub_Node_1_0_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_0_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_0</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_0_ComponentInstance">
+ <name>Sub_Node_1_0_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_0__prov1ComponentInstance">
+ <name>Sub_Node_1_0_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_0__prov2ComponentInstance">
+ <name>Sub_Node_1_0_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_0_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_153</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_1_ComponentInstance">
+ <name>Sub_Node_1_0_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_1__prov1ComponentInstance">
+ <name>Sub_Node_1_0_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_1__prov2ComponentInstance">
+ <name>Sub_Node_1_0_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_0_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_201</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_0_ComponentInstance">
+ <name>Pub_Node_1_1_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_0__prov1ComponentInstance">
+ <name>Pub_Node_1_1_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_0__prov2ComponentInstance">
+ <name>Pub_Node_1_1_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_1_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_1_ComponentInstance">
+ <name>Pub_Node_1_1_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_1__prov1ComponentInstance">
+ <name>Pub_Node_1_1_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_1__prov2ComponentInstance">
+ <name>Pub_Node_1_1_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_1_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_165</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_0_ComponentInstance">
+ <name>Sub_Node_1_1_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_0__prov1ComponentInstance">
+ <name>Sub_Node_1_1_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_0__prov2ComponentInstance">
+ <name>Sub_Node_1_1_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_1_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_161</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_1_ComponentInstance">
+ <name>Sub_Node_1_1_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_1__prov1ComponentInstance">
+ <name>Sub_Node_1_1_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_1__prov2ComponentInstance">
+ <name>Sub_Node_1_1_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_1_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_6</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_0_ComponentInstance">
+ <name>Pub_Node_1_2_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_0__prov1ComponentInstance">
+ <name>Pub_Node_1_2_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_0__prov2ComponentInstance">
+ <name>Pub_Node_1_2_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_2_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_0</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_1_ComponentInstance">
+ <name>Pub_Node_1_2_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_1__prov1ComponentInstance">
+ <name>Pub_Node_1_2_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_1__prov2ComponentInstance">
+ <name>Pub_Node_1_2_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_2_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_0_ComponentInstance">
+ <name>Sub_Node_1_2_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_0__prov1ComponentInstance">
+ <name>Sub_Node_1_2_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_0__prov2ComponentInstance">
+ <name>Sub_Node_1_2_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_2_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_92</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_1_ComponentInstance">
+ <name>Sub_Node_1_2_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_1__prov1ComponentInstance">
+ <name>Sub_Node_1_2_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_1__prov2ComponentInstance">
+ <name>Sub_Node_1_2_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_2_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_208</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_0_ComponentInstance">
+ <name>Pub_Node_1_3_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_0__prov1ComponentInstance">
+ <name>Pub_Node_1_3_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_0__prov2ComponentInstance">
+ <name>Pub_Node_1_3_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_3_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_216</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_1_ComponentInstance">
+ <name>Pub_Node_1_3_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_1__prov1ComponentInstance">
+ <name>Pub_Node_1_3_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_1__prov2ComponentInstance">
+ <name>Pub_Node_1_3_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_3_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_162</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_0_ComponentInstance">
+ <name>Sub_Node_1_3_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_0__prov1ComponentInstance">
+ <name>Sub_Node_1_3_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_0__prov2ComponentInstance">
+ <name>Sub_Node_1_3_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_3_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_3</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_1_ComponentInstance">
+ <name>Sub_Node_1_3_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_1__prov1ComponentInstance">
+ <name>Sub_Node_1_3_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_1__prov2ComponentInstance">
+ <name>Sub_Node_1_3_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_3_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_61</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_0_ComponentInstance">
+ <name>Pub_Node_1_4_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_0__prov1ComponentInstance">
+ <name>Pub_Node_1_4_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_0__prov2ComponentInstance">
+ <name>Pub_Node_1_4_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_4_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_98</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_1_ComponentInstance">
+ <name>Pub_Node_1_4_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_1__prov1ComponentInstance">
+ <name>Pub_Node_1_4_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_1__prov2ComponentInstance">
+ <name>Pub_Node_1_4_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_4_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_46</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_0_ComponentInstance">
+ <name>Sub_Node_1_4_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_0__prov1ComponentInstance">
+ <name>Sub_Node_1_4_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_0__prov2ComponentInstance">
+ <name>Sub_Node_1_4_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_4_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_98</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_1_ComponentInstance">
+ <name>Sub_Node_1_4_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_1__prov1ComponentInstance">
+ <name>Sub_Node_1_4_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_1__prov2ComponentInstance">
+ <name>Sub_Node_1_4_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_4_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_85</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_0_ComponentInstance">
+ <name>Pub_Node_1_5_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_0__prov1ComponentInstance">
+ <name>Pub_Node_1_5_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_0__prov2ComponentInstance">
+ <name>Pub_Node_1_5_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_5_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_1_ComponentInstance">
+ <name>Pub_Node_1_5_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_1__prov1ComponentInstance">
+ <name>Pub_Node_1_5_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_1__prov2ComponentInstance">
+ <name>Pub_Node_1_5_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_5_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_233</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_0_ComponentInstance">
+ <name>Sub_Node_1_5_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_0__prov1ComponentInstance">
+ <name>Sub_Node_1_5_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_0__prov2ComponentInstance">
+ <name>Sub_Node_1_5_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_5_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_183</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_1_ComponentInstance">
+ <name>Sub_Node_1_5_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_1__prov1ComponentInstance">
+ <name>Sub_Node_1_5_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_1__prov2ComponentInstance">
+ <name>Sub_Node_1_5_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_5_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_222</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_0_ComponentInstance">
+ <name>Pub_Node_1_6_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_0__prov1ComponentInstance">
+ <name>Pub_Node_1_6_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_0__prov2ComponentInstance">
+ <name>Pub_Node_1_6_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_6_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_15</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_1_ComponentInstance">
+ <name>Pub_Node_1_6_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_1__prov1ComponentInstance">
+ <name>Pub_Node_1_6_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_1__prov2ComponentInstance">
+ <name>Pub_Node_1_6_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_6_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_125</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_0_ComponentInstance">
+ <name>Sub_Node_1_6_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_0__prov1ComponentInstance">
+ <name>Sub_Node_1_6_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_0__prov2ComponentInstance">
+ <name>Sub_Node_1_6_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_6_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_1_ComponentInstance">
+ <name>Sub_Node_1_6_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_1__prov1ComponentInstance">
+ <name>Sub_Node_1_6_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_1__prov2ComponentInstance">
+ <name>Sub_Node_1_6_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_6_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_24</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_0_ComponentInstance">
+ <name>Pub_Node_1_7_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_0__prov1ComponentInstance">
+ <name>Pub_Node_1_7_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_0__prov2ComponentInstance">
+ <name>Pub_Node_1_7_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_7_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_223</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_1_ComponentInstance">
+ <name>Pub_Node_1_7_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_1__prov1ComponentInstance">
+ <name>Pub_Node_1_7_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_1__prov2ComponentInstance">
+ <name>Pub_Node_1_7_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_7_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_217</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_0_ComponentInstance">
+ <name>Sub_Node_1_7_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_0__prov1ComponentInstance">
+ <name>Sub_Node_1_7_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_0__prov2ComponentInstance">
+ <name>Sub_Node_1_7_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_7_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_73</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_1_ComponentInstance">
+ <name>Sub_Node_1_7_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_1__prov1ComponentInstance">
+ <name>Sub_Node_1_7_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_1__prov2ComponentInstance">
+ <name>Sub_Node_1_7_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_7_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_239</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_0_ComponentInstance">
+ <name>Pub_Node_1_8_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_0__prov1ComponentInstance">
+ <name>Pub_Node_1_8_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_0__prov2ComponentInstance">
+ <name>Pub_Node_1_8_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_8_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_1_ComponentInstance">
+ <name>Pub_Node_1_8_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_1__prov1ComponentInstance">
+ <name>Pub_Node_1_8_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_1__prov2ComponentInstance">
+ <name>Pub_Node_1_8_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_8_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_0_ComponentInstance">
+ <name>Sub_Node_1_8_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_0__prov1ComponentInstance">
+ <name>Sub_Node_1_8_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_0__prov2ComponentInstance">
+ <name>Sub_Node_1_8_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_8_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_239</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_1_ComponentInstance">
+ <name>Sub_Node_1_8_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_1__prov1ComponentInstance">
+ <name>Sub_Node_1_8_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_1__prov2ComponentInstance">
+ <name>Sub_Node_1_8_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_8_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_0_ComponentInstance">
+ <name>Pub_Node_1_9_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_0__prov1ComponentInstance">
+ <name>Pub_Node_1_9_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_0__prov2ComponentInstance">
+ <name>Pub_Node_1_9_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_9_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_1_ComponentInstance">
+ <name>Pub_Node_1_9_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_1__prov1ComponentInstance">
+ <name>Pub_Node_1_9_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_1__prov2ComponentInstance">
+ <name>Pub_Node_1_9_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_9_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_0_ComponentInstance">
+ <name>Sub_Node_1_9_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_0__prov1ComponentInstance">
+ <name>Sub_Node_1_9_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_0__prov2ComponentInstance">
+ <name>Sub_Node_1_9_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_9_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_1_ComponentInstance">
+ <name>Sub_Node_1_9_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_1__prov1ComponentInstance">
+ <name>Sub_Node_1_9_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_1__prov2ComponentInstance">
+ <name>Sub_Node_1_9_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_9_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_0_ComponentInstance">
+ <name>Pub_Node_1_10_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_0__prov1ComponentInstance">
+ <name>Pub_Node_1_10_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_0__prov2ComponentInstance">
+ <name>Pub_Node_1_10_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_10_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_169</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_1_ComponentInstance">
+ <name>Pub_Node_1_10_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_1__prov1ComponentInstance">
+ <name>Pub_Node_1_10_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_1__prov2ComponentInstance">
+ <name>Pub_Node_1_10_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_10_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_119</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_0_ComponentInstance">
+ <name>Sub_Node_1_10_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_0__prov1ComponentInstance">
+ <name>Sub_Node_1_10_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_0__prov2ComponentInstance">
+ <name>Sub_Node_1_10_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_10_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_187</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_1_ComponentInstance">
+ <name>Sub_Node_1_10_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_1__prov1ComponentInstance">
+ <name>Sub_Node_1_10_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_1__prov2ComponentInstance">
+ <name>Sub_Node_1_10_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_10_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_24</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_0_ComponentInstance">
+ <name>Pub_Node_1_11_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_0__prov1ComponentInstance">
+ <name>Pub_Node_1_11_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_0__prov2ComponentInstance">
+ <name>Pub_Node_1_11_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_11_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_1_ComponentInstance">
+ <name>Pub_Node_1_11_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_1__prov1ComponentInstance">
+ <name>Pub_Node_1_11_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_1__prov2ComponentInstance">
+ <name>Pub_Node_1_11_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_11_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_130</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_0_ComponentInstance">
+ <name>Sub_Node_1_11_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_0__prov1ComponentInstance">
+ <name>Sub_Node_1_11_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_0__prov2ComponentInstance">
+ <name>Sub_Node_1_11_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_11_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_32</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_1_ComponentInstance">
+ <name>Sub_Node_1_11_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_1__prov1ComponentInstance">
+ <name>Sub_Node_1_11_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_1__prov2ComponentInstance">
+ <name>Sub_Node_1_11_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_11_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_236</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_0_ComponentInstance">
+ <name>Pub_Node_1_12_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_0__prov1ComponentInstance">
+ <name>Pub_Node_1_12_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_0__prov2ComponentInstance">
+ <name>Pub_Node_1_12_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_12_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_2</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_1_ComponentInstance">
+ <name>Pub_Node_1_12_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_1__prov1ComponentInstance">
+ <name>Pub_Node_1_12_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_1__prov2ComponentInstance">
+ <name>Pub_Node_1_12_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_12_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_89</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_0_ComponentInstance">
+ <name>Sub_Node_1_12_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_0__prov1ComponentInstance">
+ <name>Sub_Node_1_12_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_0__prov2ComponentInstance">
+ <name>Sub_Node_1_12_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_12_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_241</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_1_ComponentInstance">
+ <name>Sub_Node_1_12_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_1__prov1ComponentInstance">
+ <name>Sub_Node_1_12_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_1__prov2ComponentInstance">
+ <name>Sub_Node_1_12_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_12_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_110</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_0_ComponentInstance">
+ <name>Pub_Node_1_13_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_0__prov1ComponentInstance">
+ <name>Pub_Node_1_13_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_0__prov2ComponentInstance">
+ <name>Pub_Node_1_13_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_13_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_104</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_1_ComponentInstance">
+ <name>Pub_Node_1_13_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_1__prov1ComponentInstance">
+ <name>Pub_Node_1_13_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_1__prov2ComponentInstance">
+ <name>Pub_Node_1_13_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_13_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_180</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_0_ComponentInstance">
+ <name>Sub_Node_1_13_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_0__prov1ComponentInstance">
+ <name>Sub_Node_1_13_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_0__prov2ComponentInstance">
+ <name>Sub_Node_1_13_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_13_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_38</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_1_ComponentInstance">
+ <name>Sub_Node_1_13_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_1__prov1ComponentInstance">
+ <name>Sub_Node_1_13_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_1__prov2ComponentInstance">
+ <name>Sub_Node_1_13_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_13_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_0_ComponentInstance">
+ <name>Pub_Node_1_14_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_0__prov1ComponentInstance">
+ <name>Pub_Node_1_14_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_0__prov2ComponentInstance">
+ <name>Pub_Node_1_14_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_14_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_44</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_1_ComponentInstance">
+ <name>Pub_Node_1_14_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_1__prov1ComponentInstance">
+ <name>Pub_Node_1_14_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_1__prov2ComponentInstance">
+ <name>Pub_Node_1_14_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_14_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_0_ComponentInstance">
+ <name>Sub_Node_1_14_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_0__prov1ComponentInstance">
+ <name>Sub_Node_1_14_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_0__prov2ComponentInstance">
+ <name>Sub_Node_1_14_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_14_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_219</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_1_ComponentInstance">
+ <name>Sub_Node_1_14_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_1__prov1ComponentInstance">
+ <name>Sub_Node_1_14_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_1__prov2ComponentInstance">
+ <name>Sub_Node_1_14_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_14_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_0_ComponentInstance">
+ <name>Pub_Node_1_15_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_0__prov1ComponentInstance">
+ <name>Pub_Node_1_15_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_0__prov2ComponentInstance">
+ <name>Pub_Node_1_15_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_15_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_222</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_1_ComponentInstance">
+ <name>Pub_Node_1_15_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_1__prov1ComponentInstance">
+ <name>Pub_Node_1_15_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_1__prov2ComponentInstance">
+ <name>Pub_Node_1_15_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_15_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_124</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_0_ComponentInstance">
+ <name>Sub_Node_1_15_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_0__prov1ComponentInstance">
+ <name>Sub_Node_1_15_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_0__prov2ComponentInstance">
+ <name>Sub_Node_1_15_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_15_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_229</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_1_ComponentInstance">
+ <name>Sub_Node_1_15_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_1__prov1ComponentInstance">
+ <name>Sub_Node_1_15_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_1__prov2ComponentInstance">
+ <name>Sub_Node_1_15_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_15_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_123</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_0_ComponentInstance">
+ <name>Pub_Node_1_16_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_0__prov1ComponentInstance">
+ <name>Pub_Node_1_16_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_0__prov2ComponentInstance">
+ <name>Pub_Node_1_16_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_16_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_138</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_1_ComponentInstance">
+ <name>Pub_Node_1_16_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_1__prov1ComponentInstance">
+ <name>Pub_Node_1_16_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_1__prov2ComponentInstance">
+ <name>Pub_Node_1_16_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_16_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_12</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_0_ComponentInstance">
+ <name>Sub_Node_1_16_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_0__prov1ComponentInstance">
+ <name>Sub_Node_1_16_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_0__prov2ComponentInstance">
+ <name>Sub_Node_1_16_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_16_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_142</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_1_ComponentInstance">
+ <name>Sub_Node_1_16_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_1__prov1ComponentInstance">
+ <name>Sub_Node_1_16_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_1__prov2ComponentInstance">
+ <name>Sub_Node_1_16_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_16_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_89</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_0_ComponentInstance">
+ <name>Pub_Node_1_17_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_0__prov1ComponentInstance">
+ <name>Pub_Node_1_17_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_0__prov2ComponentInstance">
+ <name>Pub_Node_1_17_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_17_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_1_ComponentInstance">
+ <name>Pub_Node_1_17_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_1__prov1ComponentInstance">
+ <name>Pub_Node_1_17_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_1__prov2ComponentInstance">
+ <name>Pub_Node_1_17_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_17_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_0_ComponentInstance">
+ <name>Sub_Node_1_17_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_0__prov1ComponentInstance">
+ <name>Sub_Node_1_17_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_0__prov2ComponentInstance">
+ <name>Sub_Node_1_17_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_17_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_182</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_1_ComponentInstance">
+ <name>Sub_Node_1_17_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_1__prov1ComponentInstance">
+ <name>Sub_Node_1_17_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_1__prov2ComponentInstance">
+ <name>Sub_Node_1_17_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_17_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_218</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_0_ComponentInstance">
+ <name>Pub_Node_1_18_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_0__prov1ComponentInstance">
+ <name>Pub_Node_1_18_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_0__prov2ComponentInstance">
+ <name>Pub_Node_1_18_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_18_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_1_ComponentInstance">
+ <name>Pub_Node_1_18_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_1__prov1ComponentInstance">
+ <name>Pub_Node_1_18_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_1__prov2ComponentInstance">
+ <name>Pub_Node_1_18_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_18_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_3</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_0_ComponentInstance">
+ <name>Sub_Node_1_18_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_0__prov1ComponentInstance">
+ <name>Sub_Node_1_18_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_0__prov2ComponentInstance">
+ <name>Sub_Node_1_18_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_18_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_161</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_1_ComponentInstance">
+ <name>Sub_Node_1_18_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_1__prov1ComponentInstance">
+ <name>Sub_Node_1_18_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_1__prov2ComponentInstance">
+ <name>Sub_Node_1_18_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_18_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_0_ComponentInstance">
+ <name>Pub_Node_1_19_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_0__prov1ComponentInstance">
+ <name>Pub_Node_1_19_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_0__prov2ComponentInstance">
+ <name>Pub_Node_1_19_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_19_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_1_ComponentInstance">
+ <name>Pub_Node_1_19_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_1__prov1ComponentInstance">
+ <name>Pub_Node_1_19_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_1__prov2ComponentInstance">
+ <name>Pub_Node_1_19_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_1_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_1_19_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_209</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_0_ComponentInstance">
+ <name>Sub_Node_1_19_0_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_0__prov1ComponentInstance">
+ <name>Sub_Node_1_19_0__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_0__prov2ComponentInstance">
+ <name>Sub_Node_1_19_0__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_19_0_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_120</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_1_ComponentInstance">
+ <name>Sub_Node_1_19_1_Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_1__prov1ComponentInstance">
+ <name>Sub_Node_1_19_1__prov1Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_1__prov2ComponentInstance">
+ <name>Sub_Node_1_19_1__prov2Component</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_1_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_1_19_1_DDSConnectorComponent</name>
+ <node>Node_1</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_179</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_0_ComponentInstance">
+ <name>Pub_Node_2_0_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_0__prov1ComponentInstance">
+ <name>Pub_Node_2_0_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_0__prov2ComponentInstance">
+ <name>Pub_Node_2_0_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_0_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_98</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_1_ComponentInstance">
+ <name>Pub_Node_2_0_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_1__prov1ComponentInstance">
+ <name>Pub_Node_2_0_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_1__prov2ComponentInstance">
+ <name>Pub_Node_2_0_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_0_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_228</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_0_ComponentInstance">
+ <name>Sub_Node_2_0_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_0__prov1ComponentInstance">
+ <name>Sub_Node_2_0_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_0__prov2ComponentInstance">
+ <name>Sub_Node_2_0_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_0_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_1_ComponentInstance">
+ <name>Sub_Node_2_0_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_1__prov1ComponentInstance">
+ <name>Sub_Node_2_0_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_1__prov2ComponentInstance">
+ <name>Sub_Node_2_0_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_0_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_110</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_0_ComponentInstance">
+ <name>Pub_Node_2_1_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_0__prov1ComponentInstance">
+ <name>Pub_Node_2_1_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_0__prov2ComponentInstance">
+ <name>Pub_Node_2_1_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_1_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_225</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_1_ComponentInstance">
+ <name>Pub_Node_2_1_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_1__prov1ComponentInstance">
+ <name>Pub_Node_2_1_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_1__prov2ComponentInstance">
+ <name>Pub_Node_2_1_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_1_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_57</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_0_ComponentInstance">
+ <name>Sub_Node_2_1_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_0__prov1ComponentInstance">
+ <name>Sub_Node_2_1_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_0__prov2ComponentInstance">
+ <name>Sub_Node_2_1_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_1_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_1_ComponentInstance">
+ <name>Sub_Node_2_1_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_1__prov1ComponentInstance">
+ <name>Sub_Node_2_1_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_1__prov2ComponentInstance">
+ <name>Sub_Node_2_1_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_1_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_223</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_0_ComponentInstance">
+ <name>Pub_Node_2_2_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_0__prov1ComponentInstance">
+ <name>Pub_Node_2_2_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_0__prov2ComponentInstance">
+ <name>Pub_Node_2_2_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_2_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_89</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_1_ComponentInstance">
+ <name>Pub_Node_2_2_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_1__prov1ComponentInstance">
+ <name>Pub_Node_2_2_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_1__prov2ComponentInstance">
+ <name>Pub_Node_2_2_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_2_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_174</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_0_ComponentInstance">
+ <name>Sub_Node_2_2_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_0__prov1ComponentInstance">
+ <name>Sub_Node_2_2_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_0__prov2ComponentInstance">
+ <name>Sub_Node_2_2_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_2_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_219</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_1_ComponentInstance">
+ <name>Sub_Node_2_2_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_1__prov1ComponentInstance">
+ <name>Sub_Node_2_2_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_1__prov2ComponentInstance">
+ <name>Sub_Node_2_2_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_2_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_0_ComponentInstance">
+ <name>Pub_Node_2_3_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_0__prov1ComponentInstance">
+ <name>Pub_Node_2_3_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_0__prov2ComponentInstance">
+ <name>Pub_Node_2_3_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_3_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_2</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_1_ComponentInstance">
+ <name>Pub_Node_2_3_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_1__prov1ComponentInstance">
+ <name>Pub_Node_2_3_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_1__prov2ComponentInstance">
+ <name>Pub_Node_2_3_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_3_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_8</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_0_ComponentInstance">
+ <name>Sub_Node_2_3_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_0__prov1ComponentInstance">
+ <name>Sub_Node_2_3_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_0__prov2ComponentInstance">
+ <name>Sub_Node_2_3_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_3_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_126</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_1_ComponentInstance">
+ <name>Sub_Node_2_3_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_1__prov1ComponentInstance">
+ <name>Sub_Node_2_3_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_1__prov2ComponentInstance">
+ <name>Sub_Node_2_3_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_3_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_231</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_0_ComponentInstance">
+ <name>Pub_Node_2_4_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_0__prov1ComponentInstance">
+ <name>Pub_Node_2_4_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_0__prov2ComponentInstance">
+ <name>Pub_Node_2_4_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_4_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_75</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_1_ComponentInstance">
+ <name>Pub_Node_2_4_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_1__prov1ComponentInstance">
+ <name>Pub_Node_2_4_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_1__prov2ComponentInstance">
+ <name>Pub_Node_2_4_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_4_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_76</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_0_ComponentInstance">
+ <name>Sub_Node_2_4_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_0__prov1ComponentInstance">
+ <name>Sub_Node_2_4_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_0__prov2ComponentInstance">
+ <name>Sub_Node_2_4_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_4_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_1_ComponentInstance">
+ <name>Sub_Node_2_4_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_1__prov1ComponentInstance">
+ <name>Sub_Node_2_4_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_1__prov2ComponentInstance">
+ <name>Sub_Node_2_4_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_4_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_137</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_0_ComponentInstance">
+ <name>Pub_Node_2_5_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_0__prov1ComponentInstance">
+ <name>Pub_Node_2_5_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_0__prov2ComponentInstance">
+ <name>Pub_Node_2_5_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_5_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_1_ComponentInstance">
+ <name>Pub_Node_2_5_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_1__prov1ComponentInstance">
+ <name>Pub_Node_2_5_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_1__prov2ComponentInstance">
+ <name>Pub_Node_2_5_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_5_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_0_ComponentInstance">
+ <name>Sub_Node_2_5_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_0__prov1ComponentInstance">
+ <name>Sub_Node_2_5_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_0__prov2ComponentInstance">
+ <name>Sub_Node_2_5_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_5_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_66</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_1_ComponentInstance">
+ <name>Sub_Node_2_5_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_1__prov1ComponentInstance">
+ <name>Sub_Node_2_5_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_1__prov2ComponentInstance">
+ <name>Sub_Node_2_5_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_5_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_211</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_0_ComponentInstance">
+ <name>Pub_Node_2_6_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_0__prov1ComponentInstance">
+ <name>Pub_Node_2_6_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_0__prov2ComponentInstance">
+ <name>Pub_Node_2_6_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_6_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_1_ComponentInstance">
+ <name>Pub_Node_2_6_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_1__prov1ComponentInstance">
+ <name>Pub_Node_2_6_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_1__prov2ComponentInstance">
+ <name>Pub_Node_2_6_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_6_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_58</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_0_ComponentInstance">
+ <name>Sub_Node_2_6_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_0__prov1ComponentInstance">
+ <name>Sub_Node_2_6_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_0__prov2ComponentInstance">
+ <name>Sub_Node_2_6_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_6_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_1_ComponentInstance">
+ <name>Sub_Node_2_6_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_1__prov1ComponentInstance">
+ <name>Sub_Node_2_6_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_1__prov2ComponentInstance">
+ <name>Sub_Node_2_6_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_6_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_0_ComponentInstance">
+ <name>Pub_Node_2_7_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_0__prov1ComponentInstance">
+ <name>Pub_Node_2_7_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_0__prov2ComponentInstance">
+ <name>Pub_Node_2_7_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_7_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_247</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_1_ComponentInstance">
+ <name>Pub_Node_2_7_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_1__prov1ComponentInstance">
+ <name>Pub_Node_2_7_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_1__prov2ComponentInstance">
+ <name>Pub_Node_2_7_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_7_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_0_ComponentInstance">
+ <name>Sub_Node_2_7_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_0__prov1ComponentInstance">
+ <name>Sub_Node_2_7_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_0__prov2ComponentInstance">
+ <name>Sub_Node_2_7_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_7_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_16</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_1_ComponentInstance">
+ <name>Sub_Node_2_7_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_1__prov1ComponentInstance">
+ <name>Sub_Node_2_7_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_1__prov2ComponentInstance">
+ <name>Sub_Node_2_7_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_7_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_63</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_0_ComponentInstance">
+ <name>Pub_Node_2_8_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_0__prov1ComponentInstance">
+ <name>Pub_Node_2_8_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_0__prov2ComponentInstance">
+ <name>Pub_Node_2_8_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_8_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_43</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_1_ComponentInstance">
+ <name>Pub_Node_2_8_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_1__prov1ComponentInstance">
+ <name>Pub_Node_2_8_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_1__prov2ComponentInstance">
+ <name>Pub_Node_2_8_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_8_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_0_ComponentInstance">
+ <name>Sub_Node_2_8_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_0__prov1ComponentInstance">
+ <name>Sub_Node_2_8_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_0__prov2ComponentInstance">
+ <name>Sub_Node_2_8_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_8_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_154</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_1_ComponentInstance">
+ <name>Sub_Node_2_8_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_1__prov1ComponentInstance">
+ <name>Sub_Node_2_8_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_1__prov2ComponentInstance">
+ <name>Sub_Node_2_8_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_8_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_174</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_0_ComponentInstance">
+ <name>Pub_Node_2_9_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_0__prov1ComponentInstance">
+ <name>Pub_Node_2_9_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_0__prov2ComponentInstance">
+ <name>Pub_Node_2_9_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_9_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_60</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_1_ComponentInstance">
+ <name>Pub_Node_2_9_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_1__prov1ComponentInstance">
+ <name>Pub_Node_2_9_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_1__prov2ComponentInstance">
+ <name>Pub_Node_2_9_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_9_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_96</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_0_ComponentInstance">
+ <name>Sub_Node_2_9_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_0__prov1ComponentInstance">
+ <name>Sub_Node_2_9_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_0__prov2ComponentInstance">
+ <name>Sub_Node_2_9_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_9_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_105</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_1_ComponentInstance">
+ <name>Sub_Node_2_9_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_1__prov1ComponentInstance">
+ <name>Sub_Node_2_9_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_1__prov2ComponentInstance">
+ <name>Sub_Node_2_9_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_9_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_202</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_0_ComponentInstance">
+ <name>Pub_Node_2_10_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_0__prov1ComponentInstance">
+ <name>Pub_Node_2_10_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_0__prov2ComponentInstance">
+ <name>Pub_Node_2_10_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_10_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_13</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_1_ComponentInstance">
+ <name>Pub_Node_2_10_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_1__prov1ComponentInstance">
+ <name>Pub_Node_2_10_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_1__prov2ComponentInstance">
+ <name>Pub_Node_2_10_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_10_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_115</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_0_ComponentInstance">
+ <name>Sub_Node_2_10_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_0__prov1ComponentInstance">
+ <name>Sub_Node_2_10_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_0__prov2ComponentInstance">
+ <name>Sub_Node_2_10_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_10_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_41</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_1_ComponentInstance">
+ <name>Sub_Node_2_10_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_1__prov1ComponentInstance">
+ <name>Sub_Node_2_10_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_1__prov2ComponentInstance">
+ <name>Sub_Node_2_10_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_10_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_6</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_0_ComponentInstance">
+ <name>Pub_Node_2_11_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_0__prov1ComponentInstance">
+ <name>Pub_Node_2_11_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_0__prov2ComponentInstance">
+ <name>Pub_Node_2_11_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_11_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_20</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_1_ComponentInstance">
+ <name>Pub_Node_2_11_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_1__prov1ComponentInstance">
+ <name>Pub_Node_2_11_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_1__prov2ComponentInstance">
+ <name>Pub_Node_2_11_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_11_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_61</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_0_ComponentInstance">
+ <name>Sub_Node_2_11_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_0__prov1ComponentInstance">
+ <name>Sub_Node_2_11_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_0__prov2ComponentInstance">
+ <name>Sub_Node_2_11_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_11_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_133</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_1_ComponentInstance">
+ <name>Sub_Node_2_11_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_1__prov1ComponentInstance">
+ <name>Sub_Node_2_11_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_1__prov2ComponentInstance">
+ <name>Sub_Node_2_11_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_11_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_46</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_0_ComponentInstance">
+ <name>Pub_Node_2_12_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_0__prov1ComponentInstance">
+ <name>Pub_Node_2_12_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_0__prov2ComponentInstance">
+ <name>Pub_Node_2_12_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_12_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_1_ComponentInstance">
+ <name>Pub_Node_2_12_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_1__prov1ComponentInstance">
+ <name>Pub_Node_2_12_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_1__prov2ComponentInstance">
+ <name>Pub_Node_2_12_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_12_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_52</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_0_ComponentInstance">
+ <name>Sub_Node_2_12_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_0__prov1ComponentInstance">
+ <name>Sub_Node_2_12_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_0__prov2ComponentInstance">
+ <name>Sub_Node_2_12_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_12_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_59</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_1_ComponentInstance">
+ <name>Sub_Node_2_12_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_1__prov1ComponentInstance">
+ <name>Sub_Node_2_12_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_1__prov2ComponentInstance">
+ <name>Sub_Node_2_12_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_12_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_34</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_0_ComponentInstance">
+ <name>Pub_Node_2_13_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_0__prov1ComponentInstance">
+ <name>Pub_Node_2_13_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_0__prov2ComponentInstance">
+ <name>Pub_Node_2_13_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_13_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_1_ComponentInstance">
+ <name>Pub_Node_2_13_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_1__prov1ComponentInstance">
+ <name>Pub_Node_2_13_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_1__prov2ComponentInstance">
+ <name>Pub_Node_2_13_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_13_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_169</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_0_ComponentInstance">
+ <name>Sub_Node_2_13_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_0__prov1ComponentInstance">
+ <name>Sub_Node_2_13_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_0__prov2ComponentInstance">
+ <name>Sub_Node_2_13_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_13_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_123</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_1_ComponentInstance">
+ <name>Sub_Node_2_13_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_1__prov1ComponentInstance">
+ <name>Sub_Node_2_13_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_1__prov2ComponentInstance">
+ <name>Sub_Node_2_13_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_13_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_0_ComponentInstance">
+ <name>Pub_Node_2_14_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_0__prov1ComponentInstance">
+ <name>Pub_Node_2_14_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_0__prov2ComponentInstance">
+ <name>Pub_Node_2_14_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_14_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_1_ComponentInstance">
+ <name>Pub_Node_2_14_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_1__prov1ComponentInstance">
+ <name>Pub_Node_2_14_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_1__prov2ComponentInstance">
+ <name>Pub_Node_2_14_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_14_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_202</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_0_ComponentInstance">
+ <name>Sub_Node_2_14_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_0__prov1ComponentInstance">
+ <name>Sub_Node_2_14_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_0__prov2ComponentInstance">
+ <name>Sub_Node_2_14_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_14_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_193</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_1_ComponentInstance">
+ <name>Sub_Node_2_14_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_1__prov1ComponentInstance">
+ <name>Sub_Node_2_14_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_1__prov2ComponentInstance">
+ <name>Sub_Node_2_14_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_14_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_37</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_0_ComponentInstance">
+ <name>Pub_Node_2_15_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_0__prov1ComponentInstance">
+ <name>Pub_Node_2_15_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_0__prov2ComponentInstance">
+ <name>Pub_Node_2_15_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_15_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_15</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_1_ComponentInstance">
+ <name>Pub_Node_2_15_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_1__prov1ComponentInstance">
+ <name>Pub_Node_2_15_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_1__prov2ComponentInstance">
+ <name>Pub_Node_2_15_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_15_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_0_ComponentInstance">
+ <name>Sub_Node_2_15_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_0__prov1ComponentInstance">
+ <name>Sub_Node_2_15_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_0__prov2ComponentInstance">
+ <name>Sub_Node_2_15_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_15_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_103</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_1_ComponentInstance">
+ <name>Sub_Node_2_15_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_1__prov1ComponentInstance">
+ <name>Sub_Node_2_15_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_1__prov2ComponentInstance">
+ <name>Sub_Node_2_15_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_15_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_215</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_0_ComponentInstance">
+ <name>Pub_Node_2_16_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_0__prov1ComponentInstance">
+ <name>Pub_Node_2_16_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_0__prov2ComponentInstance">
+ <name>Pub_Node_2_16_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_16_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_103</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_1_ComponentInstance">
+ <name>Pub_Node_2_16_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_1__prov1ComponentInstance">
+ <name>Pub_Node_2_16_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_1__prov2ComponentInstance">
+ <name>Pub_Node_2_16_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_16_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_48</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_0_ComponentInstance">
+ <name>Sub_Node_2_16_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_0__prov1ComponentInstance">
+ <name>Sub_Node_2_16_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_0__prov2ComponentInstance">
+ <name>Sub_Node_2_16_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_16_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_122</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_1_ComponentInstance">
+ <name>Sub_Node_2_16_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_1__prov1ComponentInstance">
+ <name>Sub_Node_2_16_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_1__prov2ComponentInstance">
+ <name>Sub_Node_2_16_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_16_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_76</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_0_ComponentInstance">
+ <name>Pub_Node_2_17_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_0__prov1ComponentInstance">
+ <name>Pub_Node_2_17_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_0__prov2ComponentInstance">
+ <name>Pub_Node_2_17_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_17_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_197</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_1_ComponentInstance">
+ <name>Pub_Node_2_17_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_1__prov1ComponentInstance">
+ <name>Pub_Node_2_17_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_1__prov2ComponentInstance">
+ <name>Pub_Node_2_17_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_17_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_0_ComponentInstance">
+ <name>Sub_Node_2_17_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_0__prov1ComponentInstance">
+ <name>Sub_Node_2_17_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_0__prov2ComponentInstance">
+ <name>Sub_Node_2_17_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_17_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_136</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_1_ComponentInstance">
+ <name>Sub_Node_2_17_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_1__prov1ComponentInstance">
+ <name>Sub_Node_2_17_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_1__prov2ComponentInstance">
+ <name>Sub_Node_2_17_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_17_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_0_ComponentInstance">
+ <name>Pub_Node_2_18_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_0__prov1ComponentInstance">
+ <name>Pub_Node_2_18_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_0__prov2ComponentInstance">
+ <name>Pub_Node_2_18_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_18_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_1_ComponentInstance">
+ <name>Pub_Node_2_18_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_1__prov1ComponentInstance">
+ <name>Pub_Node_2_18_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_1__prov2ComponentInstance">
+ <name>Pub_Node_2_18_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_18_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_115</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_0_ComponentInstance">
+ <name>Sub_Node_2_18_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_0__prov1ComponentInstance">
+ <name>Sub_Node_2_18_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_0__prov2ComponentInstance">
+ <name>Sub_Node_2_18_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_18_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_171</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_1_ComponentInstance">
+ <name>Sub_Node_2_18_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_1__prov1ComponentInstance">
+ <name>Sub_Node_2_18_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_1__prov2ComponentInstance">
+ <name>Sub_Node_2_18_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_18_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_0_ComponentInstance">
+ <name>Pub_Node_2_19_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_0__prov1ComponentInstance">
+ <name>Pub_Node_2_19_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_0__prov2ComponentInstance">
+ <name>Pub_Node_2_19_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_19_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_93</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_1_ComponentInstance">
+ <name>Pub_Node_2_19_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_1__prov1ComponentInstance">
+ <name>Pub_Node_2_19_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_1__prov2ComponentInstance">
+ <name>Pub_Node_2_19_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_2_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_2_19_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_0_ComponentInstance">
+ <name>Sub_Node_2_19_0_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_0__prov1ComponentInstance">
+ <name>Sub_Node_2_19_0__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_0__prov2ComponentInstance">
+ <name>Sub_Node_2_19_0__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_19_0_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_75</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_1_ComponentInstance">
+ <name>Sub_Node_2_19_1_Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_1__prov1ComponentInstance">
+ <name>Sub_Node_2_19_1__prov1Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_1__prov2ComponentInstance">
+ <name>Sub_Node_2_19_1__prov2Component</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_2_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_2_19_1_DDSConnectorComponent</name>
+ <node>Node_2</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_0_ComponentInstance">
+ <name>Pub_Node_3_0_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_0__prov1ComponentInstance">
+ <name>Pub_Node_3_0_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_0__prov2ComponentInstance">
+ <name>Pub_Node_3_0_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_0_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_113</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_1_ComponentInstance">
+ <name>Pub_Node_3_0_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_1__prov1ComponentInstance">
+ <name>Pub_Node_3_0_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_1__prov2ComponentInstance">
+ <name>Pub_Node_3_0_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_0_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_8</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_0_ComponentInstance">
+ <name>Sub_Node_3_0_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_0__prov1ComponentInstance">
+ <name>Sub_Node_3_0_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_0__prov2ComponentInstance">
+ <name>Sub_Node_3_0_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_0_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_1_ComponentInstance">
+ <name>Sub_Node_3_0_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_1__prov1ComponentInstance">
+ <name>Sub_Node_3_0_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_1__prov2ComponentInstance">
+ <name>Sub_Node_3_0_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_0_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_225</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_0_ComponentInstance">
+ <name>Pub_Node_3_1_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_0__prov1ComponentInstance">
+ <name>Pub_Node_3_1_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_0__prov2ComponentInstance">
+ <name>Pub_Node_3_1_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_1_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_123</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_1_ComponentInstance">
+ <name>Pub_Node_3_1_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_1__prov1ComponentInstance">
+ <name>Pub_Node_3_1_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_1__prov2ComponentInstance">
+ <name>Pub_Node_3_1_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_1_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_35</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_0_ComponentInstance">
+ <name>Sub_Node_3_1_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_0__prov1ComponentInstance">
+ <name>Sub_Node_3_1_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_0__prov2ComponentInstance">
+ <name>Sub_Node_3_1_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_1_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_21</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_1_ComponentInstance">
+ <name>Sub_Node_3_1_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_1__prov1ComponentInstance">
+ <name>Sub_Node_3_1_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_1__prov2ComponentInstance">
+ <name>Sub_Node_3_1_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_1_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_232</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_0_ComponentInstance">
+ <name>Pub_Node_3_2_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_0__prov1ComponentInstance">
+ <name>Pub_Node_3_2_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_0__prov2ComponentInstance">
+ <name>Pub_Node_3_2_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_2_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_1_ComponentInstance">
+ <name>Pub_Node_3_2_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_1__prov1ComponentInstance">
+ <name>Pub_Node_3_2_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_1__prov2ComponentInstance">
+ <name>Pub_Node_3_2_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_2_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_0_ComponentInstance">
+ <name>Sub_Node_3_2_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_0__prov1ComponentInstance">
+ <name>Sub_Node_3_2_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_0__prov2ComponentInstance">
+ <name>Sub_Node_3_2_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_2_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_65</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_1_ComponentInstance">
+ <name>Sub_Node_3_2_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_1__prov1ComponentInstance">
+ <name>Sub_Node_3_2_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_1__prov2ComponentInstance">
+ <name>Sub_Node_3_2_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_2_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_0_ComponentInstance">
+ <name>Pub_Node_3_3_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_0__prov1ComponentInstance">
+ <name>Pub_Node_3_3_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_0__prov2ComponentInstance">
+ <name>Pub_Node_3_3_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_3_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_135</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_1_ComponentInstance">
+ <name>Pub_Node_3_3_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_1__prov1ComponentInstance">
+ <name>Pub_Node_3_3_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_1__prov2ComponentInstance">
+ <name>Pub_Node_3_3_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_3_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_145</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_0_ComponentInstance">
+ <name>Sub_Node_3_3_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_0__prov1ComponentInstance">
+ <name>Sub_Node_3_3_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_0__prov2ComponentInstance">
+ <name>Sub_Node_3_3_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_3_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_70</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_1_ComponentInstance">
+ <name>Sub_Node_3_3_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_1__prov1ComponentInstance">
+ <name>Sub_Node_3_3_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_1__prov2ComponentInstance">
+ <name>Sub_Node_3_3_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_3_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_106</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_0_ComponentInstance">
+ <name>Pub_Node_3_4_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_0__prov1ComponentInstance">
+ <name>Pub_Node_3_4_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_0__prov2ComponentInstance">
+ <name>Pub_Node_3_4_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_4_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_1_ComponentInstance">
+ <name>Pub_Node_3_4_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_1__prov1ComponentInstance">
+ <name>Pub_Node_3_4_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_1__prov2ComponentInstance">
+ <name>Pub_Node_3_4_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_4_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_126</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_0_ComponentInstance">
+ <name>Sub_Node_3_4_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_0__prov1ComponentInstance">
+ <name>Sub_Node_3_4_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_0__prov2ComponentInstance">
+ <name>Sub_Node_3_4_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_4_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_184</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_1_ComponentInstance">
+ <name>Sub_Node_3_4_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_1__prov1ComponentInstance">
+ <name>Sub_Node_3_4_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_1__prov2ComponentInstance">
+ <name>Sub_Node_3_4_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_4_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_138</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_0_ComponentInstance">
+ <name>Pub_Node_3_5_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_0__prov1ComponentInstance">
+ <name>Pub_Node_3_5_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_0__prov2ComponentInstance">
+ <name>Pub_Node_3_5_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_5_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_1_ComponentInstance">
+ <name>Pub_Node_3_5_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_1__prov1ComponentInstance">
+ <name>Pub_Node_3_5_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_1__prov2ComponentInstance">
+ <name>Pub_Node_3_5_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_5_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_0_ComponentInstance">
+ <name>Sub_Node_3_5_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_0__prov1ComponentInstance">
+ <name>Sub_Node_3_5_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_0__prov2ComponentInstance">
+ <name>Sub_Node_3_5_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_5_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_1_ComponentInstance">
+ <name>Sub_Node_3_5_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_1__prov1ComponentInstance">
+ <name>Sub_Node_3_5_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_1__prov2ComponentInstance">
+ <name>Sub_Node_3_5_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_5_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_18</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_0_ComponentInstance">
+ <name>Pub_Node_3_6_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_0__prov1ComponentInstance">
+ <name>Pub_Node_3_6_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_0__prov2ComponentInstance">
+ <name>Pub_Node_3_6_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_6_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_184</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_1_ComponentInstance">
+ <name>Pub_Node_3_6_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_1__prov1ComponentInstance">
+ <name>Pub_Node_3_6_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_1__prov2ComponentInstance">
+ <name>Pub_Node_3_6_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_6_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_53</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_0_ComponentInstance">
+ <name>Sub_Node_3_6_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_0__prov1ComponentInstance">
+ <name>Sub_Node_3_6_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_0__prov2ComponentInstance">
+ <name>Sub_Node_3_6_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_6_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_38</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_1_ComponentInstance">
+ <name>Sub_Node_3_6_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_1__prov1ComponentInstance">
+ <name>Sub_Node_3_6_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_1__prov2ComponentInstance">
+ <name>Sub_Node_3_6_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_6_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_0_ComponentInstance">
+ <name>Pub_Node_3_7_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_0__prov1ComponentInstance">
+ <name>Pub_Node_3_7_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_0__prov2ComponentInstance">
+ <name>Pub_Node_3_7_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_7_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_68</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_1_ComponentInstance">
+ <name>Pub_Node_3_7_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_1__prov1ComponentInstance">
+ <name>Pub_Node_3_7_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_1__prov2ComponentInstance">
+ <name>Pub_Node_3_7_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_7_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_71</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_0_ComponentInstance">
+ <name>Sub_Node_3_7_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_0__prov1ComponentInstance">
+ <name>Sub_Node_3_7_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_0__prov2ComponentInstance">
+ <name>Sub_Node_3_7_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_7_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_199</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_1_ComponentInstance">
+ <name>Sub_Node_3_7_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_1__prov1ComponentInstance">
+ <name>Sub_Node_3_7_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_1__prov2ComponentInstance">
+ <name>Sub_Node_3_7_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_7_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_119</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_0_ComponentInstance">
+ <name>Pub_Node_3_8_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_0__prov1ComponentInstance">
+ <name>Pub_Node_3_8_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_0__prov2ComponentInstance">
+ <name>Pub_Node_3_8_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_8_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_20</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_1_ComponentInstance">
+ <name>Pub_Node_3_8_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_1__prov1ComponentInstance">
+ <name>Pub_Node_3_8_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_1__prov2ComponentInstance">
+ <name>Pub_Node_3_8_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_8_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_208</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_0_ComponentInstance">
+ <name>Sub_Node_3_8_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_0__prov1ComponentInstance">
+ <name>Sub_Node_3_8_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_0__prov2ComponentInstance">
+ <name>Sub_Node_3_8_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_8_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_108</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_1_ComponentInstance">
+ <name>Sub_Node_3_8_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_1__prov1ComponentInstance">
+ <name>Sub_Node_3_8_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_1__prov2ComponentInstance">
+ <name>Sub_Node_3_8_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_8_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_0_ComponentInstance">
+ <name>Pub_Node_3_9_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_0__prov1ComponentInstance">
+ <name>Pub_Node_3_9_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_0__prov2ComponentInstance">
+ <name>Pub_Node_3_9_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_9_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_113</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_1_ComponentInstance">
+ <name>Pub_Node_3_9_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_1__prov1ComponentInstance">
+ <name>Pub_Node_3_9_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_1__prov2ComponentInstance">
+ <name>Pub_Node_3_9_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_9_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_0_ComponentInstance">
+ <name>Sub_Node_3_9_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_0__prov1ComponentInstance">
+ <name>Sub_Node_3_9_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_0__prov2ComponentInstance">
+ <name>Sub_Node_3_9_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_9_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_85</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_1_ComponentInstance">
+ <name>Sub_Node_3_9_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_1__prov1ComponentInstance">
+ <name>Sub_Node_3_9_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_1__prov2ComponentInstance">
+ <name>Sub_Node_3_9_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_9_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_53</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_0_ComponentInstance">
+ <name>Pub_Node_3_10_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_0__prov1ComponentInstance">
+ <name>Pub_Node_3_10_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_0__prov2ComponentInstance">
+ <name>Pub_Node_3_10_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_10_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_1_ComponentInstance">
+ <name>Pub_Node_3_10_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_1__prov1ComponentInstance">
+ <name>Pub_Node_3_10_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_1__prov2ComponentInstance">
+ <name>Pub_Node_3_10_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_10_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_147</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_0_ComponentInstance">
+ <name>Sub_Node_3_10_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_0__prov1ComponentInstance">
+ <name>Sub_Node_3_10_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_0__prov2ComponentInstance">
+ <name>Sub_Node_3_10_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_10_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_1_ComponentInstance">
+ <name>Sub_Node_3_10_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_1__prov1ComponentInstance">
+ <name>Sub_Node_3_10_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_1__prov2ComponentInstance">
+ <name>Sub_Node_3_10_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_10_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_0_ComponentInstance">
+ <name>Pub_Node_3_11_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_0__prov1ComponentInstance">
+ <name>Pub_Node_3_11_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_0__prov2ComponentInstance">
+ <name>Pub_Node_3_11_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_11_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_12</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_1_ComponentInstance">
+ <name>Pub_Node_3_11_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_1__prov1ComponentInstance">
+ <name>Pub_Node_3_11_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_1__prov2ComponentInstance">
+ <name>Pub_Node_3_11_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_11_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_167</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_0_ComponentInstance">
+ <name>Sub_Node_3_11_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_0__prov1ComponentInstance">
+ <name>Sub_Node_3_11_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_0__prov2ComponentInstance">
+ <name>Sub_Node_3_11_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_11_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_149</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_1_ComponentInstance">
+ <name>Sub_Node_3_11_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_1__prov1ComponentInstance">
+ <name>Sub_Node_3_11_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_1__prov2ComponentInstance">
+ <name>Sub_Node_3_11_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_11_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_58</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_0_ComponentInstance">
+ <name>Pub_Node_3_12_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_0__prov1ComponentInstance">
+ <name>Pub_Node_3_12_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_0__prov2ComponentInstance">
+ <name>Pub_Node_3_12_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_12_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_1_ComponentInstance">
+ <name>Pub_Node_3_12_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_1__prov1ComponentInstance">
+ <name>Pub_Node_3_12_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_1__prov2ComponentInstance">
+ <name>Pub_Node_3_12_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_12_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_0_ComponentInstance">
+ <name>Sub_Node_3_12_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_0__prov1ComponentInstance">
+ <name>Sub_Node_3_12_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_0__prov2ComponentInstance">
+ <name>Sub_Node_3_12_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_12_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_141</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_1_ComponentInstance">
+ <name>Sub_Node_3_12_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_1__prov1ComponentInstance">
+ <name>Sub_Node_3_12_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_1__prov2ComponentInstance">
+ <name>Sub_Node_3_12_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_12_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_161</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_0_ComponentInstance">
+ <name>Pub_Node_3_13_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_0__prov1ComponentInstance">
+ <name>Pub_Node_3_13_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_0__prov2ComponentInstance">
+ <name>Pub_Node_3_13_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_13_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_1_ComponentInstance">
+ <name>Pub_Node_3_13_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_1__prov1ComponentInstance">
+ <name>Pub_Node_3_13_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_1__prov2ComponentInstance">
+ <name>Pub_Node_3_13_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_13_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_118</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_0_ComponentInstance">
+ <name>Sub_Node_3_13_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_0__prov1ComponentInstance">
+ <name>Sub_Node_3_13_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_0__prov2ComponentInstance">
+ <name>Sub_Node_3_13_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_13_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_1_ComponentInstance">
+ <name>Sub_Node_3_13_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_1__prov1ComponentInstance">
+ <name>Sub_Node_3_13_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_1__prov2ComponentInstance">
+ <name>Sub_Node_3_13_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_13_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_51</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_0_ComponentInstance">
+ <name>Pub_Node_3_14_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_0__prov1ComponentInstance">
+ <name>Pub_Node_3_14_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_0__prov2ComponentInstance">
+ <name>Pub_Node_3_14_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_14_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_8</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_1_ComponentInstance">
+ <name>Pub_Node_3_14_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_1__prov1ComponentInstance">
+ <name>Pub_Node_3_14_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_1__prov2ComponentInstance">
+ <name>Pub_Node_3_14_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_14_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_134</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_0_ComponentInstance">
+ <name>Sub_Node_3_14_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_0__prov1ComponentInstance">
+ <name>Sub_Node_3_14_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_0__prov2ComponentInstance">
+ <name>Sub_Node_3_14_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_14_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_163</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_1_ComponentInstance">
+ <name>Sub_Node_3_14_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_1__prov1ComponentInstance">
+ <name>Sub_Node_3_14_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_1__prov2ComponentInstance">
+ <name>Sub_Node_3_14_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_14_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_0_ComponentInstance">
+ <name>Pub_Node_3_15_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_0__prov1ComponentInstance">
+ <name>Pub_Node_3_15_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_0__prov2ComponentInstance">
+ <name>Pub_Node_3_15_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_15_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_115</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_1_ComponentInstance">
+ <name>Pub_Node_3_15_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_1__prov1ComponentInstance">
+ <name>Pub_Node_3_15_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_1__prov2ComponentInstance">
+ <name>Pub_Node_3_15_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_15_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_248</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_0_ComponentInstance">
+ <name>Sub_Node_3_15_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_0__prov1ComponentInstance">
+ <name>Sub_Node_3_15_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_0__prov2ComponentInstance">
+ <name>Sub_Node_3_15_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_15_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_220</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_1_ComponentInstance">
+ <name>Sub_Node_3_15_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_1__prov1ComponentInstance">
+ <name>Sub_Node_3_15_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_1__prov2ComponentInstance">
+ <name>Sub_Node_3_15_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_15_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_34</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_0_ComponentInstance">
+ <name>Pub_Node_3_16_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_0__prov1ComponentInstance">
+ <name>Pub_Node_3_16_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_0__prov2ComponentInstance">
+ <name>Pub_Node_3_16_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_16_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_150</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_1_ComponentInstance">
+ <name>Pub_Node_3_16_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_1__prov1ComponentInstance">
+ <name>Pub_Node_3_16_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_1__prov2ComponentInstance">
+ <name>Pub_Node_3_16_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_16_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_106</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_0_ComponentInstance">
+ <name>Sub_Node_3_16_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_0__prov1ComponentInstance">
+ <name>Sub_Node_3_16_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_0__prov2ComponentInstance">
+ <name>Sub_Node_3_16_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_16_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_1_ComponentInstance">
+ <name>Sub_Node_3_16_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_1__prov1ComponentInstance">
+ <name>Sub_Node_3_16_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_1__prov2ComponentInstance">
+ <name>Sub_Node_3_16_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_16_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_22</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_0_ComponentInstance">
+ <name>Pub_Node_3_17_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_0__prov1ComponentInstance">
+ <name>Pub_Node_3_17_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_0__prov2ComponentInstance">
+ <name>Pub_Node_3_17_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_17_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_1_ComponentInstance">
+ <name>Pub_Node_3_17_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_1__prov1ComponentInstance">
+ <name>Pub_Node_3_17_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_1__prov2ComponentInstance">
+ <name>Pub_Node_3_17_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_17_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_139</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_0_ComponentInstance">
+ <name>Sub_Node_3_17_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_0__prov1ComponentInstance">
+ <name>Sub_Node_3_17_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_0__prov2ComponentInstance">
+ <name>Sub_Node_3_17_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_17_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_179</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_1_ComponentInstance">
+ <name>Sub_Node_3_17_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_1__prov1ComponentInstance">
+ <name>Sub_Node_3_17_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_1__prov2ComponentInstance">
+ <name>Sub_Node_3_17_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_17_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_203</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_0_ComponentInstance">
+ <name>Pub_Node_3_18_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_0__prov1ComponentInstance">
+ <name>Pub_Node_3_18_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_0__prov2ComponentInstance">
+ <name>Pub_Node_3_18_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_18_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_134</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_1_ComponentInstance">
+ <name>Pub_Node_3_18_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_1__prov1ComponentInstance">
+ <name>Pub_Node_3_18_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_1__prov2ComponentInstance">
+ <name>Pub_Node_3_18_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_18_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_29</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_0_ComponentInstance">
+ <name>Sub_Node_3_18_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_0__prov1ComponentInstance">
+ <name>Sub_Node_3_18_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_0__prov2ComponentInstance">
+ <name>Sub_Node_3_18_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_18_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_80</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_1_ComponentInstance">
+ <name>Sub_Node_3_18_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_1__prov1ComponentInstance">
+ <name>Sub_Node_3_18_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_1__prov2ComponentInstance">
+ <name>Sub_Node_3_18_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_18_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_245</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_0_ComponentInstance">
+ <name>Pub_Node_3_19_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_0__prov1ComponentInstance">
+ <name>Pub_Node_3_19_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_0__prov2ComponentInstance">
+ <name>Pub_Node_3_19_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_19_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_92</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_1_ComponentInstance">
+ <name>Pub_Node_3_19_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_1__prov1ComponentInstance">
+ <name>Pub_Node_3_19_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_1__prov2ComponentInstance">
+ <name>Pub_Node_3_19_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_3_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_3_19_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_45</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_0_ComponentInstance">
+ <name>Sub_Node_3_19_0_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_0__prov1ComponentInstance">
+ <name>Sub_Node_3_19_0__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_0__prov2ComponentInstance">
+ <name>Sub_Node_3_19_0__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_19_0_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_182</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_1_ComponentInstance">
+ <name>Sub_Node_3_19_1_Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_1__prov1ComponentInstance">
+ <name>Sub_Node_3_19_1__prov1Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_1__prov2ComponentInstance">
+ <name>Sub_Node_3_19_1__prov2Component</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_3_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_3_19_1_DDSConnectorComponent</name>
+ <node>Node_3</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_56</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_0_ComponentInstance">
+ <name>Pub_Node_4_0_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_0__prov1ComponentInstance">
+ <name>Pub_Node_4_0_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_0__prov2ComponentInstance">
+ <name>Pub_Node_4_0_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_0_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_129</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_1_ComponentInstance">
+ <name>Pub_Node_4_0_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_1__prov1ComponentInstance">
+ <name>Pub_Node_4_0_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_1__prov2ComponentInstance">
+ <name>Pub_Node_4_0_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_0_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_245</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_0_ComponentInstance">
+ <name>Sub_Node_4_0_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_0__prov1ComponentInstance">
+ <name>Sub_Node_4_0_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_0__prov2ComponentInstance">
+ <name>Sub_Node_4_0_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_0_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_1_ComponentInstance">
+ <name>Sub_Node_4_0_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_1__prov1ComponentInstance">
+ <name>Sub_Node_4_0_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_1__prov2ComponentInstance">
+ <name>Sub_Node_4_0_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_0_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_245</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_0_ComponentInstance">
+ <name>Pub_Node_4_1_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_0__prov1ComponentInstance">
+ <name>Pub_Node_4_1_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_0__prov2ComponentInstance">
+ <name>Pub_Node_4_1_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_1_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_36</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_1_ComponentInstance">
+ <name>Pub_Node_4_1_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_1__prov1ComponentInstance">
+ <name>Pub_Node_4_1_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_1__prov2ComponentInstance">
+ <name>Pub_Node_4_1_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_1_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_235</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_0_ComponentInstance">
+ <name>Sub_Node_4_1_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_0__prov1ComponentInstance">
+ <name>Sub_Node_4_1_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_0__prov2ComponentInstance">
+ <name>Sub_Node_4_1_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_1_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_1_ComponentInstance">
+ <name>Sub_Node_4_1_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_1__prov1ComponentInstance">
+ <name>Sub_Node_4_1_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_1__prov2ComponentInstance">
+ <name>Sub_Node_4_1_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_1_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_2</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_0_ComponentInstance">
+ <name>Pub_Node_4_2_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_0__prov1ComponentInstance">
+ <name>Pub_Node_4_2_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_0__prov2ComponentInstance">
+ <name>Pub_Node_4_2_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_2_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_113</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_1_ComponentInstance">
+ <name>Pub_Node_4_2_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_1__prov1ComponentInstance">
+ <name>Pub_Node_4_2_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_1__prov2ComponentInstance">
+ <name>Pub_Node_4_2_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_2_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_0_ComponentInstance">
+ <name>Sub_Node_4_2_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_0__prov1ComponentInstance">
+ <name>Sub_Node_4_2_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_0__prov2ComponentInstance">
+ <name>Sub_Node_4_2_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_2_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_53</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_1_ComponentInstance">
+ <name>Sub_Node_4_2_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_1__prov1ComponentInstance">
+ <name>Sub_Node_4_2_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_1__prov2ComponentInstance">
+ <name>Sub_Node_4_2_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_2_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_129</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_0_ComponentInstance">
+ <name>Pub_Node_4_3_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_0__prov1ComponentInstance">
+ <name>Pub_Node_4_3_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_0__prov2ComponentInstance">
+ <name>Pub_Node_4_3_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_3_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_139</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_1_ComponentInstance">
+ <name>Pub_Node_4_3_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_1__prov1ComponentInstance">
+ <name>Pub_Node_4_3_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_1__prov2ComponentInstance">
+ <name>Pub_Node_4_3_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_3_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_170</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_0_ComponentInstance">
+ <name>Sub_Node_4_3_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_0__prov1ComponentInstance">
+ <name>Sub_Node_4_3_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_0__prov2ComponentInstance">
+ <name>Sub_Node_4_3_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_3_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_202</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_1_ComponentInstance">
+ <name>Sub_Node_4_3_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_1__prov1ComponentInstance">
+ <name>Sub_Node_4_3_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_1__prov2ComponentInstance">
+ <name>Sub_Node_4_3_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_3_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_0_ComponentInstance">
+ <name>Pub_Node_4_4_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_0__prov1ComponentInstance">
+ <name>Pub_Node_4_4_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_0__prov2ComponentInstance">
+ <name>Pub_Node_4_4_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_4_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_185</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_1_ComponentInstance">
+ <name>Pub_Node_4_4_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_1__prov1ComponentInstance">
+ <name>Pub_Node_4_4_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_1__prov2ComponentInstance">
+ <name>Pub_Node_4_4_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_4_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_211</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_0_ComponentInstance">
+ <name>Sub_Node_4_4_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_0__prov1ComponentInstance">
+ <name>Sub_Node_4_4_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_0__prov2ComponentInstance">
+ <name>Sub_Node_4_4_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_4_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_232</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_1_ComponentInstance">
+ <name>Sub_Node_4_4_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_1__prov1ComponentInstance">
+ <name>Sub_Node_4_4_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_1__prov2ComponentInstance">
+ <name>Sub_Node_4_4_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_4_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_64</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_0_ComponentInstance">
+ <name>Pub_Node_4_5_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_0__prov1ComponentInstance">
+ <name>Pub_Node_4_5_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_0__prov2ComponentInstance">
+ <name>Pub_Node_4_5_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_5_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_1_ComponentInstance">
+ <name>Pub_Node_4_5_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_1__prov1ComponentInstance">
+ <name>Pub_Node_4_5_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_1__prov2ComponentInstance">
+ <name>Pub_Node_4_5_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_5_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_0_ComponentInstance">
+ <name>Sub_Node_4_5_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_0__prov1ComponentInstance">
+ <name>Sub_Node_4_5_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_0__prov2ComponentInstance">
+ <name>Sub_Node_4_5_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_5_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_1_ComponentInstance">
+ <name>Sub_Node_4_5_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_1__prov1ComponentInstance">
+ <name>Sub_Node_4_5_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_1__prov2ComponentInstance">
+ <name>Sub_Node_4_5_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_5_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_87</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_0_ComponentInstance">
+ <name>Pub_Node_4_6_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_0__prov1ComponentInstance">
+ <name>Pub_Node_4_6_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_0__prov2ComponentInstance">
+ <name>Pub_Node_4_6_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_6_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_90</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_1_ComponentInstance">
+ <name>Pub_Node_4_6_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_1__prov1ComponentInstance">
+ <name>Pub_Node_4_6_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_1__prov2ComponentInstance">
+ <name>Pub_Node_4_6_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_6_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_0_ComponentInstance">
+ <name>Sub_Node_4_6_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_0__prov1ComponentInstance">
+ <name>Sub_Node_4_6_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_0__prov2ComponentInstance">
+ <name>Sub_Node_4_6_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_6_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_224</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_1_ComponentInstance">
+ <name>Sub_Node_4_6_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_1__prov1ComponentInstance">
+ <name>Sub_Node_4_6_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_1__prov2ComponentInstance">
+ <name>Sub_Node_4_6_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_6_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_222</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_0_ComponentInstance">
+ <name>Pub_Node_4_7_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_0__prov1ComponentInstance">
+ <name>Pub_Node_4_7_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_0__prov2ComponentInstance">
+ <name>Pub_Node_4_7_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_7_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_1_ComponentInstance">
+ <name>Pub_Node_4_7_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_1__prov1ComponentInstance">
+ <name>Pub_Node_4_7_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_1__prov2ComponentInstance">
+ <name>Pub_Node_4_7_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_7_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_176</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_0_ComponentInstance">
+ <name>Sub_Node_4_7_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_0__prov1ComponentInstance">
+ <name>Sub_Node_4_7_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_0__prov2ComponentInstance">
+ <name>Sub_Node_4_7_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_7_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_41</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_1_ComponentInstance">
+ <name>Sub_Node_4_7_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_1__prov1ComponentInstance">
+ <name>Sub_Node_4_7_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_1__prov2ComponentInstance">
+ <name>Sub_Node_4_7_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_7_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_6</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_0_ComponentInstance">
+ <name>Pub_Node_4_8_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_0__prov1ComponentInstance">
+ <name>Pub_Node_4_8_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_0__prov2ComponentInstance">
+ <name>Pub_Node_4_8_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_8_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_12</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_1_ComponentInstance">
+ <name>Pub_Node_4_8_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_1__prov1ComponentInstance">
+ <name>Pub_Node_4_8_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_1__prov2ComponentInstance">
+ <name>Pub_Node_4_8_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_8_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_247</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_0_ComponentInstance">
+ <name>Sub_Node_4_8_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_0__prov1ComponentInstance">
+ <name>Sub_Node_4_8_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_0__prov2ComponentInstance">
+ <name>Sub_Node_4_8_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_8_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_31</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_1_ComponentInstance">
+ <name>Sub_Node_4_8_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_1__prov1ComponentInstance">
+ <name>Sub_Node_4_8_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_1__prov2ComponentInstance">
+ <name>Sub_Node_4_8_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_8_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_210</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_0_ComponentInstance">
+ <name>Pub_Node_4_9_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_0__prov1ComponentInstance">
+ <name>Pub_Node_4_9_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_0__prov2ComponentInstance">
+ <name>Pub_Node_4_9_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_9_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_229</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_1_ComponentInstance">
+ <name>Pub_Node_4_9_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_1__prov1ComponentInstance">
+ <name>Pub_Node_4_9_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_1__prov2ComponentInstance">
+ <name>Pub_Node_4_9_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_9_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_0_ComponentInstance">
+ <name>Sub_Node_4_9_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_0__prov1ComponentInstance">
+ <name>Sub_Node_4_9_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_0__prov2ComponentInstance">
+ <name>Sub_Node_4_9_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_9_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_1_ComponentInstance">
+ <name>Sub_Node_4_9_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_1__prov1ComponentInstance">
+ <name>Sub_Node_4_9_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_1__prov2ComponentInstance">
+ <name>Sub_Node_4_9_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_9_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_160</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_0_ComponentInstance">
+ <name>Pub_Node_4_10_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_0__prov1ComponentInstance">
+ <name>Pub_Node_4_10_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_0__prov2ComponentInstance">
+ <name>Pub_Node_4_10_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_10_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_1_ComponentInstance">
+ <name>Pub_Node_4_10_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_1__prov1ComponentInstance">
+ <name>Pub_Node_4_10_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_1__prov2ComponentInstance">
+ <name>Pub_Node_4_10_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_10_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_182</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_0_ComponentInstance">
+ <name>Sub_Node_4_10_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_0__prov1ComponentInstance">
+ <name>Sub_Node_4_10_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_0__prov2ComponentInstance">
+ <name>Sub_Node_4_10_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_10_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_165</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_1_ComponentInstance">
+ <name>Sub_Node_4_10_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_1__prov1ComponentInstance">
+ <name>Sub_Node_4_10_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_1__prov2ComponentInstance">
+ <name>Sub_Node_4_10_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_10_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_156</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_0_ComponentInstance">
+ <name>Pub_Node_4_11_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_0__prov1ComponentInstance">
+ <name>Pub_Node_4_11_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_0__prov2ComponentInstance">
+ <name>Pub_Node_4_11_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_11_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_249</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_1_ComponentInstance">
+ <name>Pub_Node_4_11_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_1__prov1ComponentInstance">
+ <name>Pub_Node_4_11_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_1__prov2ComponentInstance">
+ <name>Pub_Node_4_11_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_11_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_0_ComponentInstance">
+ <name>Sub_Node_4_11_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_0__prov1ComponentInstance">
+ <name>Sub_Node_4_11_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_0__prov2ComponentInstance">
+ <name>Sub_Node_4_11_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_11_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_1_ComponentInstance">
+ <name>Sub_Node_4_11_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_1__prov1ComponentInstance">
+ <name>Sub_Node_4_11_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_1__prov2ComponentInstance">
+ <name>Sub_Node_4_11_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_11_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_78</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_0_ComponentInstance">
+ <name>Pub_Node_4_12_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_0__prov1ComponentInstance">
+ <name>Pub_Node_4_12_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_0__prov2ComponentInstance">
+ <name>Pub_Node_4_12_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_12_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_53</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_1_ComponentInstance">
+ <name>Pub_Node_4_12_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_1__prov1ComponentInstance">
+ <name>Pub_Node_4_12_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_1__prov2ComponentInstance">
+ <name>Pub_Node_4_12_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_12_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_0_ComponentInstance">
+ <name>Sub_Node_4_12_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_0__prov1ComponentInstance">
+ <name>Sub_Node_4_12_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_0__prov2ComponentInstance">
+ <name>Sub_Node_4_12_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_12_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_59</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_1_ComponentInstance">
+ <name>Sub_Node_4_12_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_1__prov1ComponentInstance">
+ <name>Sub_Node_4_12_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_1__prov2ComponentInstance">
+ <name>Sub_Node_4_12_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_12_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_224</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_0_ComponentInstance">
+ <name>Pub_Node_4_13_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_0__prov1ComponentInstance">
+ <name>Pub_Node_4_13_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_0__prov2ComponentInstance">
+ <name>Pub_Node_4_13_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_13_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_96</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_1_ComponentInstance">
+ <name>Pub_Node_4_13_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_1__prov1ComponentInstance">
+ <name>Pub_Node_4_13_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_1__prov2ComponentInstance">
+ <name>Pub_Node_4_13_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_13_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_142</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_0_ComponentInstance">
+ <name>Sub_Node_4_13_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_0__prov1ComponentInstance">
+ <name>Sub_Node_4_13_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_0__prov2ComponentInstance">
+ <name>Sub_Node_4_13_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_13_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_87</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_1_ComponentInstance">
+ <name>Sub_Node_4_13_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_1__prov1ComponentInstance">
+ <name>Sub_Node_4_13_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_1__prov2ComponentInstance">
+ <name>Sub_Node_4_13_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_13_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_135</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_0_ComponentInstance">
+ <name>Pub_Node_4_14_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_0__prov1ComponentInstance">
+ <name>Pub_Node_4_14_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_0__prov2ComponentInstance">
+ <name>Pub_Node_4_14_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_14_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_103</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_1_ComponentInstance">
+ <name>Pub_Node_4_14_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_1__prov1ComponentInstance">
+ <name>Pub_Node_4_14_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_1__prov2ComponentInstance">
+ <name>Pub_Node_4_14_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_14_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_0_ComponentInstance">
+ <name>Sub_Node_4_14_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_0__prov1ComponentInstance">
+ <name>Sub_Node_4_14_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_0__prov2ComponentInstance">
+ <name>Sub_Node_4_14_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_14_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_208</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_1_ComponentInstance">
+ <name>Sub_Node_4_14_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_1__prov1ComponentInstance">
+ <name>Sub_Node_4_14_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_1__prov2ComponentInstance">
+ <name>Sub_Node_4_14_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_14_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_90</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_0_ComponentInstance">
+ <name>Pub_Node_4_15_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_0__prov1ComponentInstance">
+ <name>Pub_Node_4_15_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_0__prov2ComponentInstance">
+ <name>Pub_Node_4_15_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_15_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_1_ComponentInstance">
+ <name>Pub_Node_4_15_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_1__prov1ComponentInstance">
+ <name>Pub_Node_4_15_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_1__prov2ComponentInstance">
+ <name>Pub_Node_4_15_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_15_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_26</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_0_ComponentInstance">
+ <name>Sub_Node_4_15_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_0__prov1ComponentInstance">
+ <name>Sub_Node_4_15_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_0__prov2ComponentInstance">
+ <name>Sub_Node_4_15_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_15_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_112</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_1_ComponentInstance">
+ <name>Sub_Node_4_15_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_1__prov1ComponentInstance">
+ <name>Sub_Node_4_15_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_1__prov2ComponentInstance">
+ <name>Sub_Node_4_15_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_15_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_126</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_0_ComponentInstance">
+ <name>Pub_Node_4_16_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_0__prov1ComponentInstance">
+ <name>Pub_Node_4_16_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_0__prov2ComponentInstance">
+ <name>Pub_Node_4_16_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_16_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_119</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_1_ComponentInstance">
+ <name>Pub_Node_4_16_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_1__prov1ComponentInstance">
+ <name>Pub_Node_4_16_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_1__prov2ComponentInstance">
+ <name>Pub_Node_4_16_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_16_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_34</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_0_ComponentInstance">
+ <name>Sub_Node_4_16_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_0__prov1ComponentInstance">
+ <name>Sub_Node_4_16_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_0__prov2ComponentInstance">
+ <name>Sub_Node_4_16_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_16_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_1_ComponentInstance">
+ <name>Sub_Node_4_16_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_1__prov1ComponentInstance">
+ <name>Sub_Node_4_16_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_1__prov2ComponentInstance">
+ <name>Sub_Node_4_16_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_16_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_54</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_0_ComponentInstance">
+ <name>Pub_Node_4_17_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_0__prov1ComponentInstance">
+ <name>Pub_Node_4_17_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_0__prov2ComponentInstance">
+ <name>Pub_Node_4_17_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_17_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_1_ComponentInstance">
+ <name>Pub_Node_4_17_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_1__prov1ComponentInstance">
+ <name>Pub_Node_4_17_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_1__prov2ComponentInstance">
+ <name>Pub_Node_4_17_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_17_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_34</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_0_ComponentInstance">
+ <name>Sub_Node_4_17_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_0__prov1ComponentInstance">
+ <name>Sub_Node_4_17_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_0__prov2ComponentInstance">
+ <name>Sub_Node_4_17_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_17_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_217</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_1_ComponentInstance">
+ <name>Sub_Node_4_17_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_1__prov1ComponentInstance">
+ <name>Sub_Node_4_17_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_1__prov2ComponentInstance">
+ <name>Sub_Node_4_17_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_17_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_247</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_0_ComponentInstance">
+ <name>Pub_Node_4_18_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_0__prov1ComponentInstance">
+ <name>Pub_Node_4_18_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_0__prov2ComponentInstance">
+ <name>Pub_Node_4_18_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_18_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_58</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_1_ComponentInstance">
+ <name>Pub_Node_4_18_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_1__prov1ComponentInstance">
+ <name>Pub_Node_4_18_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_1__prov2ComponentInstance">
+ <name>Pub_Node_4_18_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_18_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_193</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_0_ComponentInstance">
+ <name>Sub_Node_4_18_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_0__prov1ComponentInstance">
+ <name>Sub_Node_4_18_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_0__prov2ComponentInstance">
+ <name>Sub_Node_4_18_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_18_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_205</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_1_ComponentInstance">
+ <name>Sub_Node_4_18_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_1__prov1ComponentInstance">
+ <name>Sub_Node_4_18_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_1__prov2ComponentInstance">
+ <name>Sub_Node_4_18_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_18_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_12</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_0_ComponentInstance">
+ <name>Pub_Node_4_19_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_0__prov1ComponentInstance">
+ <name>Pub_Node_4_19_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_0__prov2ComponentInstance">
+ <name>Pub_Node_4_19_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_19_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_25</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_1_ComponentInstance">
+ <name>Pub_Node_4_19_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_1__prov1ComponentInstance">
+ <name>Pub_Node_4_19_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_1__prov2ComponentInstance">
+ <name>Pub_Node_4_19_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_4_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_4_19_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_161</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_0_ComponentInstance">
+ <name>Sub_Node_4_19_0_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_0__prov1ComponentInstance">
+ <name>Sub_Node_4_19_0__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_0__prov2ComponentInstance">
+ <name>Sub_Node_4_19_0__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_19_0_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_147</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_1_ComponentInstance">
+ <name>Sub_Node_4_19_1_Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_1__prov1ComponentInstance">
+ <name>Sub_Node_4_19_1__prov1Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_1__prov2ComponentInstance">
+ <name>Sub_Node_4_19_1__prov2Component</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_4_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_4_19_1_DDSConnectorComponent</name>
+ <node>Node_4</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_0_ComponentInstance">
+ <name>Pub_Node_5_0_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_0__prov1ComponentInstance">
+ <name>Pub_Node_5_0_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_0__prov2ComponentInstance">
+ <name>Pub_Node_5_0_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_0_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_3</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_1_ComponentInstance">
+ <name>Pub_Node_5_0_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_1__prov1ComponentInstance">
+ <name>Pub_Node_5_0_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_1__prov2ComponentInstance">
+ <name>Pub_Node_5_0_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_0_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_0_ComponentInstance">
+ <name>Sub_Node_5_0_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_0__prov1ComponentInstance">
+ <name>Sub_Node_5_0_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_0__prov2ComponentInstance">
+ <name>Sub_Node_5_0_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_0_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_28</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_1_ComponentInstance">
+ <name>Sub_Node_5_0_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_1__prov1ComponentInstance">
+ <name>Sub_Node_5_0_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_1__prov2ComponentInstance">
+ <name>Sub_Node_5_0_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_0_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_20</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_0_ComponentInstance">
+ <name>Pub_Node_5_1_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_0__prov1ComponentInstance">
+ <name>Pub_Node_5_1_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_0__prov2ComponentInstance">
+ <name>Pub_Node_5_1_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_1_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_57</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_1_ComponentInstance">
+ <name>Pub_Node_5_1_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_1__prov1ComponentInstance">
+ <name>Pub_Node_5_1_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_1__prov2ComponentInstance">
+ <name>Pub_Node_5_1_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_1_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_165</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_0_ComponentInstance">
+ <name>Sub_Node_5_1_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_0__prov1ComponentInstance">
+ <name>Sub_Node_5_1_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_0__prov2ComponentInstance">
+ <name>Sub_Node_5_1_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_1_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_164</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_1_ComponentInstance">
+ <name>Sub_Node_5_1_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_1__prov1ComponentInstance">
+ <name>Sub_Node_5_1_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_1__prov2ComponentInstance">
+ <name>Sub_Node_5_1_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_1_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_0_ComponentInstance">
+ <name>Pub_Node_5_2_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_0__prov1ComponentInstance">
+ <name>Pub_Node_5_2_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_0__prov2ComponentInstance">
+ <name>Pub_Node_5_2_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_2_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_1_ComponentInstance">
+ <name>Pub_Node_5_2_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_1__prov1ComponentInstance">
+ <name>Pub_Node_5_2_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_1__prov2ComponentInstance">
+ <name>Pub_Node_5_2_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_2_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_108</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_0_ComponentInstance">
+ <name>Sub_Node_5_2_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_0__prov1ComponentInstance">
+ <name>Sub_Node_5_2_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_0__prov2ComponentInstance">
+ <name>Sub_Node_5_2_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_2_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_1_ComponentInstance">
+ <name>Sub_Node_5_2_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_1__prov1ComponentInstance">
+ <name>Sub_Node_5_2_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_1__prov2ComponentInstance">
+ <name>Sub_Node_5_2_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_2_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_0_ComponentInstance">
+ <name>Pub_Node_5_3_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_0__prov1ComponentInstance">
+ <name>Pub_Node_5_3_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_0__prov2ComponentInstance">
+ <name>Pub_Node_5_3_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_3_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_51</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_1_ComponentInstance">
+ <name>Pub_Node_5_3_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_1__prov1ComponentInstance">
+ <name>Pub_Node_5_3_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_1__prov2ComponentInstance">
+ <name>Pub_Node_5_3_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_3_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_0_ComponentInstance">
+ <name>Sub_Node_5_3_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_0__prov1ComponentInstance">
+ <name>Sub_Node_5_3_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_0__prov2ComponentInstance">
+ <name>Sub_Node_5_3_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_3_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_0</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_1_ComponentInstance">
+ <name>Sub_Node_5_3_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_1__prov1ComponentInstance">
+ <name>Sub_Node_5_3_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_1__prov2ComponentInstance">
+ <name>Sub_Node_5_3_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_3_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_164</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_0_ComponentInstance">
+ <name>Pub_Node_5_4_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_0__prov1ComponentInstance">
+ <name>Pub_Node_5_4_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_0__prov2ComponentInstance">
+ <name>Pub_Node_5_4_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_4_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_181</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_1_ComponentInstance">
+ <name>Pub_Node_5_4_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_1__prov1ComponentInstance">
+ <name>Pub_Node_5_4_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_1__prov2ComponentInstance">
+ <name>Pub_Node_5_4_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_4_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_224</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_0_ComponentInstance">
+ <name>Sub_Node_5_4_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_0__prov1ComponentInstance">
+ <name>Sub_Node_5_4_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_0__prov2ComponentInstance">
+ <name>Sub_Node_5_4_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_4_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_121</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_1_ComponentInstance">
+ <name>Sub_Node_5_4_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_1__prov1ComponentInstance">
+ <name>Sub_Node_5_4_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_1__prov2ComponentInstance">
+ <name>Sub_Node_5_4_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_4_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_86</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_0_ComponentInstance">
+ <name>Pub_Node_5_5_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_0__prov1ComponentInstance">
+ <name>Pub_Node_5_5_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_0__prov2ComponentInstance">
+ <name>Pub_Node_5_5_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_5_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_77</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_1_ComponentInstance">
+ <name>Pub_Node_5_5_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_1__prov1ComponentInstance">
+ <name>Pub_Node_5_5_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_1__prov2ComponentInstance">
+ <name>Pub_Node_5_5_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_5_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_26</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_0_ComponentInstance">
+ <name>Sub_Node_5_5_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_0__prov1ComponentInstance">
+ <name>Sub_Node_5_5_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_0__prov2ComponentInstance">
+ <name>Sub_Node_5_5_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_5_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_34</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_1_ComponentInstance">
+ <name>Sub_Node_5_5_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_1__prov1ComponentInstance">
+ <name>Sub_Node_5_5_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_1__prov2ComponentInstance">
+ <name>Sub_Node_5_5_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_5_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_29</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_0_ComponentInstance">
+ <name>Pub_Node_5_6_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_0__prov1ComponentInstance">
+ <name>Pub_Node_5_6_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_0__prov2ComponentInstance">
+ <name>Pub_Node_5_6_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_6_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_1_ComponentInstance">
+ <name>Pub_Node_5_6_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_1__prov1ComponentInstance">
+ <name>Pub_Node_5_6_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_1__prov2ComponentInstance">
+ <name>Pub_Node_5_6_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_6_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_146</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_0_ComponentInstance">
+ <name>Sub_Node_5_6_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_0__prov1ComponentInstance">
+ <name>Sub_Node_5_6_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_0__prov2ComponentInstance">
+ <name>Sub_Node_5_6_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_6_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_1_ComponentInstance">
+ <name>Sub_Node_5_6_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_1__prov1ComponentInstance">
+ <name>Sub_Node_5_6_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_1__prov2ComponentInstance">
+ <name>Sub_Node_5_6_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_6_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_219</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_0_ComponentInstance">
+ <name>Pub_Node_5_7_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_0__prov1ComponentInstance">
+ <name>Pub_Node_5_7_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_0__prov2ComponentInstance">
+ <name>Pub_Node_5_7_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_7_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_230</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_1_ComponentInstance">
+ <name>Pub_Node_5_7_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_1__prov1ComponentInstance">
+ <name>Pub_Node_5_7_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_1__prov2ComponentInstance">
+ <name>Pub_Node_5_7_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_7_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_0_ComponentInstance">
+ <name>Sub_Node_5_7_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_0__prov1ComponentInstance">
+ <name>Sub_Node_5_7_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_0__prov2ComponentInstance">
+ <name>Sub_Node_5_7_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_7_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_217</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_1_ComponentInstance">
+ <name>Sub_Node_5_7_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_1__prov1ComponentInstance">
+ <name>Sub_Node_5_7_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_1__prov2ComponentInstance">
+ <name>Sub_Node_5_7_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_7_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_1</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_0_ComponentInstance">
+ <name>Pub_Node_5_8_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_0__prov1ComponentInstance">
+ <name>Pub_Node_5_8_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_0__prov2ComponentInstance">
+ <name>Pub_Node_5_8_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_8_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_68</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_1_ComponentInstance">
+ <name>Pub_Node_5_8_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_1__prov1ComponentInstance">
+ <name>Pub_Node_5_8_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_1__prov2ComponentInstance">
+ <name>Pub_Node_5_8_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_8_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_14</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_0_ComponentInstance">
+ <name>Sub_Node_5_8_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_0__prov1ComponentInstance">
+ <name>Sub_Node_5_8_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_0__prov2ComponentInstance">
+ <name>Sub_Node_5_8_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_8_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_224</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_1_ComponentInstance">
+ <name>Sub_Node_5_8_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_1__prov1ComponentInstance">
+ <name>Sub_Node_5_8_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_1__prov2ComponentInstance">
+ <name>Sub_Node_5_8_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_8_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_148</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_0_ComponentInstance">
+ <name>Pub_Node_5_9_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_0__prov1ComponentInstance">
+ <name>Pub_Node_5_9_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_0__prov2ComponentInstance">
+ <name>Pub_Node_5_9_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_9_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_148</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_1_ComponentInstance">
+ <name>Pub_Node_5_9_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_1__prov1ComponentInstance">
+ <name>Pub_Node_5_9_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_1__prov2ComponentInstance">
+ <name>Pub_Node_5_9_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_9_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_0_ComponentInstance">
+ <name>Sub_Node_5_9_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_0__prov1ComponentInstance">
+ <name>Sub_Node_5_9_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_0__prov2ComponentInstance">
+ <name>Sub_Node_5_9_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_9_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_1_ComponentInstance">
+ <name>Sub_Node_5_9_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_1__prov1ComponentInstance">
+ <name>Sub_Node_5_9_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_1__prov2ComponentInstance">
+ <name>Sub_Node_5_9_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_9_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_0_ComponentInstance">
+ <name>Pub_Node_5_10_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_0__prov1ComponentInstance">
+ <name>Pub_Node_5_10_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_0__prov2ComponentInstance">
+ <name>Pub_Node_5_10_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_10_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_181</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_1_ComponentInstance">
+ <name>Pub_Node_5_10_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_1__prov1ComponentInstance">
+ <name>Pub_Node_5_10_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_1__prov2ComponentInstance">
+ <name>Pub_Node_5_10_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_10_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_0_ComponentInstance">
+ <name>Sub_Node_5_10_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_0__prov1ComponentInstance">
+ <name>Sub_Node_5_10_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_0__prov2ComponentInstance">
+ <name>Sub_Node_5_10_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_10_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_1_ComponentInstance">
+ <name>Sub_Node_5_10_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_1__prov1ComponentInstance">
+ <name>Sub_Node_5_10_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_1__prov2ComponentInstance">
+ <name>Sub_Node_5_10_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_10_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_156</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_0_ComponentInstance">
+ <name>Pub_Node_5_11_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_0__prov1ComponentInstance">
+ <name>Pub_Node_5_11_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_0__prov2ComponentInstance">
+ <name>Pub_Node_5_11_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_11_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_208</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_1_ComponentInstance">
+ <name>Pub_Node_5_11_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_1__prov1ComponentInstance">
+ <name>Pub_Node_5_11_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_1__prov2ComponentInstance">
+ <name>Pub_Node_5_11_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_11_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_245</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_0_ComponentInstance">
+ <name>Sub_Node_5_11_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_0__prov1ComponentInstance">
+ <name>Sub_Node_5_11_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_0__prov2ComponentInstance">
+ <name>Sub_Node_5_11_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_11_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_88</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_1_ComponentInstance">
+ <name>Sub_Node_5_11_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_1__prov1ComponentInstance">
+ <name>Sub_Node_5_11_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_1__prov2ComponentInstance">
+ <name>Sub_Node_5_11_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_11_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_222</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_0_ComponentInstance">
+ <name>Pub_Node_5_12_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_0__prov1ComponentInstance">
+ <name>Pub_Node_5_12_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_0__prov2ComponentInstance">
+ <name>Pub_Node_5_12_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_12_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_138</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_1_ComponentInstance">
+ <name>Pub_Node_5_12_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_1__prov1ComponentInstance">
+ <name>Pub_Node_5_12_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_1__prov2ComponentInstance">
+ <name>Pub_Node_5_12_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_12_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_142</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_0_ComponentInstance">
+ <name>Sub_Node_5_12_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_0__prov1ComponentInstance">
+ <name>Sub_Node_5_12_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_0__prov2ComponentInstance">
+ <name>Sub_Node_5_12_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_12_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_234</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_1_ComponentInstance">
+ <name>Sub_Node_5_12_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_1__prov1ComponentInstance">
+ <name>Sub_Node_5_12_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_1__prov2ComponentInstance">
+ <name>Sub_Node_5_12_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_12_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_0_ComponentInstance">
+ <name>Pub_Node_5_13_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_0__prov1ComponentInstance">
+ <name>Pub_Node_5_13_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_0__prov2ComponentInstance">
+ <name>Pub_Node_5_13_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_13_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_183</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_1_ComponentInstance">
+ <name>Pub_Node_5_13_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_1__prov1ComponentInstance">
+ <name>Pub_Node_5_13_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_1__prov2ComponentInstance">
+ <name>Pub_Node_5_13_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_13_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_4</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_0_ComponentInstance">
+ <name>Sub_Node_5_13_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_0__prov1ComponentInstance">
+ <name>Sub_Node_5_13_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_0__prov2ComponentInstance">
+ <name>Sub_Node_5_13_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_13_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_1_ComponentInstance">
+ <name>Sub_Node_5_13_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_1__prov1ComponentInstance">
+ <name>Sub_Node_5_13_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_1__prov2ComponentInstance">
+ <name>Sub_Node_5_13_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_13_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_197</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_0_ComponentInstance">
+ <name>Pub_Node_5_14_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_0__prov1ComponentInstance">
+ <name>Pub_Node_5_14_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_0__prov2ComponentInstance">
+ <name>Pub_Node_5_14_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_14_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_196</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_1_ComponentInstance">
+ <name>Pub_Node_5_14_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_1__prov1ComponentInstance">
+ <name>Pub_Node_5_14_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_1__prov2ComponentInstance">
+ <name>Pub_Node_5_14_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_14_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_181</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_0_ComponentInstance">
+ <name>Sub_Node_5_14_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_0__prov1ComponentInstance">
+ <name>Sub_Node_5_14_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_0__prov2ComponentInstance">
+ <name>Sub_Node_5_14_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_14_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_95</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_1_ComponentInstance">
+ <name>Sub_Node_5_14_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_1__prov1ComponentInstance">
+ <name>Sub_Node_5_14_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_1__prov2ComponentInstance">
+ <name>Sub_Node_5_14_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_14_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_0_ComponentInstance">
+ <name>Pub_Node_5_15_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_0__prov1ComponentInstance">
+ <name>Pub_Node_5_15_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_0__prov2ComponentInstance">
+ <name>Pub_Node_5_15_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_15_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_1_ComponentInstance">
+ <name>Pub_Node_5_15_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_1__prov1ComponentInstance">
+ <name>Pub_Node_5_15_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_1__prov2ComponentInstance">
+ <name>Pub_Node_5_15_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_15_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_75</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_0_ComponentInstance">
+ <name>Sub_Node_5_15_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_0__prov1ComponentInstance">
+ <name>Sub_Node_5_15_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_0__prov2ComponentInstance">
+ <name>Sub_Node_5_15_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_15_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_231</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_1_ComponentInstance">
+ <name>Sub_Node_5_15_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_1__prov1ComponentInstance">
+ <name>Sub_Node_5_15_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_1__prov2ComponentInstance">
+ <name>Sub_Node_5_15_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_15_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_0_ComponentInstance">
+ <name>Pub_Node_5_16_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_0__prov1ComponentInstance">
+ <name>Pub_Node_5_16_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_0__prov2ComponentInstance">
+ <name>Pub_Node_5_16_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_16_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_128</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_1_ComponentInstance">
+ <name>Pub_Node_5_16_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_1__prov1ComponentInstance">
+ <name>Pub_Node_5_16_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_1__prov2ComponentInstance">
+ <name>Pub_Node_5_16_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_16_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_160</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_0_ComponentInstance">
+ <name>Sub_Node_5_16_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_0__prov1ComponentInstance">
+ <name>Sub_Node_5_16_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_0__prov2ComponentInstance">
+ <name>Sub_Node_5_16_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_16_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_207</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_1_ComponentInstance">
+ <name>Sub_Node_5_16_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_1__prov1ComponentInstance">
+ <name>Sub_Node_5_16_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_1__prov2ComponentInstance">
+ <name>Sub_Node_5_16_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_16_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_59</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_0_ComponentInstance">
+ <name>Pub_Node_5_17_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_0__prov1ComponentInstance">
+ <name>Pub_Node_5_17_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_0__prov2ComponentInstance">
+ <name>Pub_Node_5_17_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_17_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_1_ComponentInstance">
+ <name>Pub_Node_5_17_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_1__prov1ComponentInstance">
+ <name>Pub_Node_5_17_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_1__prov2ComponentInstance">
+ <name>Pub_Node_5_17_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_17_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_205</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_0_ComponentInstance">
+ <name>Sub_Node_5_17_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_0__prov1ComponentInstance">
+ <name>Sub_Node_5_17_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_0__prov2ComponentInstance">
+ <name>Sub_Node_5_17_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_17_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_62</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_1_ComponentInstance">
+ <name>Sub_Node_5_17_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_1__prov1ComponentInstance">
+ <name>Sub_Node_5_17_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_1__prov2ComponentInstance">
+ <name>Sub_Node_5_17_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_17_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_230</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_0_ComponentInstance">
+ <name>Pub_Node_5_18_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_0__prov1ComponentInstance">
+ <name>Pub_Node_5_18_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_0__prov2ComponentInstance">
+ <name>Pub_Node_5_18_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_18_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_1_ComponentInstance">
+ <name>Pub_Node_5_18_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_1__prov1ComponentInstance">
+ <name>Pub_Node_5_18_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_1__prov2ComponentInstance">
+ <name>Pub_Node_5_18_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_18_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_0_ComponentInstance">
+ <name>Sub_Node_5_18_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_0__prov1ComponentInstance">
+ <name>Sub_Node_5_18_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_0__prov2ComponentInstance">
+ <name>Sub_Node_5_18_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_18_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_1_ComponentInstance">
+ <name>Sub_Node_5_18_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_1__prov1ComponentInstance">
+ <name>Sub_Node_5_18_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_1__prov2ComponentInstance">
+ <name>Sub_Node_5_18_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_18_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_98</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_0_ComponentInstance">
+ <name>Pub_Node_5_19_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_0__prov1ComponentInstance">
+ <name>Pub_Node_5_19_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_0__prov2ComponentInstance">
+ <name>Pub_Node_5_19_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_19_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_21</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_1_ComponentInstance">
+ <name>Pub_Node_5_19_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_1__prov1ComponentInstance">
+ <name>Pub_Node_5_19_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_1__prov2ComponentInstance">
+ <name>Pub_Node_5_19_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_5_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_5_19_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_0_ComponentInstance">
+ <name>Sub_Node_5_19_0_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_0__prov1ComponentInstance">
+ <name>Sub_Node_5_19_0__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_0__prov2ComponentInstance">
+ <name>Sub_Node_5_19_0__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_19_0_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_17</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_1_ComponentInstance">
+ <name>Sub_Node_5_19_1_Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_1__prov1ComponentInstance">
+ <name>Sub_Node_5_19_1__prov1Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_1__prov2ComponentInstance">
+ <name>Sub_Node_5_19_1__prov2Component</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_5_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_5_19_1_DDSConnectorComponent</name>
+ <node>Node_5</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_82</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_0_ComponentInstance">
+ <name>Pub_Node_6_0_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_0__prov1ComponentInstance">
+ <name>Pub_Node_6_0_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_0__prov2ComponentInstance">
+ <name>Pub_Node_6_0_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_0_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_118</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_1_ComponentInstance">
+ <name>Pub_Node_6_0_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_1__prov1ComponentInstance">
+ <name>Pub_Node_6_0_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_1__prov2ComponentInstance">
+ <name>Pub_Node_6_0_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_0_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_140</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_0_ComponentInstance">
+ <name>Sub_Node_6_0_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_0__prov1ComponentInstance">
+ <name>Sub_Node_6_0_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_0__prov2ComponentInstance">
+ <name>Sub_Node_6_0_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_0_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_244</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_1_ComponentInstance">
+ <name>Sub_Node_6_0_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_1__prov1ComponentInstance">
+ <name>Sub_Node_6_0_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_1__prov2ComponentInstance">
+ <name>Sub_Node_6_0_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_0_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_80</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_0_ComponentInstance">
+ <name>Pub_Node_6_1_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_0__prov1ComponentInstance">
+ <name>Pub_Node_6_1_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_0__prov2ComponentInstance">
+ <name>Pub_Node_6_1_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_1_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_185</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_1_ComponentInstance">
+ <name>Pub_Node_6_1_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_1__prov1ComponentInstance">
+ <name>Pub_Node_6_1_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_1__prov2ComponentInstance">
+ <name>Pub_Node_6_1_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_1_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_30</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_0_ComponentInstance">
+ <name>Sub_Node_6_1_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_0__prov1ComponentInstance">
+ <name>Sub_Node_6_1_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_0__prov2ComponentInstance">
+ <name>Sub_Node_6_1_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_1_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_1_ComponentInstance">
+ <name>Sub_Node_6_1_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_1__prov1ComponentInstance">
+ <name>Sub_Node_6_1_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_1__prov2ComponentInstance">
+ <name>Sub_Node_6_1_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_1_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_186</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_0_ComponentInstance">
+ <name>Pub_Node_6_2_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_0__prov1ComponentInstance">
+ <name>Pub_Node_6_2_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_0__prov2ComponentInstance">
+ <name>Pub_Node_6_2_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_2_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_142</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_1_ComponentInstance">
+ <name>Pub_Node_6_2_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_1__prov1ComponentInstance">
+ <name>Pub_Node_6_2_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_1__prov2ComponentInstance">
+ <name>Pub_Node_6_2_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_2_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_0_ComponentInstance">
+ <name>Sub_Node_6_2_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_0__prov1ComponentInstance">
+ <name>Sub_Node_6_2_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_0__prov2ComponentInstance">
+ <name>Sub_Node_6_2_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_2_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_141</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_1_ComponentInstance">
+ <name>Sub_Node_6_2_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_1__prov1ComponentInstance">
+ <name>Sub_Node_6_2_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_1__prov2ComponentInstance">
+ <name>Sub_Node_6_2_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_2_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_24</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_0_ComponentInstance">
+ <name>Pub_Node_6_3_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_0__prov1ComponentInstance">
+ <name>Pub_Node_6_3_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_0__prov2ComponentInstance">
+ <name>Pub_Node_6_3_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_3_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_218</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_1_ComponentInstance">
+ <name>Pub_Node_6_3_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_1__prov1ComponentInstance">
+ <name>Pub_Node_6_3_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_1__prov2ComponentInstance">
+ <name>Pub_Node_6_3_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_3_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_51</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_0_ComponentInstance">
+ <name>Sub_Node_6_3_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_0__prov1ComponentInstance">
+ <name>Sub_Node_6_3_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_0__prov2ComponentInstance">
+ <name>Sub_Node_6_3_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_3_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_113</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_1_ComponentInstance">
+ <name>Sub_Node_6_3_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_1__prov1ComponentInstance">
+ <name>Sub_Node_6_3_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_1__prov2ComponentInstance">
+ <name>Sub_Node_6_3_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_3_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_63</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_0_ComponentInstance">
+ <name>Pub_Node_6_4_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_0__prov1ComponentInstance">
+ <name>Pub_Node_6_4_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_0__prov2ComponentInstance">
+ <name>Pub_Node_6_4_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_4_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_143</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_1_ComponentInstance">
+ <name>Pub_Node_6_4_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_1__prov1ComponentInstance">
+ <name>Pub_Node_6_4_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_1__prov2ComponentInstance">
+ <name>Pub_Node_6_4_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_4_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_216</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_0_ComponentInstance">
+ <name>Sub_Node_6_4_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_0__prov1ComponentInstance">
+ <name>Sub_Node_6_4_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_0__prov2ComponentInstance">
+ <name>Sub_Node_6_4_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_4_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_140</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_1_ComponentInstance">
+ <name>Sub_Node_6_4_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_1__prov1ComponentInstance">
+ <name>Sub_Node_6_4_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_1__prov2ComponentInstance">
+ <name>Sub_Node_6_4_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_4_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_110</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_0_ComponentInstance">
+ <name>Pub_Node_6_5_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_0__prov1ComponentInstance">
+ <name>Pub_Node_6_5_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_0__prov2ComponentInstance">
+ <name>Pub_Node_6_5_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_5_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_226</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_1_ComponentInstance">
+ <name>Pub_Node_6_5_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_1__prov1ComponentInstance">
+ <name>Pub_Node_6_5_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_1__prov2ComponentInstance">
+ <name>Pub_Node_6_5_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_5_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_0_ComponentInstance">
+ <name>Sub_Node_6_5_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_0__prov1ComponentInstance">
+ <name>Sub_Node_6_5_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_0__prov2ComponentInstance">
+ <name>Sub_Node_6_5_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_5_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_1_ComponentInstance">
+ <name>Sub_Node_6_5_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_1__prov1ComponentInstance">
+ <name>Sub_Node_6_5_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_1__prov2ComponentInstance">
+ <name>Sub_Node_6_5_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_5_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_205</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_0_ComponentInstance">
+ <name>Pub_Node_6_6_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_0__prov1ComponentInstance">
+ <name>Pub_Node_6_6_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_0__prov2ComponentInstance">
+ <name>Pub_Node_6_6_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_6_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_58</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_1_ComponentInstance">
+ <name>Pub_Node_6_6_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_1__prov1ComponentInstance">
+ <name>Pub_Node_6_6_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_1__prov2ComponentInstance">
+ <name>Pub_Node_6_6_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_6_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_26</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_0_ComponentInstance">
+ <name>Sub_Node_6_6_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_0__prov1ComponentInstance">
+ <name>Sub_Node_6_6_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_0__prov2ComponentInstance">
+ <name>Sub_Node_6_6_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_6_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_33</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_1_ComponentInstance">
+ <name>Sub_Node_6_6_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_1__prov1ComponentInstance">
+ <name>Sub_Node_6_6_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_1__prov2ComponentInstance">
+ <name>Sub_Node_6_6_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_6_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_44</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_0_ComponentInstance">
+ <name>Pub_Node_6_7_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_0__prov1ComponentInstance">
+ <name>Pub_Node_6_7_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_0__prov2ComponentInstance">
+ <name>Pub_Node_6_7_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_7_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_82</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_1_ComponentInstance">
+ <name>Pub_Node_6_7_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_1__prov1ComponentInstance">
+ <name>Pub_Node_6_7_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_1__prov2ComponentInstance">
+ <name>Pub_Node_6_7_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_7_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_247</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_0_ComponentInstance">
+ <name>Sub_Node_6_7_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_0__prov1ComponentInstance">
+ <name>Sub_Node_6_7_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_0__prov2ComponentInstance">
+ <name>Sub_Node_6_7_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_7_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_1_ComponentInstance">
+ <name>Sub_Node_6_7_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_1__prov1ComponentInstance">
+ <name>Sub_Node_6_7_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_1__prov2ComponentInstance">
+ <name>Sub_Node_6_7_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_7_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_136</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_0_ComponentInstance">
+ <name>Pub_Node_6_8_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_0__prov1ComponentInstance">
+ <name>Pub_Node_6_8_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_0__prov2ComponentInstance">
+ <name>Pub_Node_6_8_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_8_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_51</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_1_ComponentInstance">
+ <name>Pub_Node_6_8_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_1__prov1ComponentInstance">
+ <name>Pub_Node_6_8_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_1__prov2ComponentInstance">
+ <name>Pub_Node_6_8_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_8_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_166</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_0_ComponentInstance">
+ <name>Sub_Node_6_8_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_0__prov1ComponentInstance">
+ <name>Sub_Node_6_8_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_0__prov2ComponentInstance">
+ <name>Sub_Node_6_8_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_8_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_1_ComponentInstance">
+ <name>Sub_Node_6_8_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_1__prov1ComponentInstance">
+ <name>Sub_Node_6_8_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_1__prov2ComponentInstance">
+ <name>Sub_Node_6_8_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_8_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_210</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_0_ComponentInstance">
+ <name>Pub_Node_6_9_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_0__prov1ComponentInstance">
+ <name>Pub_Node_6_9_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_0__prov2ComponentInstance">
+ <name>Pub_Node_6_9_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_9_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_1_ComponentInstance">
+ <name>Pub_Node_6_9_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_1__prov1ComponentInstance">
+ <name>Pub_Node_6_9_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_1__prov2ComponentInstance">
+ <name>Pub_Node_6_9_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_9_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_27</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_0_ComponentInstance">
+ <name>Sub_Node_6_9_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_0__prov1ComponentInstance">
+ <name>Sub_Node_6_9_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_0__prov2ComponentInstance">
+ <name>Sub_Node_6_9_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_9_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_1_ComponentInstance">
+ <name>Sub_Node_6_9_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_1__prov1ComponentInstance">
+ <name>Sub_Node_6_9_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_1__prov2ComponentInstance">
+ <name>Sub_Node_6_9_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_9_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_0_ComponentInstance">
+ <name>Pub_Node_6_10_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_0__prov1ComponentInstance">
+ <name>Pub_Node_6_10_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_0__prov2ComponentInstance">
+ <name>Pub_Node_6_10_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_10_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_113</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_1_ComponentInstance">
+ <name>Pub_Node_6_10_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_1__prov1ComponentInstance">
+ <name>Pub_Node_6_10_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_1__prov2ComponentInstance">
+ <name>Pub_Node_6_10_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_10_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_0_ComponentInstance">
+ <name>Sub_Node_6_10_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_0__prov1ComponentInstance">
+ <name>Sub_Node_6_10_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_0__prov2ComponentInstance">
+ <name>Sub_Node_6_10_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_10_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_80</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_1_ComponentInstance">
+ <name>Sub_Node_6_10_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_1__prov1ComponentInstance">
+ <name>Sub_Node_6_10_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_1__prov2ComponentInstance">
+ <name>Sub_Node_6_10_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_10_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_0_ComponentInstance">
+ <name>Pub_Node_6_11_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_0__prov1ComponentInstance">
+ <name>Pub_Node_6_11_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_0__prov2ComponentInstance">
+ <name>Pub_Node_6_11_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_11_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_132</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_1_ComponentInstance">
+ <name>Pub_Node_6_11_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_1__prov1ComponentInstance">
+ <name>Pub_Node_6_11_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_1__prov2ComponentInstance">
+ <name>Pub_Node_6_11_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_11_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_166</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_0_ComponentInstance">
+ <name>Sub_Node_6_11_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_0__prov1ComponentInstance">
+ <name>Sub_Node_6_11_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_0__prov2ComponentInstance">
+ <name>Sub_Node_6_11_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_11_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_82</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_1_ComponentInstance">
+ <name>Sub_Node_6_11_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_1__prov1ComponentInstance">
+ <name>Sub_Node_6_11_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_1__prov2ComponentInstance">
+ <name>Sub_Node_6_11_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_11_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_0_ComponentInstance">
+ <name>Pub_Node_6_12_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_0__prov1ComponentInstance">
+ <name>Pub_Node_6_12_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_0__prov2ComponentInstance">
+ <name>Pub_Node_6_12_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_12_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_222</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_1_ComponentInstance">
+ <name>Pub_Node_6_12_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_1__prov1ComponentInstance">
+ <name>Pub_Node_6_12_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_1__prov2ComponentInstance">
+ <name>Pub_Node_6_12_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_12_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_133</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_0_ComponentInstance">
+ <name>Sub_Node_6_12_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_0__prov1ComponentInstance">
+ <name>Sub_Node_6_12_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_0__prov2ComponentInstance">
+ <name>Sub_Node_6_12_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_12_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_1_ComponentInstance">
+ <name>Sub_Node_6_12_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_1__prov1ComponentInstance">
+ <name>Sub_Node_6_12_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_1__prov2ComponentInstance">
+ <name>Sub_Node_6_12_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_12_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_213</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_0_ComponentInstance">
+ <name>Pub_Node_6_13_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_0__prov1ComponentInstance">
+ <name>Pub_Node_6_13_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_0__prov2ComponentInstance">
+ <name>Pub_Node_6_13_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_13_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_1_ComponentInstance">
+ <name>Pub_Node_6_13_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_1__prov1ComponentInstance">
+ <name>Pub_Node_6_13_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_1__prov2ComponentInstance">
+ <name>Pub_Node_6_13_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_13_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_157</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_0_ComponentInstance">
+ <name>Sub_Node_6_13_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_0__prov1ComponentInstance">
+ <name>Sub_Node_6_13_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_0__prov2ComponentInstance">
+ <name>Sub_Node_6_13_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_13_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_166</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_1_ComponentInstance">
+ <name>Sub_Node_6_13_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_1__prov1ComponentInstance">
+ <name>Sub_Node_6_13_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_1__prov2ComponentInstance">
+ <name>Sub_Node_6_13_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_13_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_238</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_0_ComponentInstance">
+ <name>Pub_Node_6_14_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_0__prov1ComponentInstance">
+ <name>Pub_Node_6_14_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_0__prov2ComponentInstance">
+ <name>Pub_Node_6_14_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_14_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_56</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_1_ComponentInstance">
+ <name>Pub_Node_6_14_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_1__prov1ComponentInstance">
+ <name>Pub_Node_6_14_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_1__prov2ComponentInstance">
+ <name>Pub_Node_6_14_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_14_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_135</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_0_ComponentInstance">
+ <name>Sub_Node_6_14_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_0__prov1ComponentInstance">
+ <name>Sub_Node_6_14_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_0__prov2ComponentInstance">
+ <name>Sub_Node_6_14_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_14_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_45</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_1_ComponentInstance">
+ <name>Sub_Node_6_14_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_1__prov1ComponentInstance">
+ <name>Sub_Node_6_14_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_1__prov2ComponentInstance">
+ <name>Sub_Node_6_14_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_14_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_0_ComponentInstance">
+ <name>Pub_Node_6_15_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_0__prov1ComponentInstance">
+ <name>Pub_Node_6_15_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_0__prov2ComponentInstance">
+ <name>Pub_Node_6_15_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_15_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_14</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_1_ComponentInstance">
+ <name>Pub_Node_6_15_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_1__prov1ComponentInstance">
+ <name>Pub_Node_6_15_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_1__prov2ComponentInstance">
+ <name>Pub_Node_6_15_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_15_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_116</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_0_ComponentInstance">
+ <name>Sub_Node_6_15_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_0__prov1ComponentInstance">
+ <name>Sub_Node_6_15_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_0__prov2ComponentInstance">
+ <name>Sub_Node_6_15_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_15_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_215</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_1_ComponentInstance">
+ <name>Sub_Node_6_15_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_1__prov1ComponentInstance">
+ <name>Sub_Node_6_15_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_1__prov2ComponentInstance">
+ <name>Sub_Node_6_15_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_15_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_5</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_0_ComponentInstance">
+ <name>Pub_Node_6_16_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_0__prov1ComponentInstance">
+ <name>Pub_Node_6_16_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_0__prov2ComponentInstance">
+ <name>Pub_Node_6_16_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_16_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_128</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_1_ComponentInstance">
+ <name>Pub_Node_6_16_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_1__prov1ComponentInstance">
+ <name>Pub_Node_6_16_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_1__prov2ComponentInstance">
+ <name>Pub_Node_6_16_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_16_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_84</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_0_ComponentInstance">
+ <name>Sub_Node_6_16_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_0__prov1ComponentInstance">
+ <name>Sub_Node_6_16_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_0__prov2ComponentInstance">
+ <name>Sub_Node_6_16_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_16_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_164</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_1_ComponentInstance">
+ <name>Sub_Node_6_16_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_1__prov1ComponentInstance">
+ <name>Sub_Node_6_16_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_1__prov2ComponentInstance">
+ <name>Sub_Node_6_16_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_16_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_129</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_0_ComponentInstance">
+ <name>Pub_Node_6_17_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_0__prov1ComponentInstance">
+ <name>Pub_Node_6_17_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_0__prov2ComponentInstance">
+ <name>Pub_Node_6_17_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_17_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_32</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_1_ComponentInstance">
+ <name>Pub_Node_6_17_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_1__prov1ComponentInstance">
+ <name>Pub_Node_6_17_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_1__prov2ComponentInstance">
+ <name>Pub_Node_6_17_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_17_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_244</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_0_ComponentInstance">
+ <name>Sub_Node_6_17_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_0__prov1ComponentInstance">
+ <name>Sub_Node_6_17_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_0__prov2ComponentInstance">
+ <name>Sub_Node_6_17_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_17_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_95</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_1_ComponentInstance">
+ <name>Sub_Node_6_17_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_1__prov1ComponentInstance">
+ <name>Sub_Node_6_17_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_1__prov2ComponentInstance">
+ <name>Sub_Node_6_17_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_17_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_214</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_0_ComponentInstance">
+ <name>Pub_Node_6_18_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_0__prov1ComponentInstance">
+ <name>Pub_Node_6_18_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_0__prov2ComponentInstance">
+ <name>Pub_Node_6_18_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_18_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_24</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_1_ComponentInstance">
+ <name>Pub_Node_6_18_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_1__prov1ComponentInstance">
+ <name>Pub_Node_6_18_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_1__prov2ComponentInstance">
+ <name>Pub_Node_6_18_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_18_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_38</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_0_ComponentInstance">
+ <name>Sub_Node_6_18_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_0__prov1ComponentInstance">
+ <name>Sub_Node_6_18_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_0__prov2ComponentInstance">
+ <name>Sub_Node_6_18_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_18_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_127</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_1_ComponentInstance">
+ <name>Sub_Node_6_18_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_1__prov1ComponentInstance">
+ <name>Sub_Node_6_18_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_1__prov2ComponentInstance">
+ <name>Sub_Node_6_18_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_18_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_178</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_0_ComponentInstance">
+ <name>Pub_Node_6_19_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_0__prov1ComponentInstance">
+ <name>Pub_Node_6_19_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_0__prov2ComponentInstance">
+ <name>Pub_Node_6_19_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_19_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_147</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_1_ComponentInstance">
+ <name>Pub_Node_6_19_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_1__prov1ComponentInstance">
+ <name>Pub_Node_6_19_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_1__prov2ComponentInstance">
+ <name>Pub_Node_6_19_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_6_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_6_19_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_100</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_0_ComponentInstance">
+ <name>Sub_Node_6_19_0_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_0__prov1ComponentInstance">
+ <name>Sub_Node_6_19_0__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_0__prov2ComponentInstance">
+ <name>Sub_Node_6_19_0__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_19_0_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_128</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_1_ComponentInstance">
+ <name>Sub_Node_6_19_1_Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_1__prov1ComponentInstance">
+ <name>Sub_Node_6_19_1__prov1Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_1__prov2ComponentInstance">
+ <name>Sub_Node_6_19_1__prov2Component</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_6_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_6_19_1_DDSConnectorComponent</name>
+ <node>Node_6</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_150</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_0_ComponentInstance">
+ <name>Pub_Node_7_0_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_0__prov1ComponentInstance">
+ <name>Pub_Node_7_0_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_0__prov2ComponentInstance">
+ <name>Pub_Node_7_0_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_0_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_16</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_1_ComponentInstance">
+ <name>Pub_Node_7_0_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_1__prov1ComponentInstance">
+ <name>Pub_Node_7_0_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_1__prov2ComponentInstance">
+ <name>Pub_Node_7_0_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_0_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_0_ComponentInstance">
+ <name>Sub_Node_7_0_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_0__prov1ComponentInstance">
+ <name>Sub_Node_7_0_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_0__prov2ComponentInstance">
+ <name>Sub_Node_7_0_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_0_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_181</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_1_ComponentInstance">
+ <name>Sub_Node_7_0_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_1__prov1ComponentInstance">
+ <name>Sub_Node_7_0_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_1__prov2ComponentInstance">
+ <name>Sub_Node_7_0_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_0_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_13</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_0_ComponentInstance">
+ <name>Pub_Node_7_1_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_0__prov1ComponentInstance">
+ <name>Pub_Node_7_1_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_0__prov2ComponentInstance">
+ <name>Pub_Node_7_1_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_1_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_157</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_1_ComponentInstance">
+ <name>Pub_Node_7_1_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_1__prov1ComponentInstance">
+ <name>Pub_Node_7_1_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_1__prov2ComponentInstance">
+ <name>Pub_Node_7_1_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_1_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_37</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_0_ComponentInstance">
+ <name>Sub_Node_7_1_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_0__prov1ComponentInstance">
+ <name>Sub_Node_7_1_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_0__prov2ComponentInstance">
+ <name>Sub_Node_7_1_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_1_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_1_ComponentInstance">
+ <name>Sub_Node_7_1_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_1__prov1ComponentInstance">
+ <name>Sub_Node_7_1_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_1__prov2ComponentInstance">
+ <name>Sub_Node_7_1_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_1_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_57</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_0_ComponentInstance">
+ <name>Pub_Node_7_2_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_0__prov1ComponentInstance">
+ <name>Pub_Node_7_2_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_0__prov2ComponentInstance">
+ <name>Pub_Node_7_2_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_2_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_101</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_1_ComponentInstance">
+ <name>Pub_Node_7_2_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_1__prov1ComponentInstance">
+ <name>Pub_Node_7_2_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_1__prov2ComponentInstance">
+ <name>Pub_Node_7_2_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_2_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_29</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_0_ComponentInstance">
+ <name>Sub_Node_7_2_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_0__prov1ComponentInstance">
+ <name>Sub_Node_7_2_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_0__prov2ComponentInstance">
+ <name>Sub_Node_7_2_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_2_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_175</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_1_ComponentInstance">
+ <name>Sub_Node_7_2_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_1__prov1ComponentInstance">
+ <name>Sub_Node_7_2_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_1__prov2ComponentInstance">
+ <name>Sub_Node_7_2_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_2_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_24</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_0_ComponentInstance">
+ <name>Pub_Node_7_3_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_0__prov1ComponentInstance">
+ <name>Pub_Node_7_3_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_0__prov2ComponentInstance">
+ <name>Pub_Node_7_3_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_3_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_221</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_1_ComponentInstance">
+ <name>Pub_Node_7_3_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_1__prov1ComponentInstance">
+ <name>Pub_Node_7_3_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_1__prov2ComponentInstance">
+ <name>Pub_Node_7_3_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_3_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_0_ComponentInstance">
+ <name>Sub_Node_7_3_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_0__prov1ComponentInstance">
+ <name>Sub_Node_7_3_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_0__prov2ComponentInstance">
+ <name>Sub_Node_7_3_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_3_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_84</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_1_ComponentInstance">
+ <name>Sub_Node_7_3_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_1__prov1ComponentInstance">
+ <name>Sub_Node_7_3_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_1__prov2ComponentInstance">
+ <name>Sub_Node_7_3_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_3_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_87</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_0_ComponentInstance">
+ <name>Pub_Node_7_4_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_0__prov1ComponentInstance">
+ <name>Pub_Node_7_4_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_0__prov2ComponentInstance">
+ <name>Pub_Node_7_4_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_4_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_190</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_1_ComponentInstance">
+ <name>Pub_Node_7_4_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_1__prov1ComponentInstance">
+ <name>Pub_Node_7_4_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_1__prov2ComponentInstance">
+ <name>Pub_Node_7_4_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_4_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_87</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_0_ComponentInstance">
+ <name>Sub_Node_7_4_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_0__prov1ComponentInstance">
+ <name>Sub_Node_7_4_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_0__prov2ComponentInstance">
+ <name>Sub_Node_7_4_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_4_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_35</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_1_ComponentInstance">
+ <name>Sub_Node_7_4_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_1__prov1ComponentInstance">
+ <name>Sub_Node_7_4_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_1__prov2ComponentInstance">
+ <name>Sub_Node_7_4_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_4_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_93</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_0_ComponentInstance">
+ <name>Pub_Node_7_5_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_0__prov1ComponentInstance">
+ <name>Pub_Node_7_5_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_0__prov2ComponentInstance">
+ <name>Pub_Node_7_5_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_5_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_176</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_1_ComponentInstance">
+ <name>Pub_Node_7_5_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_1__prov1ComponentInstance">
+ <name>Pub_Node_7_5_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_1__prov2ComponentInstance">
+ <name>Pub_Node_7_5_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_5_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_66</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_0_ComponentInstance">
+ <name>Sub_Node_7_5_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_0__prov1ComponentInstance">
+ <name>Sub_Node_7_5_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_0__prov2ComponentInstance">
+ <name>Sub_Node_7_5_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_5_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_42</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_1_ComponentInstance">
+ <name>Sub_Node_7_5_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_1__prov1ComponentInstance">
+ <name>Sub_Node_7_5_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_1__prov2ComponentInstance">
+ <name>Sub_Node_7_5_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_5_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_0_ComponentInstance">
+ <name>Pub_Node_7_6_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_0__prov1ComponentInstance">
+ <name>Pub_Node_7_6_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_0__prov2ComponentInstance">
+ <name>Pub_Node_7_6_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_6_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_17</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_1_ComponentInstance">
+ <name>Pub_Node_7_6_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_1__prov1ComponentInstance">
+ <name>Pub_Node_7_6_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_1__prov2ComponentInstance">
+ <name>Pub_Node_7_6_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_6_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_0_ComponentInstance">
+ <name>Sub_Node_7_6_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_0__prov1ComponentInstance">
+ <name>Sub_Node_7_6_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_0__prov2ComponentInstance">
+ <name>Sub_Node_7_6_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_6_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_118</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_1_ComponentInstance">
+ <name>Sub_Node_7_6_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_1__prov1ComponentInstance">
+ <name>Sub_Node_7_6_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_1__prov2ComponentInstance">
+ <name>Sub_Node_7_6_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_6_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_119</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_0_ComponentInstance">
+ <name>Pub_Node_7_7_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_0__prov1ComponentInstance">
+ <name>Pub_Node_7_7_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_0__prov2ComponentInstance">
+ <name>Pub_Node_7_7_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_7_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_192</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_1_ComponentInstance">
+ <name>Pub_Node_7_7_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_1__prov1ComponentInstance">
+ <name>Pub_Node_7_7_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_1__prov2ComponentInstance">
+ <name>Pub_Node_7_7_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_7_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_202</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_0_ComponentInstance">
+ <name>Sub_Node_7_7_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_0__prov1ComponentInstance">
+ <name>Sub_Node_7_7_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_0__prov2ComponentInstance">
+ <name>Sub_Node_7_7_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_7_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_145</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_1_ComponentInstance">
+ <name>Sub_Node_7_7_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_1__prov1ComponentInstance">
+ <name>Sub_Node_7_7_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_1__prov2ComponentInstance">
+ <name>Sub_Node_7_7_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_7_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_134</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_0_ComponentInstance">
+ <name>Pub_Node_7_8_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_0__prov1ComponentInstance">
+ <name>Pub_Node_7_8_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_0__prov2ComponentInstance">
+ <name>Pub_Node_7_8_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_8_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_13</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_1_ComponentInstance">
+ <name>Pub_Node_7_8_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_1__prov1ComponentInstance">
+ <name>Pub_Node_7_8_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_1__prov2ComponentInstance">
+ <name>Pub_Node_7_8_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_8_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_51</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_0_ComponentInstance">
+ <name>Sub_Node_7_8_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_0__prov1ComponentInstance">
+ <name>Sub_Node_7_8_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_0__prov2ComponentInstance">
+ <name>Sub_Node_7_8_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_8_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_216</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_1_ComponentInstance">
+ <name>Sub_Node_7_8_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_1__prov1ComponentInstance">
+ <name>Sub_Node_7_8_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_1__prov2ComponentInstance">
+ <name>Sub_Node_7_8_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_8_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_36</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_0_ComponentInstance">
+ <name>Pub_Node_7_9_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_0__prov1ComponentInstance">
+ <name>Pub_Node_7_9_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_0__prov2ComponentInstance">
+ <name>Pub_Node_7_9_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_9_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_249</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_1_ComponentInstance">
+ <name>Pub_Node_7_9_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_1__prov1ComponentInstance">
+ <name>Pub_Node_7_9_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_1__prov2ComponentInstance">
+ <name>Pub_Node_7_9_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_9_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_46</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_0_ComponentInstance">
+ <name>Sub_Node_7_9_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_0__prov1ComponentInstance">
+ <name>Sub_Node_7_9_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_0__prov2ComponentInstance">
+ <name>Sub_Node_7_9_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_9_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_192</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_1_ComponentInstance">
+ <name>Sub_Node_7_9_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_1__prov1ComponentInstance">
+ <name>Sub_Node_7_9_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_1__prov2ComponentInstance">
+ <name>Sub_Node_7_9_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_9_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_1</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_0_ComponentInstance">
+ <name>Pub_Node_7_10_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_0__prov1ComponentInstance">
+ <name>Pub_Node_7_10_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_0__prov2ComponentInstance">
+ <name>Pub_Node_7_10_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_10_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_164</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_1_ComponentInstance">
+ <name>Pub_Node_7_10_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_1__prov1ComponentInstance">
+ <name>Pub_Node_7_10_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_1__prov2ComponentInstance">
+ <name>Pub_Node_7_10_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_10_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_52</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_0_ComponentInstance">
+ <name>Sub_Node_7_10_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_0__prov1ComponentInstance">
+ <name>Sub_Node_7_10_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_0__prov2ComponentInstance">
+ <name>Sub_Node_7_10_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_10_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_93</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_1_ComponentInstance">
+ <name>Sub_Node_7_10_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_1__prov1ComponentInstance">
+ <name>Sub_Node_7_10_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_1__prov2ComponentInstance">
+ <name>Sub_Node_7_10_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_10_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_156</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_0_ComponentInstance">
+ <name>Pub_Node_7_11_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_0__prov1ComponentInstance">
+ <name>Pub_Node_7_11_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_0__prov2ComponentInstance">
+ <name>Pub_Node_7_11_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_11_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_32</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_1_ComponentInstance">
+ <name>Pub_Node_7_11_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_1__prov1ComponentInstance">
+ <name>Pub_Node_7_11_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_1__prov2ComponentInstance">
+ <name>Pub_Node_7_11_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_11_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_98</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_0_ComponentInstance">
+ <name>Sub_Node_7_11_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_0__prov1ComponentInstance">
+ <name>Sub_Node_7_11_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_0__prov2ComponentInstance">
+ <name>Sub_Node_7_11_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_11_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_73</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_1_ComponentInstance">
+ <name>Sub_Node_7_11_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_1__prov1ComponentInstance">
+ <name>Sub_Node_7_11_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_1__prov2ComponentInstance">
+ <name>Sub_Node_7_11_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_11_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_126</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_0_ComponentInstance">
+ <name>Pub_Node_7_12_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_0__prov1ComponentInstance">
+ <name>Pub_Node_7_12_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_0__prov2ComponentInstance">
+ <name>Pub_Node_7_12_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_12_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_186</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_1_ComponentInstance">
+ <name>Pub_Node_7_12_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_1__prov1ComponentInstance">
+ <name>Pub_Node_7_12_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_1__prov2ComponentInstance">
+ <name>Pub_Node_7_12_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_12_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_0_ComponentInstance">
+ <name>Sub_Node_7_12_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_0__prov1ComponentInstance">
+ <name>Sub_Node_7_12_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_0__prov2ComponentInstance">
+ <name>Sub_Node_7_12_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_12_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_189</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_1_ComponentInstance">
+ <name>Sub_Node_7_12_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_1__prov1ComponentInstance">
+ <name>Sub_Node_7_12_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_1__prov2ComponentInstance">
+ <name>Sub_Node_7_12_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_12_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_75</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_0_ComponentInstance">
+ <name>Pub_Node_7_13_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_0__prov1ComponentInstance">
+ <name>Pub_Node_7_13_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_0__prov2ComponentInstance">
+ <name>Pub_Node_7_13_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_13_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_1_ComponentInstance">
+ <name>Pub_Node_7_13_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_1__prov1ComponentInstance">
+ <name>Pub_Node_7_13_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_1__prov2ComponentInstance">
+ <name>Pub_Node_7_13_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_13_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_235</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_0_ComponentInstance">
+ <name>Sub_Node_7_13_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_0__prov1ComponentInstance">
+ <name>Sub_Node_7_13_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_0__prov2ComponentInstance">
+ <name>Sub_Node_7_13_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_13_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_185</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_1_ComponentInstance">
+ <name>Sub_Node_7_13_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_1__prov1ComponentInstance">
+ <name>Sub_Node_7_13_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_1__prov2ComponentInstance">
+ <name>Sub_Node_7_13_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_13_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_0_ComponentInstance">
+ <name>Pub_Node_7_14_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_0__prov1ComponentInstance">
+ <name>Pub_Node_7_14_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_0__prov2ComponentInstance">
+ <name>Pub_Node_7_14_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_14_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_71</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_1_ComponentInstance">
+ <name>Pub_Node_7_14_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_1__prov1ComponentInstance">
+ <name>Pub_Node_7_14_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_1__prov2ComponentInstance">
+ <name>Pub_Node_7_14_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_14_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_27</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_0_ComponentInstance">
+ <name>Sub_Node_7_14_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_0__prov1ComponentInstance">
+ <name>Sub_Node_7_14_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_0__prov2ComponentInstance">
+ <name>Sub_Node_7_14_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_14_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_83</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_1_ComponentInstance">
+ <name>Sub_Node_7_14_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_1__prov1ComponentInstance">
+ <name>Sub_Node_7_14_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_1__prov2ComponentInstance">
+ <name>Sub_Node_7_14_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_14_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_115</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_0_ComponentInstance">
+ <name>Pub_Node_7_15_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_0__prov1ComponentInstance">
+ <name>Pub_Node_7_15_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_0__prov2ComponentInstance">
+ <name>Pub_Node_7_15_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_15_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_1_ComponentInstance">
+ <name>Pub_Node_7_15_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_1__prov1ComponentInstance">
+ <name>Pub_Node_7_15_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_1__prov2ComponentInstance">
+ <name>Pub_Node_7_15_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_15_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_79</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_0_ComponentInstance">
+ <name>Sub_Node_7_15_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_0__prov1ComponentInstance">
+ <name>Sub_Node_7_15_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_0__prov2ComponentInstance">
+ <name>Sub_Node_7_15_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_15_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_199</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_1_ComponentInstance">
+ <name>Sub_Node_7_15_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_1__prov1ComponentInstance">
+ <name>Sub_Node_7_15_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_1__prov2ComponentInstance">
+ <name>Sub_Node_7_15_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_15_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_147</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_0_ComponentInstance">
+ <name>Pub_Node_7_16_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_0__prov1ComponentInstance">
+ <name>Pub_Node_7_16_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_0__prov2ComponentInstance">
+ <name>Pub_Node_7_16_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_16_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_179</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_1_ComponentInstance">
+ <name>Pub_Node_7_16_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_1__prov1ComponentInstance">
+ <name>Pub_Node_7_16_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_1__prov2ComponentInstance">
+ <name>Pub_Node_7_16_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_16_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_119</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_0_ComponentInstance">
+ <name>Sub_Node_7_16_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_0__prov1ComponentInstance">
+ <name>Sub_Node_7_16_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_0__prov2ComponentInstance">
+ <name>Sub_Node_7_16_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_16_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_9</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_1_ComponentInstance">
+ <name>Sub_Node_7_16_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_1__prov1ComponentInstance">
+ <name>Sub_Node_7_16_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_1__prov2ComponentInstance">
+ <name>Sub_Node_7_16_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_16_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_30</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_0_ComponentInstance">
+ <name>Pub_Node_7_17_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_0__prov1ComponentInstance">
+ <name>Pub_Node_7_17_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_0__prov2ComponentInstance">
+ <name>Pub_Node_7_17_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_17_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_88</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_1_ComponentInstance">
+ <name>Pub_Node_7_17_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_1__prov1ComponentInstance">
+ <name>Pub_Node_7_17_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_1__prov2ComponentInstance">
+ <name>Pub_Node_7_17_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_17_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_26</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_0_ComponentInstance">
+ <name>Sub_Node_7_17_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_0__prov1ComponentInstance">
+ <name>Sub_Node_7_17_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_0__prov2ComponentInstance">
+ <name>Sub_Node_7_17_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_17_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_207</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_1_ComponentInstance">
+ <name>Sub_Node_7_17_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_1__prov1ComponentInstance">
+ <name>Sub_Node_7_17_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_1__prov2ComponentInstance">
+ <name>Sub_Node_7_17_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_17_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_162</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_0_ComponentInstance">
+ <name>Pub_Node_7_18_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_0__prov1ComponentInstance">
+ <name>Pub_Node_7_18_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_0__prov2ComponentInstance">
+ <name>Pub_Node_7_18_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_18_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_25</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_1_ComponentInstance">
+ <name>Pub_Node_7_18_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_1__prov1ComponentInstance">
+ <name>Pub_Node_7_18_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_1__prov2ComponentInstance">
+ <name>Pub_Node_7_18_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_18_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_0_ComponentInstance">
+ <name>Sub_Node_7_18_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_0__prov1ComponentInstance">
+ <name>Sub_Node_7_18_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_0__prov2ComponentInstance">
+ <name>Sub_Node_7_18_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_18_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_205</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_1_ComponentInstance">
+ <name>Sub_Node_7_18_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_1__prov1ComponentInstance">
+ <name>Sub_Node_7_18_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_1__prov2ComponentInstance">
+ <name>Sub_Node_7_18_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_18_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_104</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_0_ComponentInstance">
+ <name>Pub_Node_7_19_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_0__prov1ComponentInstance">
+ <name>Pub_Node_7_19_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_0__prov2ComponentInstance">
+ <name>Pub_Node_7_19_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_19_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_26</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_1_ComponentInstance">
+ <name>Pub_Node_7_19_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_1__prov1ComponentInstance">
+ <name>Pub_Node_7_19_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_1__prov2ComponentInstance">
+ <name>Pub_Node_7_19_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_7_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_7_19_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_194</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_0_ComponentInstance">
+ <name>Sub_Node_7_19_0_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_0__prov1ComponentInstance">
+ <name>Sub_Node_7_19_0__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_0__prov2ComponentInstance">
+ <name>Sub_Node_7_19_0__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_19_0_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_1_ComponentInstance">
+ <name>Sub_Node_7_19_1_Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_1__prov1ComponentInstance">
+ <name>Sub_Node_7_19_1__prov1Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_1__prov2ComponentInstance">
+ <name>Sub_Node_7_19_1__prov2Component</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_7_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_7_19_1_DDSConnectorComponent</name>
+ <node>Node_7</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_0_ComponentInstance">
+ <name>Pub_Node_8_0_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_0__prov1ComponentInstance">
+ <name>Pub_Node_8_0_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_0__prov2ComponentInstance">
+ <name>Pub_Node_8_0_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_0_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_92</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_1_ComponentInstance">
+ <name>Pub_Node_8_0_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_1__prov1ComponentInstance">
+ <name>Pub_Node_8_0_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_1__prov2ComponentInstance">
+ <name>Pub_Node_8_0_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_0_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_77</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_0_ComponentInstance">
+ <name>Sub_Node_8_0_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_0__prov1ComponentInstance">
+ <name>Sub_Node_8_0_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_0__prov2ComponentInstance">
+ <name>Sub_Node_8_0_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_0_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_151</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_1_ComponentInstance">
+ <name>Sub_Node_8_0_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_1__prov1ComponentInstance">
+ <name>Sub_Node_8_0_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_1__prov2ComponentInstance">
+ <name>Sub_Node_8_0_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_0_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_107</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_0_ComponentInstance">
+ <name>Pub_Node_8_1_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_0__prov1ComponentInstance">
+ <name>Pub_Node_8_1_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_0__prov2ComponentInstance">
+ <name>Pub_Node_8_1_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_1_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_91</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_1_ComponentInstance">
+ <name>Pub_Node_8_1_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_1__prov1ComponentInstance">
+ <name>Pub_Node_8_1_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_1__prov2ComponentInstance">
+ <name>Pub_Node_8_1_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_1_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_0_ComponentInstance">
+ <name>Sub_Node_8_1_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_0__prov1ComponentInstance">
+ <name>Sub_Node_8_1_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_0__prov2ComponentInstance">
+ <name>Sub_Node_8_1_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_1_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_1_ComponentInstance">
+ <name>Sub_Node_8_1_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_1__prov1ComponentInstance">
+ <name>Sub_Node_8_1_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_1__prov2ComponentInstance">
+ <name>Sub_Node_8_1_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_1_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_208</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_0_ComponentInstance">
+ <name>Pub_Node_8_2_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_0__prov1ComponentInstance">
+ <name>Pub_Node_8_2_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_0__prov2ComponentInstance">
+ <name>Pub_Node_8_2_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_2_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_128</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_1_ComponentInstance">
+ <name>Pub_Node_8_2_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_1__prov1ComponentInstance">
+ <name>Pub_Node_8_2_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_1__prov2ComponentInstance">
+ <name>Pub_Node_8_2_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_2_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_6</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_0_ComponentInstance">
+ <name>Sub_Node_8_2_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_0__prov1ComponentInstance">
+ <name>Sub_Node_8_2_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_0__prov2ComponentInstance">
+ <name>Sub_Node_8_2_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_2_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_81</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_1_ComponentInstance">
+ <name>Sub_Node_8_2_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_1__prov1ComponentInstance">
+ <name>Sub_Node_8_2_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_1__prov2ComponentInstance">
+ <name>Sub_Node_8_2_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_2_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_112</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_0_ComponentInstance">
+ <name>Pub_Node_8_3_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_0__prov1ComponentInstance">
+ <name>Pub_Node_8_3_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_0__prov2ComponentInstance">
+ <name>Pub_Node_8_3_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_3_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_200</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_1_ComponentInstance">
+ <name>Pub_Node_8_3_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_1__prov1ComponentInstance">
+ <name>Pub_Node_8_3_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_1__prov2ComponentInstance">
+ <name>Pub_Node_8_3_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_3_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_0_ComponentInstance">
+ <name>Sub_Node_8_3_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_0__prov1ComponentInstance">
+ <name>Sub_Node_8_3_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_0__prov2ComponentInstance">
+ <name>Sub_Node_8_3_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_3_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_1_ComponentInstance">
+ <name>Sub_Node_8_3_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_1__prov1ComponentInstance">
+ <name>Sub_Node_8_3_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_1__prov2ComponentInstance">
+ <name>Sub_Node_8_3_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_3_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_0_ComponentInstance">
+ <name>Pub_Node_8_4_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_0__prov1ComponentInstance">
+ <name>Pub_Node_8_4_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_0__prov2ComponentInstance">
+ <name>Pub_Node_8_4_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_4_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_168</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_1_ComponentInstance">
+ <name>Pub_Node_8_4_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_1__prov1ComponentInstance">
+ <name>Pub_Node_8_4_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_1__prov2ComponentInstance">
+ <name>Pub_Node_8_4_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_4_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_204</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_0_ComponentInstance">
+ <name>Sub_Node_8_4_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_0__prov1ComponentInstance">
+ <name>Sub_Node_8_4_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_0__prov2ComponentInstance">
+ <name>Sub_Node_8_4_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_4_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_0</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_1_ComponentInstance">
+ <name>Sub_Node_8_4_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_1__prov1ComponentInstance">
+ <name>Sub_Node_8_4_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_1__prov2ComponentInstance">
+ <name>Sub_Node_8_4_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_4_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_243</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_0_ComponentInstance">
+ <name>Pub_Node_8_5_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_0__prov1ComponentInstance">
+ <name>Pub_Node_8_5_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_0__prov2ComponentInstance">
+ <name>Pub_Node_8_5_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_5_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_59</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_1_ComponentInstance">
+ <name>Pub_Node_8_5_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_1__prov1ComponentInstance">
+ <name>Pub_Node_8_5_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_1__prov2ComponentInstance">
+ <name>Pub_Node_8_5_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_5_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_147</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_0_ComponentInstance">
+ <name>Sub_Node_8_5_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_0__prov1ComponentInstance">
+ <name>Sub_Node_8_5_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_0__prov2ComponentInstance">
+ <name>Sub_Node_8_5_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_5_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_235</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_1_ComponentInstance">
+ <name>Sub_Node_8_5_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_1__prov1ComponentInstance">
+ <name>Sub_Node_8_5_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_1__prov2ComponentInstance">
+ <name>Sub_Node_8_5_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_5_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_187</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_0_ComponentInstance">
+ <name>Pub_Node_8_6_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_0__prov1ComponentInstance">
+ <name>Pub_Node_8_6_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_0__prov2ComponentInstance">
+ <name>Pub_Node_8_6_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_6_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_144</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_1_ComponentInstance">
+ <name>Pub_Node_8_6_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_1__prov1ComponentInstance">
+ <name>Pub_Node_8_6_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_1__prov2ComponentInstance">
+ <name>Pub_Node_8_6_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_6_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_72</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_0_ComponentInstance">
+ <name>Sub_Node_8_6_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_0__prov1ComponentInstance">
+ <name>Sub_Node_8_6_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_0__prov2ComponentInstance">
+ <name>Sub_Node_8_6_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_6_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_225</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_1_ComponentInstance">
+ <name>Sub_Node_8_6_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_1__prov1ComponentInstance">
+ <name>Sub_Node_8_6_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_1__prov2ComponentInstance">
+ <name>Sub_Node_8_6_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_6_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_107</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_0_ComponentInstance">
+ <name>Pub_Node_8_7_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_0__prov1ComponentInstance">
+ <name>Pub_Node_8_7_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_0__prov2ComponentInstance">
+ <name>Pub_Node_8_7_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_7_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_27</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_1_ComponentInstance">
+ <name>Pub_Node_8_7_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_1__prov1ComponentInstance">
+ <name>Pub_Node_8_7_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_1__prov2ComponentInstance">
+ <name>Pub_Node_8_7_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_7_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_0_ComponentInstance">
+ <name>Sub_Node_8_7_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_0__prov1ComponentInstance">
+ <name>Sub_Node_8_7_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_0__prov2ComponentInstance">
+ <name>Sub_Node_8_7_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_7_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_131</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_1_ComponentInstance">
+ <name>Sub_Node_8_7_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_1__prov1ComponentInstance">
+ <name>Sub_Node_8_7_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_1__prov2ComponentInstance">
+ <name>Sub_Node_8_7_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_7_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_138</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_0_ComponentInstance">
+ <name>Pub_Node_8_8_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_0__prov1ComponentInstance">
+ <name>Pub_Node_8_8_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_0__prov2ComponentInstance">
+ <name>Pub_Node_8_8_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_8_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_151</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_1_ComponentInstance">
+ <name>Pub_Node_8_8_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_1__prov1ComponentInstance">
+ <name>Pub_Node_8_8_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_1__prov2ComponentInstance">
+ <name>Pub_Node_8_8_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_8_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_29</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_0_ComponentInstance">
+ <name>Sub_Node_8_8_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_0__prov1ComponentInstance">
+ <name>Sub_Node_8_8_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_0__prov2ComponentInstance">
+ <name>Sub_Node_8_8_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_8_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_42</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_1_ComponentInstance">
+ <name>Sub_Node_8_8_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_1__prov1ComponentInstance">
+ <name>Sub_Node_8_8_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_1__prov2ComponentInstance">
+ <name>Sub_Node_8_8_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_8_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_226</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_0_ComponentInstance">
+ <name>Pub_Node_8_9_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_0__prov1ComponentInstance">
+ <name>Pub_Node_8_9_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_0__prov2ComponentInstance">
+ <name>Pub_Node_8_9_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_9_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_160</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_1_ComponentInstance">
+ <name>Pub_Node_8_9_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_1__prov1ComponentInstance">
+ <name>Pub_Node_8_9_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_1__prov2ComponentInstance">
+ <name>Pub_Node_8_9_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_9_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_125</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_0_ComponentInstance">
+ <name>Sub_Node_8_9_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_0__prov1ComponentInstance">
+ <name>Sub_Node_8_9_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_0__prov2ComponentInstance">
+ <name>Sub_Node_8_9_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_9_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_59</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_1_ComponentInstance">
+ <name>Sub_Node_8_9_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_1__prov1ComponentInstance">
+ <name>Sub_Node_8_9_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_1__prov2ComponentInstance">
+ <name>Sub_Node_8_9_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_9_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_4</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_0_ComponentInstance">
+ <name>Pub_Node_8_10_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_0__prov1ComponentInstance">
+ <name>Pub_Node_8_10_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_0__prov2ComponentInstance">
+ <name>Pub_Node_8_10_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_10_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_1_ComponentInstance">
+ <name>Pub_Node_8_10_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_1__prov1ComponentInstance">
+ <name>Pub_Node_8_10_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_1__prov2ComponentInstance">
+ <name>Pub_Node_8_10_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_10_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_0_ComponentInstance">
+ <name>Sub_Node_8_10_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_0__prov1ComponentInstance">
+ <name>Sub_Node_8_10_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_0__prov2ComponentInstance">
+ <name>Sub_Node_8_10_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_10_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_1_ComponentInstance">
+ <name>Sub_Node_8_10_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_1__prov1ComponentInstance">
+ <name>Sub_Node_8_10_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_1__prov2ComponentInstance">
+ <name>Sub_Node_8_10_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_10_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_0_ComponentInstance">
+ <name>Pub_Node_8_11_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_0__prov1ComponentInstance">
+ <name>Pub_Node_8_11_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_0__prov2ComponentInstance">
+ <name>Pub_Node_8_11_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_11_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_61</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_1_ComponentInstance">
+ <name>Pub_Node_8_11_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_1__prov1ComponentInstance">
+ <name>Pub_Node_8_11_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_1__prov2ComponentInstance">
+ <name>Pub_Node_8_11_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_11_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_232</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_0_ComponentInstance">
+ <name>Sub_Node_8_11_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_0__prov1ComponentInstance">
+ <name>Sub_Node_8_11_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_0__prov2ComponentInstance">
+ <name>Sub_Node_8_11_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_11_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_13</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_1_ComponentInstance">
+ <name>Sub_Node_8_11_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_1__prov1ComponentInstance">
+ <name>Sub_Node_8_11_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_1__prov2ComponentInstance">
+ <name>Sub_Node_8_11_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_11_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_36</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_0_ComponentInstance">
+ <name>Pub_Node_8_12_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_0__prov1ComponentInstance">
+ <name>Pub_Node_8_12_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_0__prov2ComponentInstance">
+ <name>Pub_Node_8_12_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_12_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_1_ComponentInstance">
+ <name>Pub_Node_8_12_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_1__prov1ComponentInstance">
+ <name>Pub_Node_8_12_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_1__prov2ComponentInstance">
+ <name>Pub_Node_8_12_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_12_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_237</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_0_ComponentInstance">
+ <name>Sub_Node_8_12_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_0__prov1ComponentInstance">
+ <name>Sub_Node_8_12_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_0__prov2ComponentInstance">
+ <name>Sub_Node_8_12_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_12_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_40</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_1_ComponentInstance">
+ <name>Sub_Node_8_12_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_1__prov1ComponentInstance">
+ <name>Sub_Node_8_12_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_1__prov2ComponentInstance">
+ <name>Sub_Node_8_12_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_12_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_50</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_0_ComponentInstance">
+ <name>Pub_Node_8_13_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_0__prov1ComponentInstance">
+ <name>Pub_Node_8_13_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_0__prov2ComponentInstance">
+ <name>Pub_Node_8_13_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_13_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_72</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_1_ComponentInstance">
+ <name>Pub_Node_8_13_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_1__prov1ComponentInstance">
+ <name>Pub_Node_8_13_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_1__prov2ComponentInstance">
+ <name>Pub_Node_8_13_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_13_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_10</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_0_ComponentInstance">
+ <name>Sub_Node_8_13_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_0__prov1ComponentInstance">
+ <name>Sub_Node_8_13_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_0__prov2ComponentInstance">
+ <name>Sub_Node_8_13_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_13_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_1_ComponentInstance">
+ <name>Sub_Node_8_13_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_1__prov1ComponentInstance">
+ <name>Sub_Node_8_13_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_1__prov2ComponentInstance">
+ <name>Sub_Node_8_13_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_13_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_17</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_0_ComponentInstance">
+ <name>Pub_Node_8_14_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_0__prov1ComponentInstance">
+ <name>Pub_Node_8_14_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_0__prov2ComponentInstance">
+ <name>Pub_Node_8_14_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_14_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_75</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_1_ComponentInstance">
+ <name>Pub_Node_8_14_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_1__prov1ComponentInstance">
+ <name>Pub_Node_8_14_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_1__prov2ComponentInstance">
+ <name>Pub_Node_8_14_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_14_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_173</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_0_ComponentInstance">
+ <name>Sub_Node_8_14_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_0__prov1ComponentInstance">
+ <name>Sub_Node_8_14_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_0__prov2ComponentInstance">
+ <name>Sub_Node_8_14_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_14_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_37</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_1_ComponentInstance">
+ <name>Sub_Node_8_14_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_1__prov1ComponentInstance">
+ <name>Sub_Node_8_14_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_1__prov2ComponentInstance">
+ <name>Sub_Node_8_14_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_14_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_33</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_0_ComponentInstance">
+ <name>Pub_Node_8_15_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_0__prov1ComponentInstance">
+ <name>Pub_Node_8_15_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_0__prov2ComponentInstance">
+ <name>Pub_Node_8_15_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_15_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_33</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_1_ComponentInstance">
+ <name>Pub_Node_8_15_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_1__prov1ComponentInstance">
+ <name>Pub_Node_8_15_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_1__prov2ComponentInstance">
+ <name>Pub_Node_8_15_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_15_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_38</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_0_ComponentInstance">
+ <name>Sub_Node_8_15_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_0__prov1ComponentInstance">
+ <name>Sub_Node_8_15_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_0__prov2ComponentInstance">
+ <name>Sub_Node_8_15_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_15_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_0</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_1_ComponentInstance">
+ <name>Sub_Node_8_15_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_1__prov1ComponentInstance">
+ <name>Sub_Node_8_15_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_1__prov2ComponentInstance">
+ <name>Sub_Node_8_15_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_15_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_212</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_0_ComponentInstance">
+ <name>Pub_Node_8_16_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_0__prov1ComponentInstance">
+ <name>Pub_Node_8_16_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_0__prov2ComponentInstance">
+ <name>Pub_Node_8_16_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_16_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_68</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_1_ComponentInstance">
+ <name>Pub_Node_8_16_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_1__prov1ComponentInstance">
+ <name>Pub_Node_8_16_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_1__prov2ComponentInstance">
+ <name>Pub_Node_8_16_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_16_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_138</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_0_ComponentInstance">
+ <name>Sub_Node_8_16_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_0__prov1ComponentInstance">
+ <name>Sub_Node_8_16_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_0__prov2ComponentInstance">
+ <name>Sub_Node_8_16_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_16_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_55</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_1_ComponentInstance">
+ <name>Sub_Node_8_16_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_1__prov1ComponentInstance">
+ <name>Sub_Node_8_16_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_1__prov2ComponentInstance">
+ <name>Sub_Node_8_16_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_16_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_97</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_0_ComponentInstance">
+ <name>Pub_Node_8_17_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_0__prov1ComponentInstance">
+ <name>Pub_Node_8_17_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_0__prov2ComponentInstance">
+ <name>Pub_Node_8_17_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_17_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_1_ComponentInstance">
+ <name>Pub_Node_8_17_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_1__prov1ComponentInstance">
+ <name>Pub_Node_8_17_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_1__prov2ComponentInstance">
+ <name>Pub_Node_8_17_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_17_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_162</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_0_ComponentInstance">
+ <name>Sub_Node_8_17_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_0__prov1ComponentInstance">
+ <name>Sub_Node_8_17_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_0__prov2ComponentInstance">
+ <name>Sub_Node_8_17_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_17_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_3</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_1_ComponentInstance">
+ <name>Sub_Node_8_17_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_1__prov1ComponentInstance">
+ <name>Sub_Node_8_17_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_1__prov2ComponentInstance">
+ <name>Sub_Node_8_17_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_17_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_221</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_0_ComponentInstance">
+ <name>Pub_Node_8_18_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_0__prov1ComponentInstance">
+ <name>Pub_Node_8_18_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_0__prov2ComponentInstance">
+ <name>Pub_Node_8_18_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_18_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_159</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_1_ComponentInstance">
+ <name>Pub_Node_8_18_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_1__prov1ComponentInstance">
+ <name>Pub_Node_8_18_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_1__prov2ComponentInstance">
+ <name>Pub_Node_8_18_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_18_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_42</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_0_ComponentInstance">
+ <name>Sub_Node_8_18_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_0__prov1ComponentInstance">
+ <name>Sub_Node_8_18_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_0__prov2ComponentInstance">
+ <name>Sub_Node_8_18_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_18_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_154</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_1_ComponentInstance">
+ <name>Sub_Node_8_18_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_1__prov1ComponentInstance">
+ <name>Sub_Node_8_18_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_1__prov2ComponentInstance">
+ <name>Sub_Node_8_18_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_18_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_22</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_0_ComponentInstance">
+ <name>Pub_Node_8_19_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_0__prov1ComponentInstance">
+ <name>Pub_Node_8_19_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_0__prov2ComponentInstance">
+ <name>Pub_Node_8_19_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_19_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_82</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_1_ComponentInstance">
+ <name>Pub_Node_8_19_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_1__prov1ComponentInstance">
+ <name>Pub_Node_8_19_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_1__prov2ComponentInstance">
+ <name>Pub_Node_8_19_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_8_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_8_19_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_235</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_0_ComponentInstance">
+ <name>Sub_Node_8_19_0_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_0__prov1ComponentInstance">
+ <name>Sub_Node_8_19_0__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_0__prov2ComponentInstance">
+ <name>Sub_Node_8_19_0__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_19_0_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_191</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_1_ComponentInstance">
+ <name>Sub_Node_8_19_1_Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_1__prov1ComponentInstance">
+ <name>Sub_Node_8_19_1__prov1Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_1__prov2ComponentInstance">
+ <name>Sub_Node_8_19_1__prov2Component</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_8_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_8_19_1_DDSConnectorComponent</name>
+ <node>Node_8</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_36</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_0_ComponentInstance">
+ <name>Pub_Node_9_0_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_0__prov1ComponentInstance">
+ <name>Pub_Node_9_0_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_0__prov2ComponentInstance">
+ <name>Pub_Node_9_0_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_0_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_1_ComponentInstance">
+ <name>Pub_Node_9_0_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_1__prov1ComponentInstance">
+ <name>Pub_Node_9_0_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_1__prov2ComponentInstance">
+ <name>Pub_Node_9_0_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_0_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_0_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_70</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_0_ComponentInstance">
+ <name>Sub_Node_9_0_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_0__prov1ComponentInstance">
+ <name>Sub_Node_9_0_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_0__prov2ComponentInstance">
+ <name>Sub_Node_9_0_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_0_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_166</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_1_ComponentInstance">
+ <name>Sub_Node_9_0_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_1__prov1ComponentInstance">
+ <name>Sub_Node_9_0_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_1__prov2ComponentInstance">
+ <name>Sub_Node_9_0_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_0_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_0_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_213</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_0_ComponentInstance">
+ <name>Pub_Node_9_1_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_0__prov1ComponentInstance">
+ <name>Pub_Node_9_1_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_0__prov2ComponentInstance">
+ <name>Pub_Node_9_1_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_1_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_85</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_1_ComponentInstance">
+ <name>Pub_Node_9_1_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_1__prov1ComponentInstance">
+ <name>Pub_Node_9_1_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_1__prov2ComponentInstance">
+ <name>Pub_Node_9_1_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_1_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_1_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_117</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_0_ComponentInstance">
+ <name>Sub_Node_9_1_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_0__prov1ComponentInstance">
+ <name>Sub_Node_9_1_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_0__prov2ComponentInstance">
+ <name>Sub_Node_9_1_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_1_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_121</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_1_ComponentInstance">
+ <name>Sub_Node_9_1_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_1__prov1ComponentInstance">
+ <name>Sub_Node_9_1_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_1__prov2ComponentInstance">
+ <name>Sub_Node_9_1_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_1_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_1_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_25</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_0_ComponentInstance">
+ <name>Pub_Node_9_2_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_0__prov1ComponentInstance">
+ <name>Pub_Node_9_2_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_0__prov2ComponentInstance">
+ <name>Pub_Node_9_2_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_2_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_44</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_1_ComponentInstance">
+ <name>Pub_Node_9_2_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_1__prov1ComponentInstance">
+ <name>Pub_Node_9_2_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_1__prov2ComponentInstance">
+ <name>Pub_Node_9_2_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_2_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_2_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_27</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_0_ComponentInstance">
+ <name>Sub_Node_9_2_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_0__prov1ComponentInstance">
+ <name>Sub_Node_9_2_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_0__prov2ComponentInstance">
+ <name>Sub_Node_9_2_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_2_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_74</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_1_ComponentInstance">
+ <name>Sub_Node_9_2_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_1__prov1ComponentInstance">
+ <name>Sub_Node_9_2_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_1__prov2ComponentInstance">
+ <name>Sub_Node_9_2_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_2_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_2_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_15</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_0_ComponentInstance">
+ <name>Pub_Node_9_3_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_0__prov1ComponentInstance">
+ <name>Pub_Node_9_3_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_0__prov2ComponentInstance">
+ <name>Pub_Node_9_3_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_3_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_93</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_1_ComponentInstance">
+ <name>Pub_Node_9_3_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_1__prov1ComponentInstance">
+ <name>Pub_Node_9_3_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_1__prov2ComponentInstance">
+ <name>Pub_Node_9_3_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_3_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_3_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_73</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_0_ComponentInstance">
+ <name>Sub_Node_9_3_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_0__prov1ComponentInstance">
+ <name>Sub_Node_9_3_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_0__prov2ComponentInstance">
+ <name>Sub_Node_9_3_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_3_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_248</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_1_ComponentInstance">
+ <name>Sub_Node_9_3_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_1__prov1ComponentInstance">
+ <name>Sub_Node_9_3_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_1__prov2ComponentInstance">
+ <name>Sub_Node_9_3_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_3_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_3_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_107</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_0_ComponentInstance">
+ <name>Pub_Node_9_4_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_0__prov1ComponentInstance">
+ <name>Pub_Node_9_4_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_0__prov2ComponentInstance">
+ <name>Pub_Node_9_4_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_4_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_177</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_1_ComponentInstance">
+ <name>Pub_Node_9_4_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_1__prov1ComponentInstance">
+ <name>Pub_Node_9_4_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_1__prov2ComponentInstance">
+ <name>Pub_Node_9_4_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_4_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_4_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_42</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_0_ComponentInstance">
+ <name>Sub_Node_9_4_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_0__prov1ComponentInstance">
+ <name>Sub_Node_9_4_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_0__prov2ComponentInstance">
+ <name>Sub_Node_9_4_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_4_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_48</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_1_ComponentInstance">
+ <name>Sub_Node_9_4_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_1__prov1ComponentInstance">
+ <name>Sub_Node_9_4_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_1__prov2ComponentInstance">
+ <name>Sub_Node_9_4_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_4_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_4_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_219</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_0_ComponentInstance">
+ <name>Pub_Node_9_5_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_0__prov1ComponentInstance">
+ <name>Pub_Node_9_5_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_0__prov2ComponentInstance">
+ <name>Pub_Node_9_5_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_5_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_1_ComponentInstance">
+ <name>Pub_Node_9_5_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_1__prov1ComponentInstance">
+ <name>Pub_Node_9_5_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_1__prov2ComponentInstance">
+ <name>Pub_Node_9_5_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_5_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_5_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_230</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_0_ComponentInstance">
+ <name>Sub_Node_9_5_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_0__prov1ComponentInstance">
+ <name>Sub_Node_9_5_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_0__prov2ComponentInstance">
+ <name>Sub_Node_9_5_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_5_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_77</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_1_ComponentInstance">
+ <name>Sub_Node_9_5_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_1__prov1ComponentInstance">
+ <name>Sub_Node_9_5_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_1__prov2ComponentInstance">
+ <name>Sub_Node_9_5_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_5_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_5_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_242</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_0_ComponentInstance">
+ <name>Pub_Node_9_6_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_0__prov1ComponentInstance">
+ <name>Pub_Node_9_6_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_0__prov2ComponentInstance">
+ <name>Pub_Node_9_6_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_6_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_231</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_1_ComponentInstance">
+ <name>Pub_Node_9_6_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_1__prov1ComponentInstance">
+ <name>Pub_Node_9_6_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_1__prov2ComponentInstance">
+ <name>Pub_Node_9_6_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_6_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_6_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_6</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_0_ComponentInstance">
+ <name>Sub_Node_9_6_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_0__prov1ComponentInstance">
+ <name>Sub_Node_9_6_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_0__prov2ComponentInstance">
+ <name>Sub_Node_9_6_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_6_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_246</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_1_ComponentInstance">
+ <name>Sub_Node_9_6_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_1__prov1ComponentInstance">
+ <name>Sub_Node_9_6_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_1__prov2ComponentInstance">
+ <name>Sub_Node_9_6_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_6_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_6_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_67</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_0_ComponentInstance">
+ <name>Pub_Node_9_7_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_0__prov1ComponentInstance">
+ <name>Pub_Node_9_7_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_0__prov2ComponentInstance">
+ <name>Pub_Node_9_7_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_7_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_85</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_1_ComponentInstance">
+ <name>Pub_Node_9_7_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_1__prov1ComponentInstance">
+ <name>Pub_Node_9_7_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_1__prov2ComponentInstance">
+ <name>Pub_Node_9_7_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_7_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_7_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_13</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_0_ComponentInstance">
+ <name>Sub_Node_9_7_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_0__prov1ComponentInstance">
+ <name>Sub_Node_9_7_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_0__prov2ComponentInstance">
+ <name>Sub_Node_9_7_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_7_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_163</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_1_ComponentInstance">
+ <name>Sub_Node_9_7_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_1__prov1ComponentInstance">
+ <name>Sub_Node_9_7_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_1__prov2ComponentInstance">
+ <name>Sub_Node_9_7_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_7_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_7_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_210</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_0_ComponentInstance">
+ <name>Pub_Node_9_8_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_0__prov1ComponentInstance">
+ <name>Pub_Node_9_8_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_0__prov2ComponentInstance">
+ <name>Pub_Node_9_8_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_8_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_227</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_1_ComponentInstance">
+ <name>Pub_Node_9_8_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_1__prov1ComponentInstance">
+ <name>Pub_Node_9_8_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_1__prov2ComponentInstance">
+ <name>Pub_Node_9_8_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_8_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_8_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_109</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_0_ComponentInstance">
+ <name>Sub_Node_9_8_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_0__prov1ComponentInstance">
+ <name>Sub_Node_9_8_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_0__prov2ComponentInstance">
+ <name>Sub_Node_9_8_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_8_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_53</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_1_ComponentInstance">
+ <name>Sub_Node_9_8_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_1__prov1ComponentInstance">
+ <name>Sub_Node_9_8_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_1__prov2ComponentInstance">
+ <name>Sub_Node_9_8_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_8_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_8_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_201</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_0_ComponentInstance">
+ <name>Pub_Node_9_9_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_0__prov1ComponentInstance">
+ <name>Pub_Node_9_9_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_0__prov2ComponentInstance">
+ <name>Pub_Node_9_9_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_9_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_183</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_1_ComponentInstance">
+ <name>Pub_Node_9_9_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_1__prov1ComponentInstance">
+ <name>Pub_Node_9_9_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_1__prov2ComponentInstance">
+ <name>Pub_Node_9_9_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_9_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_9_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_94</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_0_ComponentInstance">
+ <name>Sub_Node_9_9_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_0__prov1ComponentInstance">
+ <name>Sub_Node_9_9_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_0__prov2ComponentInstance">
+ <name>Sub_Node_9_9_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_9_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_69</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_1_ComponentInstance">
+ <name>Sub_Node_9_9_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_1__prov1ComponentInstance">
+ <name>Sub_Node_9_9_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_1__prov2ComponentInstance">
+ <name>Sub_Node_9_9_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_9_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_9_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_79</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_0_ComponentInstance">
+ <name>Pub_Node_9_10_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_0__prov1ComponentInstance">
+ <name>Pub_Node_9_10_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_0__prov2ComponentInstance">
+ <name>Pub_Node_9_10_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_10_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_25</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_1_ComponentInstance">
+ <name>Pub_Node_9_10_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_1__prov1ComponentInstance">
+ <name>Pub_Node_9_10_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_1__prov2ComponentInstance">
+ <name>Pub_Node_9_10_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_10_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_10_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_17</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_0_ComponentInstance">
+ <name>Sub_Node_9_10_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_0__prov1ComponentInstance">
+ <name>Sub_Node_9_10_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_0__prov2ComponentInstance">
+ <name>Sub_Node_9_10_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_10_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_135</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_1_ComponentInstance">
+ <name>Sub_Node_9_10_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_1__prov1ComponentInstance">
+ <name>Sub_Node_9_10_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_1__prov2ComponentInstance">
+ <name>Sub_Node_9_10_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_10_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_10_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_161</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_0_ComponentInstance">
+ <name>Pub_Node_9_11_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_0__prov1ComponentInstance">
+ <name>Pub_Node_9_11_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_0__prov2ComponentInstance">
+ <name>Pub_Node_9_11_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_11_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_195</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_1_ComponentInstance">
+ <name>Pub_Node_9_11_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_1__prov1ComponentInstance">
+ <name>Pub_Node_9_11_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_1__prov2ComponentInstance">
+ <name>Pub_Node_9_11_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_11_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_11_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_225</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_0_ComponentInstance">
+ <name>Sub_Node_9_11_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_0__prov1ComponentInstance">
+ <name>Sub_Node_9_11_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_0__prov2ComponentInstance">
+ <name>Sub_Node_9_11_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_11_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_185</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_1_ComponentInstance">
+ <name>Sub_Node_9_11_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_1__prov1ComponentInstance">
+ <name>Sub_Node_9_11_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_1__prov2ComponentInstance">
+ <name>Sub_Node_9_11_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_11_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_11_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_30</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_0_ComponentInstance">
+ <name>Pub_Node_9_12_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_0__prov1ComponentInstance">
+ <name>Pub_Node_9_12_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_0__prov2ComponentInstance">
+ <name>Pub_Node_9_12_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_12_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_96</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_1_ComponentInstance">
+ <name>Pub_Node_9_12_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_1__prov1ComponentInstance">
+ <name>Pub_Node_9_12_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_1__prov2ComponentInstance">
+ <name>Pub_Node_9_12_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_12_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_12_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_131</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_0_ComponentInstance">
+ <name>Sub_Node_9_12_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_0__prov1ComponentInstance">
+ <name>Sub_Node_9_12_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_0__prov2ComponentInstance">
+ <name>Sub_Node_9_12_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_12_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_12</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_1_ComponentInstance">
+ <name>Sub_Node_9_12_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_1__prov1ComponentInstance">
+ <name>Sub_Node_9_12_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_1__prov2ComponentInstance">
+ <name>Sub_Node_9_12_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_12_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_12_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_221</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_0_ComponentInstance">
+ <name>Pub_Node_9_13_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_0__prov1ComponentInstance">
+ <name>Pub_Node_9_13_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_0__prov2ComponentInstance">
+ <name>Pub_Node_9_13_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_13_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_125</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_1_ComponentInstance">
+ <name>Pub_Node_9_13_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_1__prov1ComponentInstance">
+ <name>Pub_Node_9_13_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_1__prov2ComponentInstance">
+ <name>Pub_Node_9_13_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_13_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_13_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_95</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_0_ComponentInstance">
+ <name>Sub_Node_9_13_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_0__prov1ComponentInstance">
+ <name>Sub_Node_9_13_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_0__prov2ComponentInstance">
+ <name>Sub_Node_9_13_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_13_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_111</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_1_ComponentInstance">
+ <name>Sub_Node_9_13_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_1__prov1ComponentInstance">
+ <name>Sub_Node_9_13_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_1__prov2ComponentInstance">
+ <name>Sub_Node_9_13_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_13_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_13_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_76</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_0_ComponentInstance">
+ <name>Pub_Node_9_14_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_0__prov1ComponentInstance">
+ <name>Pub_Node_9_14_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_0__prov2ComponentInstance">
+ <name>Pub_Node_9_14_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_14_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_123</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_1_ComponentInstance">
+ <name>Pub_Node_9_14_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_1__prov1ComponentInstance">
+ <name>Pub_Node_9_14_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_1__prov2ComponentInstance">
+ <name>Pub_Node_9_14_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_14_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_14_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_16</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_0_ComponentInstance">
+ <name>Sub_Node_9_14_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_0__prov1ComponentInstance">
+ <name>Sub_Node_9_14_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_0__prov2ComponentInstance">
+ <name>Sub_Node_9_14_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_14_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_155</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_1_ComponentInstance">
+ <name>Sub_Node_9_14_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_1__prov1ComponentInstance">
+ <name>Sub_Node_9_14_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_1__prov2ComponentInstance">
+ <name>Sub_Node_9_14_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_14_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_14_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_52</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_0_ComponentInstance">
+ <name>Pub_Node_9_15_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_0__prov1ComponentInstance">
+ <name>Pub_Node_9_15_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_0__prov2ComponentInstance">
+ <name>Pub_Node_9_15_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_15_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_176</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_1_ComponentInstance">
+ <name>Pub_Node_9_15_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_1__prov1ComponentInstance">
+ <name>Pub_Node_9_15_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_1__prov2ComponentInstance">
+ <name>Pub_Node_9_15_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_15_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_15_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_105</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_0_ComponentInstance">
+ <name>Sub_Node_9_15_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_0__prov1ComponentInstance">
+ <name>Sub_Node_9_15_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_0__prov2ComponentInstance">
+ <name>Sub_Node_9_15_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_15_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_39</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_1_ComponentInstance">
+ <name>Sub_Node_9_15_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_1__prov1ComponentInstance">
+ <name>Sub_Node_9_15_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_1__prov2ComponentInstance">
+ <name>Sub_Node_9_15_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_15_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_15_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_229</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_0_ComponentInstance">
+ <name>Pub_Node_9_16_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_0__prov1ComponentInstance">
+ <name>Pub_Node_9_16_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_0__prov2ComponentInstance">
+ <name>Pub_Node_9_16_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_16_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_193</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_1_ComponentInstance">
+ <name>Pub_Node_9_16_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_1__prov1ComponentInstance">
+ <name>Pub_Node_9_16_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_1__prov2ComponentInstance">
+ <name>Pub_Node_9_16_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_16_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_16_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_238</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_0_ComponentInstance">
+ <name>Sub_Node_9_16_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_0__prov1ComponentInstance">
+ <name>Sub_Node_9_16_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_0__prov2ComponentInstance">
+ <name>Sub_Node_9_16_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_16_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_56</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_1_ComponentInstance">
+ <name>Sub_Node_9_16_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_1__prov1ComponentInstance">
+ <name>Sub_Node_9_16_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_1__prov2ComponentInstance">
+ <name>Sub_Node_9_16_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_16_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_16_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_46</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_0_ComponentInstance">
+ <name>Pub_Node_9_17_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_0__prov1ComponentInstance">
+ <name>Pub_Node_9_17_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_0__prov2ComponentInstance">
+ <name>Pub_Node_9_17_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_17_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_140</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_1_ComponentInstance">
+ <name>Pub_Node_9_17_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_1__prov1ComponentInstance">
+ <name>Pub_Node_9_17_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_1__prov2ComponentInstance">
+ <name>Pub_Node_9_17_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_17_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_17_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_2</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_0_ComponentInstance">
+ <name>Sub_Node_9_17_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_0__prov1ComponentInstance">
+ <name>Sub_Node_9_17_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_0__prov2ComponentInstance">
+ <name>Sub_Node_9_17_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_17_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_129</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_1_ComponentInstance">
+ <name>Sub_Node_9_17_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_1__prov1ComponentInstance">
+ <name>Sub_Node_9_17_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_1__prov2ComponentInstance">
+ <name>Sub_Node_9_17_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_17_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_17_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_11</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_0_ComponentInstance">
+ <name>Pub_Node_9_18_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_0__prov1ComponentInstance">
+ <name>Pub_Node_9_18_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_0__prov2ComponentInstance">
+ <name>Pub_Node_9_18_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_18_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_4</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_1_ComponentInstance">
+ <name>Pub_Node_9_18_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_1__prov1ComponentInstance">
+ <name>Pub_Node_9_18_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_1__prov2ComponentInstance">
+ <name>Pub_Node_9_18_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_18_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_18_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_47</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_0_ComponentInstance">
+ <name>Sub_Node_9_18_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_0__prov1ComponentInstance">
+ <name>Sub_Node_9_18_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_0__prov2ComponentInstance">
+ <name>Sub_Node_9_18_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_18_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_167</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_1_ComponentInstance">
+ <name>Sub_Node_9_18_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_1__prov1ComponentInstance">
+ <name>Sub_Node_9_18_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_1__prov2ComponentInstance">
+ <name>Sub_Node_9_18_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_18_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_18_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_5</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_0_ComponentInstance">
+ <name>Pub_Node_9_19_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_0__prov1ComponentInstance">
+ <name>Pub_Node_9_19_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_0__prov2ComponentInstance">
+ <name>Pub_Node_9_19_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_0_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_19_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_240</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_1_ComponentInstance">
+ <name>Pub_Node_9_19_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_1__prov1ComponentInstance">
+ <name>Pub_Node_9_19_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_1__prov2ComponentInstance">
+ <name>Pub_Node_9_19_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Pub_Node_9_19_1_DDSConnectorComponentInstance">
+ <name>Pub_Node_9_19_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_174</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_0_ComponentInstance">
+ <name>Sub_Node_9_19_0_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_0__prov1ComponentInstance">
+ <name>Sub_Node_9_19_0__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_0__prov2ComponentInstance">
+ <name>Sub_Node_9_19_0__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_0_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_19_0_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_129</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_1_ComponentInstance">
+ <name>Sub_Node_9_19_1_Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DDS_PubComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_1__prov1ComponentInstance">
+ <name>Sub_Node_9_19_1__prov1Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_1__prov2ComponentInstance">
+ <name>Sub_Node_9_19_1__prov2Component</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Single_ServiceComponentImplementation" />
+
+
+</instance>
+
+
+<instance xmi:id="Sub_Node_9_19_1_DDSConnectorComponentInstance">
+ <name>Sub_Node_9_19_1_DDSConnectorComponent</name>
+ <node>Node_9</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Large_ConnectorComponentImplementation" />
+
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Topic_232</string>
+ </value>
+ </value>
+</configProperty>
+
+</instance>
+
+<connection>
+ <name>Pub_Node_0_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_0_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_0_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_0_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_0_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_0_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_1_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_1_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_1_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_1_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_1_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_2_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_2_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_2_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_2_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_2_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_3_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_3_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_3_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_3_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_3_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_4_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_4_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_4_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_4_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_4_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_5_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_5_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_5_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_5_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_5_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_6_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_6_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_6_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_6_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_6_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_7_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_7_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_7_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_7_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_7_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_8_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_8_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_8_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_8_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_8_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_0_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_0_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_0_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_1_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_1_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_1_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_2_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_2_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_2_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_3_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_3_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_3_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_4_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_4_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_4_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_5_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_5_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_5_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_6_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_6_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_6_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_7_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_7_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_7_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_8_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_8_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_8_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_9_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_9_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_9_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_10_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_10_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_10_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_11_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_11_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_11_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_12_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_12_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_12_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_13_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_13_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_13_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_14_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_14_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_14_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_15_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_15_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_15_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_16_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_16_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_16_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_17_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_17_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_17_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_18_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_18_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_18_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Pub_Node_9_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Pub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Pub_Node_9_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_0_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_0__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_0_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_0__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_0_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_0_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_0_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_1_service1</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_1__prov1ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_one</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_1_service2</name>
+
+ <internalEndpoint>
+ <portName>ping_port</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_1__prov2ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>ping_two</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<connection>
+ <name>Sub_Node_9_19_1_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+</deployRequirement>
+
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sub_Node_9_19_1_ComponentInstance" />
+</internalEndpoint>
+
+ <internalEndpoint>
+ <portName>info_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sub_Node_9_19_1_DDSConnectorComponentInstance" />
+</internalEndpoint>
+
+</connection>
+<artifact xmi:id="Large_Connector_ExecArtifact">
+ <name>Large_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>Large_Connector_exec</location>
+</artifact>
+<artifact xmi:id="Large_Connector_SvntArtifact">
+ <name>Large_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>Large_Connector_svnt</location>
+</artifact>
+<artifact xmi:id="Large_Connector_StubArtifact">
+ <name>Large_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>Large_Connector_stub</location>
+</artifact>
+<artifact xmi:id="Single_Service_ExecArtifact">
+ <name>Single_Service_exec</name>
+ <source/>
+ <node/>
+ <location>Single_Service_exec</location>
+</artifact>
+<artifact xmi:id="Single_Service_SvntArtifact">
+ <name>Single_Service_svnt</name>
+ <source/>
+ <node/>
+ <location>Single_Service_svnt</location>
+</artifact>
+<artifact xmi:id="Single_Service_StubArtifact">
+ <name>Single_Service_stub</name>
+ <source/>
+ <node/>
+ <location>Single_Service_stub</location>
+</artifact>
+<artifact xmi:id="DDS_Pub_ExecArtifact">
+ <name>DDS_Pub_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Pub_exec</location>
+</artifact>
+<artifact xmi:id="DDS_Pub_SvntArtifact">
+ <name>DDS_Pub_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Pub_svnt</location>
+</artifact>
+<artifact xmi:id="DDS_Pub_StubArtifact">
+ <name>DDS_Pub_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Pub_stub</location>
+</artifact>
+<artifact xmi:id="DDS_Sub_ExecArtifact">
+ <name>DDS_Sub_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Sub_exec</location>
+</artifact>
+<artifact xmi:id="DDS_Sub_SvntArtifact">
+ <name>DDS_Sub_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Sub_svnt</location>
+</artifact>
+<artifact xmi:id="DDS_Sub_StubArtifact">
+ <name>DDS_Sub_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Sub_stub</location>
+</artifact>
+</Deployment:DeploymentPlan> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/NodeManagerMap.dat b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/NodeManagerMap.dat
new file mode 100644
index 00000000000..9a2ae06a05c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+SenderNode corbaloc:iiop:localhost:60001/Sender.NodeManager
+ReceiverNode corbaloc:iiop:localhost:60002/Receiver.NodeManager
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/generate_large_plan.py b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/generate_large_plan.py
new file mode 100755
index 00000000000..19eeb8c46d1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/generate_large_plan.py
@@ -0,0 +1,247 @@
+#!/usr/bin/python
+import sys, os, math
+
+sys.path.append (os.getenv ("DANCE_ROOT") + "/bin")
+
+from PythonDAnCE import generator
+
+nodes = 10
+processes = 200
+proc_per_node = processes / 10
+single_service_components = 1000
+dds_pub_components = 250
+dds_pub_per_proc = 2
+dds_sub_components = 375
+dds_sub_per_proc = 2
+topics = 250
+
+namespace = ""
+
+
+def create_names (prefix, number):
+ retval = []
+
+ for x in range(number):
+ retval.append (prefix + "_" + str(x))
+ return retval
+
+def add_sub_connector (name, topic, node) :
+ comp = ""
+ conn = ""
+
+ config_prop = ""
+ config_prop += generator.config_prop ("topic_name", "string", topic)
+
+ comp += generator.comp_inst (name + "DDSConnector", config_prop, )
+
+ deploy_req = generator.deploy_requirement ("edu.dre.vanderbilt.DAnCE.ConnectionType",
+ "Local_Interface")
+ conn += generator.connection (name + "info_out_data",
+ deploy_req,
+ generator.internal_endpoint ("info_out_data",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"),
+ generator.internal_endpoint ("push_consumer_data",
+ "true",
+ "Facet",
+ name + "DDSConnector" + "ComponentInstance"))
+
+ conn += generator.connection (name + "listenercontrol",
+ deploy_req,
+ generator.internal_endpoint ("info_out_data_control",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"),
+ generator.internal_endpoint ("push_consumer_data_control",
+ "true",
+ "Facet",
+ name + "DDSConnector" + "ComponentInstance"))
+
+ conn += generator.connection (name + "portstatuslistener",
+ deploy_req,
+ generator.internal_endpoint ("info_out_status",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"),
+ generator.internal_endpoint ("push_consumer_status",
+ "true",
+ "Facet",
+ name + "DDSConnector" + "ComponentInstance"))
+
+ conn += generator.connection (name + "listener",
+ deploy_req,
+ generator.internal_endpoint ("info_out_data_listener",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"),
+ generator.internal_endpoint ("push_consumer_data_listener",
+ "true",
+ "Facet",
+ name + "DDSConnector" + "ComponentInstance"))
+ return (comp, conn)
+
+def add_pub_connector (name, topic, node) :
+ comp = ""
+ conn = ""
+
+ config_prop = ""
+ config_prop += generator.config_prop.template ("topic_name", "string", topic)
+
+ comp += generator.comp_inst.template (name + "DDSConnector", config_prop, "Large_ConnectorComponentImplementation", node)
+
+ deploy_req = generator.deploy_requirement.template ("edu.dre.vanderbilt.DAnCE.ConnectionType",
+ "Local_Interface")
+
+ conn += generator.connection.template (name + "writer",
+ deploy_req,
+ generator.internal_endpoint.template ("info_write_data",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"),
+ generator.internal_endpoint.template ("info_data",
+ "true",
+ "Facet",
+ name + "DDSConnector" + "ComponentInstance"))
+
+ return (comp, conn)
+
+def add_provide_component (name, node) :
+ retval = ""
+
+ retval += generator.comp_inst.template (name, "", "Single_ServiceComponentImplementation", node)
+
+ return retval
+
+def add_dds_pub_component (name, topic, node) :
+ comps = ""
+ conns = ""
+
+ comps += generator.comp_inst.template (name, "", "DDS_PubComponentImplementation", node)
+
+ compname = name + "_prov1"
+ comps += add_provide_component (compname, node)
+ conns += generator.connection.template (name + "service1",
+ "",
+ generator.internal_endpoint.template ("ping_port",
+ "true",
+ "Facet",
+ compname+ "ComponentInstance"),
+ generator.internal_endpoint.template ("ping_one",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"))
+ compname = name + "_prov2"
+ comps += add_provide_component (compname, node)
+ conns += generator.connection.template (name + "service2",
+ "",
+ generator.internal_endpoint.template ("ping_port",
+ "true",
+ "Facet",
+ compname+ "ComponentInstance"),
+ generator.internal_endpoint.template ("ping_two",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance" ))
+
+
+ (tmpcomp, tmpconn) = add_pub_connector (name, topic, node)
+
+ comps += tmpcomp
+ conns += tmpconn
+
+ return (comps, conns)
+
+def add_dds_sub_component (name, topic, node) :
+ comps = ""
+ conns = ""
+
+ comps += generator.comp_inst (name, "", "DDS_PubComponentImplementation", node)
+
+ compname = name + "_prov"
+ comps += add_provide_component (compname, node)
+ conns += generator.connection (name + "service",
+ "",
+ generator.internal_endpoint ("ping_port",
+ "true",
+ "Facet",
+ compname + "ComponentInstance"),
+ generator.internal_endpoint ("ping_one",
+ "false",
+ "SimplexReceptacle",
+ name + "ComponentInstance"))
+
+ (tmpcomp, tmpconn) = add_sub_connector (name, topic, node)
+
+ comps += tmpcomp
+ conns += tmpconn
+
+ return (comps, conns)
+
+def main ():
+
+ import random
+
+ retval = ""
+
+ retval += generator.header.template ("Large_Plan")
+
+ retval += generator.comp_impl.template ("Large_Connector", "")
+ retval += generator.comp_impl.template ("Single_Service", "")
+ retval += generator.comp_impl.template ("DDS_Pub", "")
+ retval += generator.comp_impl.template ("DDS_Sub", "")
+
+ conns = ""
+ comps = ""
+
+ nodenames = create_names ("Node", nodes)
+ print nodenames
+ topicnames = create_names ("Topic", topics)
+ print topicnames
+
+ pub_count = 0
+ sub_count = 0
+ service_count = 0
+
+ for name in nodenames:
+ for proc in range (proc_per_node):
+ for comp in range (dds_pub_per_proc):
+ (tmpcomp, tmpconn) = add_dds_pub_component ('Pub' + '_' + name + '_' + str(proc) + '_' + str(comp) + '_',
+ random.choice (topicnames),
+ name)
+ conns += tmpconn
+ comps += tmpcomp
+ pub_count += 1
+ service_count += 2
+
+ for comp in range (dds_sub_per_proc):
+ (tmpcomp, tmpconn) = add_dds_pub_component ('Sub' + '_' + name + '_' + str(proc) + '_' + str(comp) + '_',
+ random.choice (topicnames),
+ name)
+
+ conns += tmpconn
+ comps += tmpcomp
+
+ sub_count += 1
+ service_count += 1
+
+ retval += comps
+ retval += conns
+
+ retval += generator.artifact.template ("Large_Connector")
+ retval += generator.artifact.template ("Single_Service")
+ retval += generator.artifact.template ("DDS_Pub")
+ retval += generator.artifact.template ("DDS_Sub")
+ retval += generator.footer.template ()
+
+ print "Writing a plan with " + str(pub_count) + " publish components, " + str (sub_count) + " subscribe components, and " + str(service_count) + " service components."
+
+ outfile = open ("LargePlan.cdp", 'w')
+ outfile.write (retval)
+ outfile.close ()
+
+if __name__ == "__main__":
+ main ()
+
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/run_test.pl
new file mode 100755
index 00000000000..63828079c7c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Large_Deployment/descriptors/run_test.pl
@@ -0,0 +1,237 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 10;
+@ports = ( 60001, 60002, 60003, 60004, 60005, 60006, 60007, 60008, 60009, 60010);
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior", "NodeApp3.ior", "NodeApp4.ior", "NodeApp5.ior", "NodeApp6.ior", "NodeApp7.ior", "NodeApp8.ior", "NodeApp9.ior", "NodeApp10.ior" );
+@iorfiles = 0;
+@nodenames = ( "Node_0", "Node_1", "Node_2", "Node_3", "Node_4", "Node_5", "Node_6", "Node_7", "Node_8", "Node_9", "Node_10");
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "LargePlan.cdp";
+
+$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter";
+
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill ();
+ $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --instance-nc corbaloc:rir:/NameService --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60013 -o $ior_nsfile");
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60013 -o ns.ior\n";
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60013/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile -l\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile -l");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior");
+# $result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+# if ($result != 0) {
+# print STDERR "ERROR: The controller returned $result\n";
+# $status = 1;
+# }
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl
new file mode 100644
index 00000000000..1b0dc464d6d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Quoter_Base.idl
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#ifndef QUOTER_BASE_IDL
+#define QUOTER_BASE_IDL
+
+#pragma ndds typesupport "Base/Quoter_BaseSupport.h"
+#pragma opendds typesupport "Base/Quoter_BaseTypeSupportC.h"
+
+#pragma DCPS_DATA_TYPE "Quoter::Stock_Info"
+#pragma DCPS_DATA_KEY "Quoter::Stock_Info symbol"
+
+module Quoter
+{
+ struct Stock_Info
+ {
+ unsigned long low;
+ unsigned long high;
+ unsigned long current;
+ string symbol; //@key
+ };
+ typedef sequence<Stock_Info> Stock_InfoSeq;
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc
new file mode 100644
index 00000000000..d3e88495282
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Base/Quoter_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Quoter_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Quoter_Base_stub
+ dynamicflags += QUOTER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=QUOTER_BASE_STUB_Export \
+ -Wb,stub_export_include=Quoter_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Quoter_Base.idl
+ }
+
+ opendds_ts_flags += --export=QUOTER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Quoter_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl
new file mode 100644
index 00000000000..905e7154a13
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file Broker.idl
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#ifndef BROKER_IDL
+#define BROKER_IDL
+
+#include "Connector/Quoter_Connector.idl"
+
+module Quoter
+{
+ component Broker
+ {
+ port CCM_DDS::Quoter::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc
new file mode 100644
index 00000000000..b51d8a49482
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker.mpc
@@ -0,0 +1,139 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -u DDS -b dds4ccm_base Broker"
+
+project(DDS_Broker_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Quoter_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=BROKER_STUB_Export \
+ -Wb,stub_export_include=Broker_stub_export.h \
+ -Wb,skel_export_macro=BROKER_SVNT_Export \
+ -Wb,skel_export_include=Broker_svnt_export.h \
+ -Wb,svnt_export_macro=BROKER_SVNT_Export \
+ -Wb,svnt_export_include=Broker_svnt_export.h \
+ -Wb,exec_export_macro=BROKER_EXEC_Export \
+ -Wb,exec_export_include=Broker_exec_export.h -I..
+
+ IDL_Files {
+ Broker.idl
+ }
+}
+
+project(DDS_Broker_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Broker_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=BROKER_LEM_STUB_Export \
+ -Wb,stub_export_include=Broker_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ BrokerE.idl
+ }
+}
+
+project(DDS_Broker_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Broker_lem_gen DDS_Broker_stub DDS_Quoter_Connector_stub DDS_Quoter_Base_stub
+ libs += Broker_stub DDS_Quoter_Connector_stub DDS_Quoter_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Broker_lem_stub
+ dynamicflags = BROKER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ BrokerEC.cpp
+ }
+
+ Header_Files {
+ BrokerEC.h
+ Broker_lem_stub_export.h
+ }
+
+ Inline_Files {
+ BrokerEC.inl
+ }
+}
+
+project(DDS_Broker_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Broker_idl_gen DDS_Quoter_Connector_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_lem_gen
+ libs += DDS_Quoter_Connector_stub DDS_Quoter_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Broker_stub
+ dynamicflags = BROKER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ BrokerC.cpp
+ }
+
+ Header_Files {
+ BrokerC.h
+ Broker_stub_export.h
+ }
+
+ Inline_Files {
+ BrokerC.inl
+ }
+}
+
+project(DDS_Broker_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Broker_lem_stub DDS_Broker_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Broker_exec
+ libs += Broker_stub Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = BROKER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Broker_exec.cpp
+ }
+
+ Header_Files {
+ Broker_exec.h
+ Broker_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Broker_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Broker_exec DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Broker_svnt
+ libs += Broker_stub Broker_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt Broker_exec DDS_Quoter_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = BROKER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ BrokerS.cpp
+ Broker_svnt.cpp
+ }
+
+ Header_Files {
+ BrokerS.h
+ Broker_svnt.h
+ Broker_svnt_export.h
+ }
+
+ Inline_Files {
+ BrokerS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp
new file mode 100644
index 00000000000..3436cb80cd1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.cpp
@@ -0,0 +1,352 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Broker_exec.h"
+#include "ace/Reactor.h"
+#include "ace/OS_NS_time.h"
+#include "ace/OS_NS_unistd.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_Quoter_Broker_Impl
+{
+
+ read_action_Generator::read_action_Generator (Broker_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &,
+ const void *)
+ {
+ // Notify the subscribers
+ // this->pulse_callback_.read_one();
+ // this->pulse_callback_.read_one_history();
+ // this->pulse_callback_.read_all();
+ // this->pulse_callback_.read_all_history();
+ return 0;
+ }
+
+ void
+ Broker_exec_i::read_one (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "read_one\n"));
+ ::Quoter::Stock_Info stock_info;
+ stock_info.symbol= "IBM";
+ ::CCM_DDS::ReadInfo readinfo;
+
+ try
+ {
+ this->reader_->read_one_last (stock_info, readinfo, ::DDS::HANDLE_NIL);
+ time_t tim = readinfo.source_timestamp.sec;
+ ACE_DEBUG ((LM_DEBUG, "Read_Info. -> date = %C\n", ctime (&tim)));
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One: received a stock_info for <%C> at %u:%u:%u\n",
+ stock_info.symbol.in (),
+ stock_info.low,
+ stock_info.current,
+ stock_info.high));
+ }
+ catch(CCM_DDS::NonExistent& )
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One: no stock_info received\n"));
+ }
+ }
+
+ void
+ Broker_exec_i::read_all (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "read_all\n"));
+
+ ::Quoter::Stock_InfoSeq_var stock_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ this->reader_->read_all(stock_infos.out (), readinfoseq.out ());
+ if(readinfoseq->length()!= 0)
+ {
+ int nr_of_infos = readinfoseq->length();
+ for(int i = 0; i < nr_of_infos; i ++)
+ {
+ time_t tim = readinfoseq[i].source_timestamp.sec;
+ ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n",ctime (&tim)));
+ }
+ }
+ if(stock_infos->length()!= 0)
+ {
+ for(CORBA::ULong i = 0; i < stock_infos->length(); i ++)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_All: Number %d : received a stock_info for <%C> at %u:%u:%u\n",
+ i,
+ stock_infos[i].symbol.in (),
+ stock_infos[i].low,
+ stock_infos[i].current,
+ stock_infos[i].high));
+ }
+ }
+ }
+ void
+ Broker_exec_i::read_all_history (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "read_all_history\n"));
+
+ ::Quoter::Stock_InfoSeq_var stock_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ this->reader_->read_all(stock_infos.out (), readinfoseq.out ());
+ if(readinfoseq->length()!= 0)
+ {
+ int nr_of_infos = readinfoseq->length();
+ for(int i = 0; i < nr_of_infos; i ++)
+ {
+ time_t tim = readinfoseq[i].source_timestamp.sec;
+ ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n", ctime (&tim)));
+ }
+ }
+ if(stock_infos->length()!= 0)
+ {
+ int nr_of_stock_infos = stock_infos->length();
+ for(CORBA::ULong i = 0; i < (CORBA::ULong)nr_of_stock_infos; i ++)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_All_History: Number %d : received a stock_info for <%C> at %u:%u:%u\n",
+ i,
+ stock_infos[i].symbol.in (),
+ stock_infos[i].low,
+ stock_infos[i].current,
+ stock_infos[i].high));
+ }
+ }
+ }
+ // read all samples of an given instance
+ void
+ Broker_exec_i::read_one_history (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "read_one_history\n"));
+ ::Quoter::Stock_Info stock_info;
+ stock_info.symbol= "IBM"; //key of instance to read
+
+ ::Quoter::Stock_InfoSeq_var stock_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ try
+ {
+ this->reader_->read_one_all(stock_info,stock_infos.out (), readinfoseq.out (), ::DDS::HANDLE_NIL);
+ if(readinfoseq->length()!= 0)
+ {
+ int nr_of_infos = readinfoseq->length();
+ for(int i = 0; i < nr_of_infos; i ++)
+ {
+ time_t tim = readinfoseq[i].source_timestamp.sec;
+ ACE_DEBUG ((LM_DEBUG, "Read_Info.source_timestamp -> date = %C\n", ctime (&tim)));
+ }
+ }
+ if(stock_infos->length()!= 0)
+ {
+ int nr_of_stock_infos = stock_infos->length();
+ for(CORBA::ULong i = 0; i < (CORBA::ULong)nr_of_stock_infos; i ++)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One_History: Number %d : received a stock_info for <%C> at %u:%u:%u\n",
+ i,
+ stock_infos[i].symbol.in (),
+ stock_infos[i].low,
+ stock_infos[i].current,
+ stock_infos[i].high));
+ }
+ }
+ }
+ catch(CCM_DDS::NonExistent& )
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Read_One_History: no stock_info's received\n"));
+ }
+ }
+ //============================================================
+ // Facet Executor Implementation Class: Stock_Info_Listener_exec_i
+ //============================================================
+
+ Stock_Info_Listener_exec_i::Stock_Info_Listener_exec_i (void)
+ {
+ }
+
+ Stock_Info_Listener_exec_i::~Stock_Info_Listener_exec_i (void)
+ {
+ }
+
+ void
+ Stock_Info_Listener_exec_i::on_many_data (
+ const ::Quoter::Stock_InfoSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ void
+ Stock_Info_Listener_exec_i::on_one_data (
+ const ::Quoter::Stock_Info & an_instance,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stock_Info_Listener: received a stock_info for <%C> at %u:%u:%u\n",
+ an_instance.symbol.in (),
+ an_instance.low,
+ an_instance.current,
+ an_instance.high));
+ }
+ //============================================================
+ // Facet Executor Implementation Class: PortStatusListener_exec_i
+ //============================================================
+
+ PortStatusListener_exec_i::PortStatusListener_exec_i (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "####### construct PortStatusListener ######\n"));
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ ACE_DEBUG ((LM_DEBUG, "####### deadline missed ######\n"));
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /*the_reader*/ ,
+ const ::DDS::SampleLostStatus & status )
+ {
+ ACE_DEBUG ((LM_DEBUG, "####### sample lost ######\n"));
+ ACE_DEBUG ((LM_DEBUG, " status.total_count = %d\n", status.total_count));
+ ACE_DEBUG ((LM_DEBUG, " status.total_count_change = %d\n", status.total_count_change));
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Broker_exec_i
+ //============================================================
+
+ Broker_exec_i::Broker_exec_i (void)
+ {
+ ACE_OS::srand (static_cast <u_int> (ACE_OS::time ()));
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Broker_exec_i::~Broker_exec_i (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Broker_exec_i::~Broker_exec_i\n"));
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ ::CCM_DDS::Quoter::CCM_Listener_ptr
+ Broker_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "*************** out listener\n"));
+ return new Stock_Info_Listener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Broker_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "*************** out status************************\n"));
+ return new PortStatusListener_exec_i ();
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Broker_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ ::Quoter::CCM_Broker_Context_var lctx =
+ ::Quoter::CCM_Broker_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (lctx.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->context_ = lctx;
+ }
+
+ void
+ Broker_exec_i::configuration_complete (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::configuration_complete\n"));
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Broker_exec_i::start (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::start\n"));
+ // calculate the interval time
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, 2000),
+ ACE_Time_Value (0, 2000)) == -1)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::start : error scheduling timer\n"));
+ }
+ }
+
+ void
+ Broker_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::stop\n"));
+ delete this->ticker_;
+ }
+
+ void
+ Broker_exec_i::ccm_activate (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_activate\n"));
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Error: Listener control receptacle is null!\n"));
+ throw CORBA::INTERNAL ();
+ }
+ //in case of testing Listener set lc-> enabled true
+ lc->mode ( ::CCM_DDS::ONE_BY_ONE);
+ //in case of testing Reader set lc-> enabled false, so the Listener doesn't consume all the messages
+ //lc->enabled (false);
+ this->start();
+ }
+
+ void
+ Broker_exec_i::ccm_passivate (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_passivate\n"));
+ this->stop ();
+ }
+
+ void
+ Broker_exec_i::ccm_remove (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ">>> Broker_exec_i::ccm_remove\n"));
+ }
+
+ extern "C" BROKER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Quoter_Broker_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+ ACE_DEBUG ((LM_DEBUG, "in create Broker\n"));
+ ACE_NEW_NORETURN (
+ retval,
+ Broker_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h
new file mode 100644
index 00000000000..487d058c5cd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Broker/Broker_exec.h
@@ -0,0 +1,134 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_BROKER_EXEC_H_
+#define CIAO_BROKER_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "BrokerEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Broker_exec_export.h"
+#include "tao/LocalObject.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Quoter_Broker_Impl
+{
+
+ class Broker_exec_i;
+ /**
+ * @class reader activity generator
+ *
+ * @brief an active object used by StockBroker to perform a periodical read action
+ *
+ */
+ class read_action_Generator : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Broker_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ /// Maintains a handle that actually process the event
+ Broker_exec_i &pulse_callback_;
+ };
+
+ class BROKER_EXEC_Export Stock_Info_Listener_exec_i
+ : public virtual ::CCM_DDS::Quoter::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Stock_Info_Listener_exec_i (void);
+ virtual ~Stock_Info_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ::Quoter::Stock_Info & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ::Quoter::Stock_InfoSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ };
+
+ class BROKER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (void);
+ virtual ~PortStatusListener_exec_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+ };
+
+
+ class BROKER_EXEC_Export Broker_exec_i
+ : public virtual Broker_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Broker_exec_i (void);
+ virtual ~Broker_exec_i (void);
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ virtual ::CCM_DDS::Quoter::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+ void read_one (void);
+ void read_one_history (void);
+ void read_all(void);
+ void read_all_history(void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ virtual void start (void);
+ virtual void stop (void);
+
+ private:
+ ::Quoter::CCM_Broker_Context_var context_;
+ read_action_Generator * ticker_;
+ ::CCM_DDS::Quoter::Reader_var reader_;
+ ::CCM_DDS::Quoter::Getter_var getter_;
+ };
+
+ extern "C" BROKER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Quoter_Broker_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl
new file mode 100644
index 00000000000..be88f9381fe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Quoter_Connector.idl
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#ifndef QUOTER_CONNECTOR_IDL_
+#define QUOTER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Quoter_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Quoter_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::Quoter::Stock_Info, ::Quoter::Stock_InfoSeq> Quoter;
+};
+
+module Quoter
+{
+ connector Quoter_Connector : ::CCM_DDS::Quoter::DDS_Event
+ {
+ };
+};
+
+#endif /* QUOTER_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc
new file mode 100644
index 00000000000..d6cfea2cde1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Connector/Quoter_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Quoter_Base -l .. -o ../lib -u DDS Quoter_Connector"
+
+project(DDS_Quoter_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=QUOTER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Quoter_Connector_stub_export.h \
+ -Wb,skel_export_macro=QUOTER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Quoter_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=QUOTER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Quoter_Connector_svnt_export.h \
+ -Wb,conn_export_macro=QUOTER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Quoter_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Quoter_Connector.idl
+ }
+}
+
+project(DDS_Quoter_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Quoter_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=QUOTER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Quoter_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Quoter_ConnectorE.idl
+ }
+}
+
+project(DDS_Quoter_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Quoter_Connector_lem_gen DDS_Quoter_Connector_stub DDS_Quoter_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Quoter_Base_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Quoter_Connector_lem_stub
+ dynamicflags = QUOTER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Quoter_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Quoter_ConnectorEC.h
+ Quoter_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Quoter_ConnectorEC.inl
+ }
+}
+
+project(DDS_Quoter_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Quoter_Connector_idl_gen DDS_Quoter_Base_stub
+ libs += DDS_Quoter_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Quoter_Connector_stub
+ dynamicflags = QUOTER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Quoter_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Quoter_ConnectorC.h
+ Quoter_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Quoter_ConnectorC.inl
+ }
+}
+
+project(DDS_Quoter_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Quoter_Connector_exec
+ libs += DDS_Quoter_Connector_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUOTER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Quoter_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Quoter_Connector_conn.h
+ Quoter_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Quoter_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_exec DDS_Quoter_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Quoter_Connector_svnt
+ libs += DDS_Quoter_Connector_stub \
+ DDS_Quoter_Connector_lem_stub \
+ DDS_Quoter_Base_stub \
+ DDS_Quoter_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUOTER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Quoter_ConnectorS.cpp
+ Quoter_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Quoter_ConnectorS.h
+ Quoter_Connector_svnt.h
+ Quoter_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Quoter_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl
new file mode 100644
index 00000000000..57dd4bd9e8e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+/**
+ * @file Distributor.idl
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ *
+ * by-hand idl3 translation of distributor components.
+ */
+
+#ifndef DDS_DISTRIBUTOR_IDL
+#define DDS_DISTRIBUTOR_IDL
+
+#include "Connector/Quoter_Connector.idl"
+
+module Quoter
+{
+ interface Trigger
+ {
+ void add_stock (in string stock);
+ void del_stock (in string stock);
+ void start ();
+ void stop ();
+ };
+
+ component Distributor supports Trigger
+ {
+ port CCM_DDS::Quoter::DDS_Write info_in;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ attribute unsigned long rate;
+ };
+};
+
+#endif
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc
new file mode 100644
index 00000000000..6fcead8c9f9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Quoter_Base -l ../lib -o ../lib -c controller -u DDS Distributor"
+
+project(DDS_Distributor_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Quoter_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DISTRIBUTOR_STUB_Export \
+ -Wb,stub_export_include=Distributor_stub_export.h \
+ -Wb,skel_export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,skel_export_include=Distributor_svnt_export.h \
+ -Wb,svnt_export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,svnt_export_include=Distributor_svnt_export.h \
+ -Wb,exec_export_macro=DISTRIBUTOR_EXEC_Export \
+ -Wb,exec_export_include=Distributor_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Distributor.idl
+ }
+}
+
+project(DDS_Distributor_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Distributor_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DISTRIBUTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Distributor_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ DistributorE.idl
+ }
+}
+
+project(DDS_Distributor_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Distributor_lem_gen DDS_Distributor_stub DDS_Quoter_Base_stub
+ libs += DDS_Quoter_Base_stub Distributor_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Distributor_lem_stub
+ dynamicflags = DISTRIBUTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DistributorEC.cpp
+ }
+
+ Header_Files {
+ DistributorEC.h
+ Distributor_lem_stub_export.h
+ }
+
+ Inline_Files {
+ DistributorEC.inl
+ }
+}
+
+project(DDS_Distributor_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Distributor_idl_gen DDS_Quoter_Base_stub DDS_Quoter_Connector_stub
+ libs += DDS_Quoter_Base_stub DDS_Quoter_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Distributor_stub
+ dynamicflags = DISTRIBUTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DistributorC.cpp
+ }
+
+ Header_Files {
+ DistributorC.h
+ Distributor_stub_export.h
+ }
+
+ Inline_Files {
+ DistributorC.inl
+ }
+}
+
+project(DDS_Distributor_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Distributor_lem_stub DDS_Distributor_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub
+ sharedname = Distributor_exec
+ libs += Distributor_stub Distributor_lem_stub DDS_Quoter_Base_stub DDS_Quoter_Connector_lem_stub DDS_Quoter_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = DISTRIBUTOR_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Distributor_exec.cpp
+ }
+
+ Header_Files {
+ Distributor_exec.h
+ Distributor_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Distributor_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Quoter_Base_stub DDS_Distributor_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Quoter_Connector_lem_stub
+ sharedname = Distributor_svnt
+ libs += Distributor_stub Distributor_lem_stub \
+ DDS_Quoter_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Quoter_Connector_stub DDS_Quoter_Connector_svnt DDS_Quoter_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DISTRIBUTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DistributorS.cpp
+ Distributor_svnt.cpp
+ }
+
+ Header_Files {
+ DistributorS.h
+ Distributor_svnt.h
+ Distributor_svnt_export.h
+ }
+
+ Inline_Files {
+ DistributorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp
new file mode 100644
index 00000000000..5fd9c63fed7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.cpp
@@ -0,0 +1,306 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Distributor_exec.h"
+#include "ace/Reactor.h"
+#include "ace/Guard_T.h"
+#include "ace/CORBA_macros.h"
+#include "ace/OS_NS_time.h"
+#include "tao/ORB_Core.h"
+#include <iostream>
+
+namespace CIAO_Quoter_Distributor_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Distributor_exec_i
+ //============================================================
+
+ pulse_Generator::pulse_Generator (Distributor_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ pulse_Generator::~pulse_Generator ()
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &,
+ const void *)
+ {
+ // Notify the subscribers
+ try
+ {
+ this->pulse_callback_.tick ();
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "Distributor pulse_Generator::handle_timeout: Caught exception\n"));
+ }
+
+ return 0;
+ }
+
+
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_inconsistent_topic\n"));
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n"));
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_sample_rejected\n"));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_deadline_missed\n"));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n"));
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind status_kind)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_unexpected_status: %d\n"),
+ status_kind));
+ }
+
+ void ConnectorStatusListener_exec_i::on_publication_matched ( ::DDS::DataWriter_ptr ,
+ const DDS::PublicationMatchedStatus &)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_publication_matched\n"));
+ }
+
+ Distributor_exec_i::Distributor_exec_i (void)
+ : rate_ (1)
+ {
+ ACE_OS::srand (static_cast <u_int> (ACE_OS::time ()));
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Distributor_exec_i::~Distributor_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Distributor_exec_i::tick (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Ticking\n"));
+
+ for (Stock_Table::iterator i = this->stocks_.begin ();
+ i != this->stocks_.end ();
+ ++i)
+ {
+ if (ACE_OS::rand () % 2)
+ {
+ int delta = (ACE_OS::rand () % 10) - 2;
+
+ i->second->current += delta;
+
+ if (i->second->current > i->second->high)
+ i->second->high = i->second->current;
+
+ if (i->second->current < i->second->low)
+ i->second->low = i->second->current;
+
+ if (! ::CORBA::is_nil (this->writer_)) {
+ ACE_DEBUG ((LM_DEBUG, "WRITE AND CREATE stock_info for <%C> %u:%u:%u\n",
+ i->first.c_str (),
+ i->second->low,
+ i->second->current,
+ i->second->high));
+ try
+ {
+ this->writer_->write_one (i->second, ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, "Internal Error while writing Stock_info for <%C>.\n",
+ i->first.c_str ()));
+ }
+ }
+ else
+ ACE_ERROR ((LM_ERROR, "Writer reference is nil!\n"));
+ }
+ }
+ }
+
+ void
+ Distributor_exec_i::add_stock (
+ const char * stock)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Distributor_exec_i::add_stock - Adding stock: %C\n", stock));
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ Quoter::Stock_Info *new_stock = new Quoter::Stock_Info;
+
+ new_stock->low = 50;
+ new_stock->high = 50;
+ new_stock->current = 50;
+ new_stock->symbol = stock;
+
+ this->stocks_[stock] = new_stock;
+ }
+
+ void
+ Distributor_exec_i::del_stock (const char * stock)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Distributor_exec_i::del_stock - Removing stock: %C\n", stock));
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ Stock_Table::iterator pos = this->stocks_.find (stock);
+
+ if (pos != this->stocks_.end ())
+ {
+ this->stocks_.erase (pos);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "Distributor_exec_i::del_stock - Stock not present: %C\n", stock));
+ }
+ }
+
+ void
+ Distributor_exec_i::start (void)
+ {
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Distributor_exec_i::start : error scheduling timer\n"));
+ }
+ }
+
+ void
+ Distributor_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, "Distributor_exec_i::stop\n"));
+ delete this->ticker_;
+ }
+
+ // Component attributes.
+
+ ::CORBA::ULong
+ Distributor_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Distributor_exec_i::rate (
+ ::CORBA::ULong rate )
+ {
+ this->rate_ = rate;
+ }
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent.
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Distributor_exec_i::get_info_out_connector_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "*************** DIST out connector status************************\n"));
+ return new ConnectorStatusListener_exec_i ();
+ }
+
+ void
+ Distributor_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ ::Quoter::CCM_Distributor_Context_var lctx =
+ ::Quoter::CCM_Distributor_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (lctx.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->context_ = lctx;
+ }
+
+ void
+ Distributor_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_in_data ();
+ }
+
+ void
+ Distributor_exec_i::ccm_activate (void)
+ {
+ this->start ();
+ this->add_stock ("MSFT");
+ this->add_stock ("IBM");
+ this->add_stock ("HP");
+ this->add_stock ("DELL");
+ this->add_stock ("ACER");
+ this->add_stock ("ASUS");
+ }
+
+ void
+ Distributor_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Distributor_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Quoter_Distributor_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Distributor_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h
new file mode 100644
index 00000000000..1ab67b20547
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/Distributor/Distributor_exec.h
@@ -0,0 +1,166 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#ifndef CIAO_DISTRIBUTOR_EXEC_H_
+#define CIAO_DISTRIBUTOR_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "DistributorEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Distributor_exec_export.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Mutex.h"
+#include "ace/Reactor.h"
+
+#include <map>
+
+namespace CIAO_Quoter_Distributor_Impl
+{
+ class Distributor_exec_i;
+
+ /**
+ * @class pulse generator
+ *
+ * @brief an active object used by StockDistributor to perform periodical pulse generation
+ *
+ */
+ class pulse_Generator : public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Distributor_exec_i &callback);
+
+ ~pulse_Generator ();
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Distributor_exec_i &pulse_callback_;
+
+ };
+
+class DISTRIBUTOR_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (void);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ virtual
+ void on_publication_matched ( ::DDS::DataWriter_ptr the_writer,
+ const DDS::PublicationMatchedStatus & status);
+
+ };
+ class DISTRIBUTOR_EXEC_Export Distributor_exec_i
+ : public virtual Distributor_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Distributor_exec_i (void);
+ virtual ~Distributor_exec_i (void);
+
+ void tick (void);
+
+ // Supported operations and attributes.
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ add_stock (
+ const char * stock);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ del_stock (
+ const char * stock);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ start (void);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ stop (void);
+
+ // Component attributes.
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::CORBA::ULong
+ rate (void);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ rate (
+ ::CORBA::ULong rate);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ // Operations from Components::SessionComponent.
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ pulse_Generator * ticker_;
+ ::Quoter::CCM_Distributor_Context_var context_;
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, Quoter::Stock_Info_var> Stock_Table;
+ Stock_Table stocks_;
+ CORBA::ULong rate_;
+ CCM_DDS::Quoter::Writer_var writer_;
+ };
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Quoter_Distributor_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..942fd32a0ca
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/Plan.cdp
@@ -0,0 +1,425 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Quoter_Depl_1</label>
+ <UUID>Quoter_Depl_1</UUID>
+
+ <implementation xmi:id="BrokerComponentImplementation">
+ <name>BrokerComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Broker_ExecArtifact" />
+ <artifact xmi:idref="Broker_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Broker_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Broker_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Broker_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Broker_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Quoter_ConnectorComponentImplementation">
+ <name>Quoter_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Quoter_Connector_ExecArtifact" />
+ <artifact xmi:idref="Quoter_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Quoter_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Quoter_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Quoter_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Quoter_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="DistributorComponentImplementation">
+ <name>DistributorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Distributor_ExecArtifact" />
+ <artifact xmi:idref="Distributor_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Distributor_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Quoter_Distributor_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Distributor_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Distributor_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="BrokerComponentInstance">
+ <name>BrokerComponent</name>
+ <node>BrokerNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="BrokerComponentImplementation" />
+ </instance>
+ <instance xmi:id="Quoter_ConnectorComponentInstance">
+ <name>Quoter_ConnectorComponent</name>
+ <node>DistributorNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Quoter_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Quoter</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Quoter_ConnectorComponentInstance2">
+ <name>Quoter_ConnectorComponent2</name>
+ <node>BrokerNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Quoter_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Quoter</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="DistributorComponentInstance">
+ <name>DistributorComponent</name>
+ <node>DistributorNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="DistributorComponentImplementation" />
+ </instance>
+
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="BrokerComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="BrokerComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="BrokerComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_datareader</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="BrokerComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="BrokerComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_connectorstatuslistener_distributor</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="DistributorComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_in_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="DistributorComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--connection>
+ <name>updater_connection</name>
+ <internalEndpoint>
+ <portName>info_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="DistributorComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>info_update_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Quoter_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection-->
+
+ <artifact xmi:id="Distributor_ExecArtifact">
+ <name>Distributor_exec</name>
+ <source/>
+ <node/>
+ <location>Distributor_exec</location>
+ </artifact>
+ <artifact xmi:id="Distributor_SvntArtifact">
+ <name>Distributor_svnt</name>
+ <source/>
+ <node/>
+ <location>Distributor_svnt</location>
+ </artifact>
+ <artifact xmi:id="Distributor_StubArtifact">
+ <name>Distributor_stub</name>
+ <source/>
+ <node/>
+ <location>Distributor_stub</location>
+ </artifact>
+ <artifact xmi:id="Quoter_Connector_ExecArtifact">
+ <name>Quoter_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Quoter_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Quoter_Connector_SvntArtifact">
+ <name>Quoter_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Quoter_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Quoter_Connector_StubArtifact">
+ <name>Quoter_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Quoter_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Broker_ExecArtifact">
+ <name>Broker_exec</name>
+ <source/>
+ <node/>
+ <location>Broker_exec</location>
+ </artifact>
+ <artifact xmi:id="Broker_SvntArtifact">
+ <name>Broker_svnt</name>
+ <source/>
+ <node/>
+ <location>Broker_svnt</location>
+ </artifact>
+ <artifact xmi:id="Broker_StubArtifact">
+ <name>Broker_stub</name>
+ <source/>
+ <node/>
+ <location>Broker_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl
new file mode 100755
index 00000000000..44cd3fa00c0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Quoter/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "DistributorNode", "BrokerNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl
new file mode 100644
index 00000000000..b5d399bda33
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+/**
+ * @file Shapes_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHAPES_BASE_IDL
+#define SHAPES_BASE_IDL
+
+#pragma ndds typesupport "Base/Shapes_BaseSupport.h"
+#pragma opendds typesupport "Base/Shapes_BaseTypeSupportC.h"
+
+#pragma DCPS_DATA_TYPE "ShapeType"
+#pragma DCPS_DATA_KEY "ShapeType color"
+
+struct ShapeType {
+ string color; //@key
+ long x;
+ long y;
+ long shapesize;
+};
+
+#pragma DCPS_DATA_TYPE "Attributes"
+#pragma DCPS_DATA_KEY "Attributes shape"
+#pragma DCPS_DATA_KEY "Attributes color"
+
+struct Attributes {
+ string shape; //@key
+ string color; //@key
+ float speed;
+};
+
+typedef sequence<ShapeType> ShapeTypeSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc
new file mode 100644
index 00000000000..5f953ca0731
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Base/Shapes_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Shapes_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Shapes_Base_stub
+ dynamicflags += SHAPES_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=SHAPES_BASE_STUB_Export \
+ -Wb,stub_export_include=Shapes_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Shapes_Base.idl
+ }
+
+ opendds_ts_flags += --export=SHAPES_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Shapes_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl
new file mode 100644
index 00000000000..be2a1a348d7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file Shapes_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHAPES_CONNECTOR_IDL_
+#define SHAPES_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Shapes_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Shapes_ConnectorE.idl"
+
+module Shapes
+{
+ module ::CCM_DDS::Typed < ::ShapeType, ::ShapeTypeSeq> ShapeTypeConn;
+ connector Shapes_Connector : ShapeTypeConn::DDS_Event
+ {
+ };
+};
+
+#endif /* SHAPES_CONNECTOR_IDL_ */
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc
new file mode 100644
index 00000000000..b35a729923c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Connector/Shapes_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Shapes_Base -l .. -o ../lib -u DDS Shapes_Connector"
+
+project(DDS_Shapes_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SHAPES_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Shapes_Connector_stub_export.h \
+ -Wb,skel_export_macro=SHAPES_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Shapes_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SHAPES_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Shapes_Connector_svnt_export.h \
+ -Wb,conn_export_macro=SHAPES_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Shapes_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Shapes_Connector.idl
+ }
+}
+
+project(DDS_Shapes_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Shapes_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=SHAPES_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Shapes_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Shapes_ConnectorE.idl
+ }
+}
+
+project(DDS_Shapes_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Shapes_Connector_lem_gen DDS_Shapes_Connector_stub DDS_Shapes_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Shapes_Connector_lem_stub
+ dynamicflags = SHAPES_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Shapes_ConnectorEC.h
+ Shapes_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_ConnectorEC.inl
+ }
+}
+
+project(DDS_Shapes_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Shapes_Connector_idl_gen DDS_Shapes_Base_stub
+ libs += DDS_Shapes_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Shapes_Connector_stub
+ dynamicflags = SHAPES_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Shapes_ConnectorC.h
+ Shapes_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_ConnectorC.inl
+ }
+}
+
+project(DDS_Shapes_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Shapes_Connector_exec
+ libs += DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAPES_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Shapes_Connector_conn.h
+ Shapes_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Shapes_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_exec DDS_Shapes_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Shapes_Connector_svnt
+ libs += DDS_Shapes_Connector_stub \
+ DDS_Shapes_Connector_lem_stub \
+ DDS_Shapes_Base_stub \
+ DDS_Shapes_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAPES_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ConnectorS.cpp
+ Shapes_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Shapes_ConnectorS.h
+ Shapes_Connector_svnt.h
+ Shapes_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Shapes_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl
new file mode 100644
index 00000000000..527ea2a356b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Shapes_Connector.idl"
+
+module Shapes
+{
+ component Receiver
+ {
+ port ShapeTypeConn::DDS_Listen info_out;
+ port ShapeTypeConn::DDS_Get info_get;
+ attribute unsigned long rate;
+ attribute boolean get_data; //if true, get_one and get_all are invoked
+ attribute boolean read_data;//if true, read_one and read_all are invoked.
+ attribute boolean raw_listen; //if true, raw listen port is enabled.
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc
new file mode 100644
index 00000000000..083de706195
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver.mpc
@@ -0,0 +1,139 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l ../lib -o ../lib -u DDS -b dds4ccm_base Receiver"
+
+project(DDS_Shapes_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Shapes_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Shapes_Receiver.idl
+ }
+}
+
+project(DDS_Shapes_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Shapes_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Shapes_ReceiverE.idl
+ }
+}
+
+project(DDS_Shapes_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Shapes_Receiver_lem_gen DDS_Shapes_Receiver_stub DDS_Shapes_Connector_stub DDS_Shapes_Base_stub
+ libs += Receiver_stub DDS_Shapes_Connector_stub DDS_Shapes_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Shapes_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_ReceiverEC.inl
+ }
+}
+
+project(DDS_Shapes_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Shapes_Receiver_idl_gen DDS_Shapes_Connector_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_lem_gen
+ libs += DDS_Shapes_Connector_stub DDS_Shapes_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Shapes_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_ReceiverC.inl
+ }
+}
+
+project(DDS_Shapes_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Shapes_Receiver_lem_stub DDS_Shapes_Receiver_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Shapes_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Shapes_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Shapes_Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Shapes_Receiver_exec DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt Receiver_exec DDS_Shapes_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_ReceiverS.cpp
+ Shapes_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Shapes_ReceiverS.h
+ Shapes_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Shapes_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp
new file mode 100644
index 00000000000..bf24d8f2014
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.cpp
@@ -0,0 +1,370 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Shapes_Receiver_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_Shapes_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ if (pulse_callback_.read_data ())
+ {
+ this->pulse_callback_.read_one();
+ this->pulse_callback_.read_all();
+ }
+ if (pulse_callback_.get_data ())
+ {
+ this->pulse_callback_.get_one ();
+ this->pulse_callback_.get_all ();
+ }
+ return 0;
+ }
+
+ //============================================================
+ // ShapeType_Listener_exec_i
+ //============================================================
+ ShapeType_Listener_exec_i::ShapeType_Listener_exec_i (void)
+ {
+ }
+
+ ShapeType_Listener_exec_i::~ShapeType_Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ShapeType_Listener
+ void
+ ShapeType_Listener_exec_i::on_many_data (
+ const ShapeTypeSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ void
+ ShapeType_Listener_exec_i::on_one_data (
+ const ShapeType & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("ShapeType_Listener: ")
+ ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"),
+ an_instance.color.in (),
+ an_instance.x,
+ an_instance.y,
+ an_instance.shapesize));
+ }
+
+ //============================================================
+ // PortStatusListener_exec_i
+ //============================================================
+ PortStatusListener_exec_i::PortStatusListener_exec_i (void)
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (0),
+ get_data_ (true),
+ read_data_ (true),
+ raw_listen_ (false)
+
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_one (void)
+ {
+ ShapeType shape_info;
+ shape_info.color = "GREEN";
+ ::CCM_DDS::ReadInfo readinfo;
+
+ try
+ {
+ this->reader_->read_one_last (shape_info, readinfo, ::DDS::HANDLE_NIL);
+ time_t tim = readinfo.source_timestamp.sec;
+ tm* time = localtime(&tim);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ONE Read_Info ")
+ ACE_TEXT (" -> date = %02d:%02d:%02d.%d\n"),
+ time->tm_hour,
+ time->tm_min,
+ time->tm_sec,
+ readinfo.source_timestamp.nanosec));
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ON shape info : ")
+ ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"),
+ shape_info.color.in (),
+ shape_info.x,
+ shape_info.y,
+ shape_info.shapesize));
+ }
+ catch(CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ShapeType_Read_One: ")
+ ACE_TEXT ("no shape_info receieved\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ ShapeTypeSeq_var shape_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ this->reader_->read_all(shape_infos.out(), readinfoseq.out());
+ for(unsigned int i = 0; i < readinfoseq->length(); ++i)
+ {
+ time_t tim = readinfoseq[i].source_timestamp.sec;
+ tm* time = localtime(&tim);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date = %02d:%02d:%02d.%d\n"),
+ time->tm_hour,
+ time->tm_min,
+ time->tm_sec,
+ readinfoseq[i].source_timestamp.nanosec));
+ }
+ for(CORBA::ULong i = 0; i < shape_infos->length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL Shape Info : ")
+ ACE_TEXT ("Number <%d> : received shape_info for <%C> at %u:%u:%u\n"),
+ i,
+ shape_infos[i].color.in (),
+ shape_infos[i].x,
+ shape_infos[i].y,
+ shape_infos[i].shapesize));
+ }
+ }
+
+ void
+ Receiver_exec_i::get_one (void)
+ {
+ ShapeType_var shape_info;
+ ::CCM_DDS::ReadInfo_var readinfo;
+
+ try
+ {
+ if (this->getter_->get_one (shape_info.out (), readinfo.out ()))
+ {
+ time_t tim = readinfo->source_timestamp.sec;
+ tm* time = localtime(&tim);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE ReadInfo -> ")
+ ACE_TEXT ("date = %02d:%02d:%02d.%d\n"),
+ time->tm_hour,
+ time->tm_min,
+ time->tm_sec,
+ readinfo->source_timestamp.nanosec));
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE ShapeType : ")
+ ACE_TEXT ("received shape_info for <%C> at %u:%u:%u\n"),
+ shape_info->color.in (),
+ shape_info->x,
+ shape_info->y,
+ shape_info->shapesize));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("GET_ONE No data available for <%C>\n"),
+ shape_info->color.in ()));
+ }
+ }
+ catch(CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ShapeType_Read_One: no shape_info receieved\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::get_all (void)
+ {
+ }
+
+ // Component attributes.
+ ::CORBA::ULong
+ Receiver_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Receiver_exec_i::rate (
+ ::CORBA::ULong rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::Boolean
+ Receiver_exec_i::get_data (void)
+ {
+ return this->get_data_;
+ }
+
+ void
+ Receiver_exec_i::get_data (
+ ::CORBA::Boolean get_data)
+ {
+ this->get_data_ = get_data;
+ }
+
+ ::CORBA::Boolean
+ Receiver_exec_i::read_data (void)
+ {
+ return this->read_data_;
+ }
+
+ void
+ Receiver_exec_i::read_data (
+ ::CORBA::Boolean read_data)
+ {
+ this->read_data_ = read_data;
+ }
+
+ ::CORBA::Boolean
+ Receiver_exec_i::raw_listen (void)
+ {
+ return this->raw_listen_;
+ }
+
+ void
+ Receiver_exec_i::raw_listen (
+ ::CORBA::Boolean raw_listen)
+ {
+ this->raw_listen_ = raw_listen;
+ }
+
+ // Port operations.
+ ::Shapes::ShapeTypeConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new ShapeType RAW listener\n")));
+ return new ShapeType_Listener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Shapes::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ if (this->read_data ())
+ {
+ this->reader_ = this->context_->get_connection_info_out_data ();
+ }
+ if (this->get_data ())
+ {
+ this->getter_ = this->context_->get_connection_info_get_fresh_data ();
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+
+ lc->mode (this->raw_listen_ ? ::CCM_DDS::ONE_BY_ONE : ::CCM_DDS::NOT_ENABLED);
+
+ // calculate the interval time
+ long const usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(0, usec),
+ ACE_Time_Value(0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Shapes_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h
new file mode 100644
index 00000000000..f98506554bb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Receiver/Shapes_Receiver_exec.h
@@ -0,0 +1,151 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Shapes_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Shapes_Receiver_Impl
+{
+ class Receiver_exec_i;
+ /**
+ * @class reader activity generator
+ *
+ * @brief an active object used by Receiver to perform a periodical read action
+ *
+ */
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ Receiver_exec_i &pulse_callback_;
+
+ };
+
+ //============================================================
+ // ShapeType_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ShapeType_Listener_exec_i
+ : public virtual ::Shapes::ShapeTypeConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ShapeType_Listener_exec_i (void);
+ virtual ~ShapeType_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ShapeType & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ShapeTypeSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ };
+
+ class RECEIVER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (void);
+ virtual ~PortStatusListener_exec_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ void read_one (void);
+ void read_all (void);
+ void get_one (void);
+ void get_all (void);
+
+ // Component attributes.
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+ virtual ::CORBA::Boolean get_data (void);
+
+ virtual void get_data (::CORBA::Boolean get_data);
+
+ virtual ::CORBA::Boolean read_data (void);
+
+ virtual void read_data (::CORBA::Boolean read_data);
+
+ virtual ::CORBA::Boolean raw_listen (void);
+
+ virtual void raw_listen (::CORBA::Boolean raw_listen);
+
+ // Port operations.
+ virtual ::Shapes::ShapeTypeConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Shapes::CCM_Receiver_Context_var context_;
+ ::Shapes::ShapeTypeConn::Reader_var reader_;
+ ::Shapes::ShapeTypeConn::Getter_var getter_;
+
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+ ::CORBA::Boolean get_data_, read_data_, raw_listen_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Shape_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl
new file mode 100644
index 00000000000..f6b3622d888
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.idl
@@ -0,0 +1,28 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_SHAPES_SENDER_IDL
+#define DDS_SHAPES_SENDER_IDL
+
+#include "Connector/Shapes_Connector.idl"
+
+module Shapes
+{
+ component Sender
+ {
+ port ShapeTypeConn::DDS_Write info_write;
+ attribute unsigned long rate;
+ attribute unsigned short max_x;
+ attribute unsigned short max_y;
+ attribute unsigned short max_size;
+ attribute boolean resize_shape;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc
new file mode 100644
index 00000000000..c03bbe91e4a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Shapes_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Shapes_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Shapes_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Shapes_Sender.idl
+ }
+}
+
+project(DDS_Shapes_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Shapes_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Shapes_SenderE.idl
+ }
+}
+
+project(DDS_Shapes_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Shapes_Sender_lem_gen DDS_Shapes_Sender_stub DDS_Shapes_Base_stub
+ libs += DDS_Shapes_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_SenderEC.cpp
+ }
+
+ Header_Files {
+ Shapes_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_SenderEC.inl
+ }
+}
+
+project(DDS_Shapes_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Shapes_Sender_idl_gen DDS_Shapes_Base_stub DDS_Shapes_Connector_stub
+ libs += DDS_Shapes_Base_stub DDS_Shapes_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_SenderC.cpp
+ }
+
+ Header_Files {
+ Shapes_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Shapes_SenderC.inl
+ }
+}
+
+project(DDS_Shapes_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Shapes_Sender_lem_stub DDS_Shapes_Sender_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Shapes_Base_stub DDS_Shapes_Connector_lem_stub DDS_Shapes_Connector_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Shapes_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Shapes_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Shapes_Base_stub DDS_Shapes_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Shapes_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_Shapes_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Shapes_Connector_stub DDS_Shapes_Connector_svnt DDS_Shapes_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Shapes_SenderS.cpp
+ Shapes_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Shapes_SenderS.h
+ Shapes_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Shapes_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp
new file mode 100644
index 00000000000..a1212c54be8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.cpp
@@ -0,0 +1,285 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Shapes_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_Shapes_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ pulse_Generator::~pulse_Generator ()
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ max_x_ (100),
+ max_y_ (100),
+ max_size_ (25),
+ resize_ (false),
+ x_increasing_ (false),
+ y_increasing_ (false),
+ size_increasing_ (false)
+ {
+ square_ = new ShapeType;
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if (this->x_increasing_)
+ {
+ ++square_->x;
+ this->x_increasing_ = square_->x + 1 <= this->max_x_;
+ }
+ else
+ {
+ --square_->x;
+ this->x_increasing_ = square_->x - 1 < 0;
+ }
+ if (this->y_increasing_)
+ {
+ ++square_->y;
+ this->y_increasing_ = square_->y + 1 <= this->max_y_;
+ }
+ else
+ {
+ --square_->y;
+ this->y_increasing_ = square_->y - 1 < 0;
+ }
+ if (resize_shape ())
+ {
+ if (this->size_increasing_)
+ {
+ ++square_->shapesize;
+ this->size_increasing_ = square_->shapesize + 1 <= this->max_size_;
+ }
+ else
+ {
+ --square_->shapesize;
+ this->size_increasing_ = square_->shapesize - 1 < 0;
+ }
+ }
+ try
+ {
+ this->writer_->write_one (*square_, this->instance_handle_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("UPDATED Shape_info for <%C> %u:%u:%u\n"),
+ square_->color.in (),
+ square_->x,
+ square_->y,
+ square_->shapesize));
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Shape_info for <%C> not updated: <%C> didn't exist.\n"),
+ square_->color.in (), square_->color.in ()));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Internal Error while updating Shape_info for <%C>.\n"),
+ square_->color.in ()));
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // calculate the interval time
+ long const usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ try
+ {
+ this->writer_->unregister_instance (*this->square_, this->instance_handle_);
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Shape_info for <%C> not deleted: <%C> didn't exist.\n"),
+ square_->color.in (), square_->color.in ()));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while deleting Shape_info for <%C>.\n"),
+ square_->color.in ()));
+ }
+ delete this->ticker_;
+ delete this->square_;
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::ULong rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::max_x (void)
+ {
+ return this->max_x_;
+ }
+
+ void
+ Sender_exec_i::max_x (::CORBA::UShort max_x)
+ {
+ this->max_x_ = max_x;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::max_y (void)
+ {
+ return this->max_y_;
+ }
+
+ void
+ Sender_exec_i::max_y (::CORBA::UShort max_y)
+ {
+ this->max_y_ = max_y;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::max_size (void)
+ {
+ return this->max_size_;
+ }
+
+ void
+ Sender_exec_i::max_size (::CORBA::UShort max_size)
+ {
+ this->max_size_ = max_size;
+ }
+
+ void
+ Sender_exec_i::resize_shape (::CORBA::Boolean resize)
+ {
+ this->resize_ = resize;
+ }
+
+ ::CORBA::Boolean
+ Sender_exec_i::resize_shape ()
+ {
+ return this->resize_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Shapes::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+ square_->x = ACE_OS::rand () % this->max_x_;
+ square_->y = ACE_OS::rand () % this->max_y_;
+ square_->shapesize = max_size_;
+ square_->color = CORBA::string_dup("GREEN");
+
+ //Register shape with dds.
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("REGISTER Shape_info for <%C> %u:%u:%u\n"),
+ square_->color.in (),
+ square_->x,
+ square_->y,
+ square_->shapesize));
+ try
+ {
+ this->instance_handle_ = this->writer_->register_instance (*square_);
+ }
+ catch (const CCM_DDS::AlreadyCreated& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Shape_info for <%C> already created.\n"),
+ square_->color.in ()));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating Shape_info for <%C>.\n"),
+ square_->color.in ()));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Shape_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h
new file mode 100644
index 00000000000..9fa93f905a4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/Sender/Shapes_Sender_exec.h
@@ -0,0 +1,108 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+#include "Shapes_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Shapes_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator : public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ virtual ~pulse_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+ virtual ::CORBA::UShort max_x (void);
+
+ virtual void max_x (::CORBA::UShort max_x);
+
+ virtual ::CORBA::UShort max_y (void);
+
+ virtual void max_y (::CORBA::UShort max_y);
+
+ virtual ::CORBA::UShort max_size (void);
+
+ virtual void max_size (::CORBA::UShort max_size);
+
+ virtual void resize_shape (::CORBA::Boolean resize);
+
+ virtual ::CORBA::Boolean resize_shape (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ Shapes::ShapeTypeConn::Writer_var writer_;
+
+ pulse_Generator * ticker_;
+ ::Shapes::CCM_Sender_Context_var context_;
+ CORBA::ULong rate_;
+ CORBA::UShort max_x_;
+ CORBA::UShort max_y_;
+ CORBA::UShort max_size_;
+ CORBA::Boolean resize_;
+
+ bool x_increasing_;
+ bool y_increasing_;
+ bool size_increasing_;
+
+ ShapeType* square_;
+
+ ::DDS::InstanceHandle_t instance_handle_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Shape_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp
new file mode 100644
index 00000000000..afe644d93d1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/Plan.cdp
@@ -0,0 +1,464 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Shapes_Depl_1</label>
+ <UUID>Shapes_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shapes_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shapes_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Shapes_ConnectorComponentImplementation">
+ <name>Shapes_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Shapes_Connector_ExecArtifact" />
+ <artifact xmi:idref="Shapes_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shapes_Shapes_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shapes_Shapes_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shapes_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shapes_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shape_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Shapes_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>1</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>get_data</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>false</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>read_data</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>false</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>raw_listen</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Shapes_ConnectorComponentInstance">
+ <name>Shapes_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Shapes_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Square</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Shapes_ConnectorComponentInstance2">
+ <name>Shapes_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Shapes_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Square</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>max_x</name>
+ <value>
+ <type>
+ <kind>tk_short</kind>
+ </type>
+ <value>
+ <short>225</short>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>max_y</name>
+ <value>
+ <type>
+ <kind>tk_short</kind>
+ </type>
+ <value>
+ <short>250</short>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>max_size</name>
+ <value>
+ <type>
+ <kind>tk_short</kind>
+ </type>
+ <value>
+ <short>25</short>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>resize_shape</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Shapes_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Shapes_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Shapes_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Shapes_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Shapes_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Shapes_Connector_ExecArtifact">
+ <name>Shapes_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Shapes_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Shapes_Connector_SvntArtifact">
+ <name>Shapes_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Shapes_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Shapes_Connector_StubArtifact">
+ <name>Shapes_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Shapes_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl
new file mode 100755
index 00000000000..6ab7070d719
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Shapes/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl b/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl
new file mode 100644
index 00000000000..1b5bdb89f1b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_dds.idl
@@ -0,0 +1,262 @@
+// $Id$
+
+#ifndef CCM_DDS_BASE_IDL
+#define CCM_DDS_BASE_IDL
+
+#include <Components.idl>
+#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl"
+#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl"
+#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl"
+#include "connectors/dds4ccm/idl/dds4ccm_Connector.idl"
+
+module CCM_DDS
+{
+ module Typed <typename T, sequence<T> TSeq> {
+ // Gathers all the constructs that are dependent on the data type (T),
+ // either directly -- interfaces making use of T or TSeq,
+ // or indirectly -- porttypes using or providing those intefaces.
+ // TSeq is passed as a second parameter to avoid creating a new sequence type.
+
+ // -------------------------------------
+ // Interfaces to be 'used' or 'provided'
+ // -------------------------------------
+
+ // Data access - publishing side
+ // -----------------------------
+
+ // -- InstanceHandle Manager
+ abstract interface InstanceHandleManager {
+ DDS::InstanceHandle_t register_instance (in T datum)
+ raises (InternalError);
+ void unregister_instance (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (InternalError);
+ };
+
+ // -- Writer: when the instance lifecycle is not a concern
+ local interface Writer : InstanceHandleManager {
+ void write_one (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (InternalError);
+ void write_many (in TSeq data)
+ raises (InternalError);
+ attribute boolean is_coherent_write; // FALSE by default
+ // behavior
+ // ---------
+ // - the handle is exactly managed as by DDS (cf. DDS spec for more details)
+ // - attempt to write_many is stopped at the first error
+ // - if is_coherent_write, DDS write orders issued by a write_many
+ // are placed between begin/end coherent updates (even if an error occurs)
+ };
+
+ // -- Updater: when the instance lifecycle is a concern
+ local interface Updater : InstanceHandleManager {
+ void create_one (in T datum)
+ raises (AlreadyCreated,
+ InternalError);
+ void update_one (in T datum, in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ void delete_one (in T datum,in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+
+ void create_many (in TSeq data)
+ raises (AlreadyCreated,
+ InternalError);
+ void update_many (in TSeq data)
+ raises (NonExistent,
+ InternalError);
+ void delete_many (in TSeq data)
+ raises (NonExistent,
+ InternalError);
+
+ readonly attribute boolean is_global_scope; // FALSE by default
+ attribute boolean is_coherent_write; // FALSE by default
+
+ // behavior
+ // --------
+ // - the handle is exactly managed as by DDS (cf. DDS spec for more details)
+ // - exceptions AlreadyCreated or NonExistent are raised at least if a local
+ // conflict exists; in addition if is_global_scope is true, the test on
+ // existence attempts to take into account the instances created outside
+ // - note: this check requires to previously attempt to read (not free)
+ // - note: this check is not 100% guaranteed as a creation or a deletion
+ // may occur in the short time between the check and the DDS order
+ // - For *-many operations:
+ // - global check is performed before actual write or dispose
+ // (in case of error, all the erroneous instances are reported
+ // in the exception)
+ // - attempt to DDS write or dispose is stopped at the first error
+ // - if is_coherent_write, DDS orders resulting from a *_many operation
+ // are placed between begin/end coherent updates (even if an error
+ // occurs)
+ };
+
+ // Data access - subscribing side
+ // ------------------------------
+
+ // -- Reader: to simply access to the available data (no wait)
+ local interface Reader {
+ void read_last (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_all (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_one_last (inout T datum, out ReadInfo info,
+ in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ void read_one_all (in T datum, out TSeq data, out ReadInfoSeq infos,
+ in DDS::InstanceHandle_t instance_handle)
+ raises (NonExistent,
+ InternalError);
+ attribute QueryFilter filter
+ setraises (InternalError);
+ // behavior
+ // --------
+ // - read operations are performed with the following parameters
+ // - READ or NO_READ
+ // - NEW or NOT_NEW
+ // - ALIVE
+ // - through the query as specified in the filter ("" means no query)
+ // - data returned:
+ // - read_last returns for each living instance, its last sample
+ // - read_all returns all the samples of all instances
+ // ordered by instance first and then by sample
+ // - read_one_last returns the last sample of the given instance
+ // - read_one_all returns all the samples for the given instance
+ // - read_one operations use the instance_handle the same way
+ // the Writer or Updater *_one operations do
+ };
+
+ // -- Getter: to get new data (and wait for)
+ local interface Getter {
+ boolean get_one (out T datum, out ReadInfo info)
+ raises (InternalError);
+ boolean get_many (out TSeq data, out ReadInfoSeq infos)
+ raises (InternalError);
+ attribute DDS::Duration_t time_out;
+ attribute DataNumber_t max_delivered_data; // default 0 (no limit)
+ // behavior
+ // --------
+ // - get operations are performed with the following parameters
+ // - NO_READ
+ // - NEW or NOT_NEW
+ // - ALIVE or NOT_ALIVE
+ // - through the query as specified in the associated Reader
+ // - within the time limit specified in time_out
+ // - all operations returns TRUE if data are provided
+ // or FALSE if time-out occurred
+ // - data returned:
+ // - get_one returns each read sample one by one
+ // - get_many returns all available samples within the
+ // max_delivered_data limit
+ };
+
+ // -- Listener: similar to a Getter but in push mode
+ local interface Listener {
+ void on_one_data (in T datum, in ReadInfo info);
+ void on_many_data (in TSeq data, in ReadInfoSeq infos);
+ // behavior
+ // --------
+ // - on_one_data() trigered is the mode of the associated listener control
+ // is ONE_BY_ONE (then similar to a get_one(), except that in push mode
+ // instead of pull mode)
+ // - on_many_data() triggered if the listener mode is MANY_BY_MANY (then
+ // similar to get_many() but in push mode)
+ // - query filter (if any) in the associated Reader
+ };
+
+ // -- StateListener: listener to be notified based on the instance lifecycle
+ local interface StateListener {
+ void on_creation (in T datum, in ReadInfo info);
+ void on_one_update (in T datum, in ReadInfo info);
+ void on_many_updates (in TSeq data, in ReadInfoSeq infos);
+ void on_deletion (in T datum, in ReadInfo info);
+ // behavior
+ // --------
+ // - no operations are trigerred if the mode of the associated listener
+ // control is NOT_ENABLED
+ // - on_creation() is triggered if the instance is considered as new in the
+ // component scope; note that in case there is a filter and the attribute
+ // is_filter_interpreted of the listener control is TRUE, this gathers also
+ // the case when the instance is filtered-in.
+ // - on_delation() is triggered if the instance is no more existing; note
+ // that in case there is a filter and the attribute
+ // is_filter_interpreted of the listener control is TRUE, this gathers
+ // also the case when the instance is filtered-out
+ // - on_one_update() is trigrered if neither on_creation() nor on_deletion()
+ // are triggered and the mode of the associated listener control is
+ // ONE_BY_ONE
+ // - on_many_updates()is triggered if neither on_creation() nor on_deletion()
+ // are triggered and the mode of the associated listener control is
+ // MANY_BY_MANY; the number of returned samples is within the limits of
+ // max_delivered_data attribute of the associated listener control.
+ // - query filter (if any) in the associated Reader
+ };
+
+
+ // ---------
+ // DDS Ports
+ // ---------
+
+ porttype DDS_Write {
+ uses Writer data;
+ uses DDS::DataWriter dds_entity;
+ };
+
+ porttype DDS_Update {
+ uses Updater data;
+ uses DDS::DataWriter dds_entity;
+ };
+
+ porttype DDS_Read {
+ uses Reader data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_Get {
+ uses Reader data;
+ uses Getter fresh_data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_Listen {
+ uses Reader data;
+ uses DataListenerControl data_control;
+ provides Listener data_listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ porttype DDS_StateListen {
+ uses Reader data;
+ uses StateListenerControl data_control;
+ provides StateListener data_listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+
+ // ----------------------------
+ // Connectors
+ // (Correspond to DDS patterns)
+ // ----------------------------
+
+ connector DDS_State : DDS_TopicBase {
+ mirrorport DDS_Update observable;
+ mirrorport DDS_Read passive_observer;
+ mirrorport DDS_Get pull_observer;
+ mirrorport DDS_Listen push_observer;
+ mirrorport DDS_StateListen push_state_observer;
+ };
+
+ connector DDS_Event : DDS_TopicBase {
+ mirrorport DDS_Write supplier;
+ mirrorport DDS_Get pull_consumer;
+ mirrorport DDS_Listen push_consumer;
+ };
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h
new file mode 100644
index 00000000000..9b7875c02ea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsC.h
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * http://doc.ece.uci.edu/
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:134
+
+#ifndef _TAO_IDL_CCM_DDS_H
+#define _TAO_IDL_CCM_DDS_H
+
+#include /**/ "ace/pre.h"
+
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include /**/ "dds4ccm_stub_export.h"
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "tao/ORB.h"
+#include "tao/UserException.h"
+#include "tao/Basic_Types.h"
+#include "tao/String_Manager_T.h"
+#include "tao/Sequence_T.h"
+#include "tao/Seq_Var_T.h"
+#include "tao/Seq_Out_T.h"
+#include "tao/VarOut_T.h"
+#include /**/ "tao/Versioned_Namespace.h"
+
+#include "ComponentsC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlEC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlEC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerEC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerEC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorC.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorEC.h"
+#include "connectors/dds4ccm/idl/dds_rtf2_dcpsEC.h"
+#include "dds_rtf2_dcpsC.h"
+
+#if defined (TAO_EXPORT_MACRO)
+#undef TAO_EXPORT_MACRO
+#endif
+#define TAO_EXPORT_MACRO DDS4CCM_STUB_Export
+
+// TAO_IDL - Generated from
+// c:\ace\latest\ace_wrappers\tao\tao_idl\be\be_visitor_module/module_ch.cpp:49
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h
new file mode 100644
index 00000000000..2a6dce1392d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/ccm_ddsS.h
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * http://doc.ece.uci.edu/
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:471
+
+#ifndef _TAO_IDL_CCM_DDSS_H
+#define _TAO_IDL_CCM_DDSS_H
+
+#include /**/ "ace/pre.h"
+
+#include "dds4ccm_BaseC.h"
+#include "dds_rtf2_dcpsS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControlS.h"
+#include "connectors/dds4ccm/idl/dds4ccm_StateListenerControlS.h"
+#include "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerS.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerS.h"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorS.h"
+
+#include /**/ "dds4ccm_skel_export.h"
+
+#include /**/ "ace/post.h"
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl
new file mode 100644
index 00000000000..0d6a40c3bfd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl
@@ -0,0 +1,69 @@
+// $Id$
+/**
+ * @file dds4ccm_Base.idl
+ *
+ */
+
+#ifndef DDS4CCM_BASE_IDL3
+#define DDS4CCM_BASE_IDL3
+
+#include "dds_rtf2_dcps.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_BaseE.idl"
+
+module CCM_DDS
+{
+ typedef unsigned long DataNumber_t; // count or index of data
+ typedef sequence<DataNumber_t> DataNumberSeq;
+ const DataNumber_t UNLIMITED = 0;
+
+ enum AccessStatus {
+ FRESH_INFO,
+ ALREADY_SEEN
+ };
+
+ enum InstanceStatus {
+ INSTANCE_CREATED,
+ INSTANCE_FILTERED_IN,
+ INSTANCE_UPDATED,
+ INSTANCE_FILTERED_OUT,
+ INSTANCE_DELETED
+ };
+
+ struct ReadInfo {
+ DDS::InstanceHandle_t instance_handle;
+ DDS::Time_t source_timestamp;
+ AccessStatus access_status;
+ InstanceStatus instance_status;
+ };
+ typedef sequence<ReadInfo> ReadInfoSeq;
+
+ struct QueryFilter {
+ string query;
+ ::DDS::StringSeq query_parameters;
+ };
+
+ enum ListenerMode {
+ NOT_ENABLED,
+ ONE_BY_ONE,
+ MANY_BY_MANY
+ };
+
+ exception AlreadyCreated {
+ DataNumberSeq indexes; // of the erroneous
+ };
+
+ exception NonExistent{
+ DataNumberSeq indexes; // of the erroneous
+ };
+
+ exception InternalError{
+ DDS::ReturnCode_t error_code;
+ DataNumber_t index; // of the erroneaous
+ };
+
+ exception NonChangeable {
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl
new file mode 100644
index 00000000000..54e27004051
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+#ifndef DDS4CCM_CONNECTOR_IDL
+#define DDS4CCM_CONNECTOR_IDL
+
+#include <Components.idl>
+#include "connectors/dds4ccm/idl/dds4ccm_Base.idl"
+#include "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_ConnectorE.idl"
+
+module CCM_DDS
+{
+ connector DDS_Base {
+ uses ConnectorStatusListener error_listener;
+ attribute DDS::DomainId_t domain_id
+ setraises (NonChangeable);
+ attribute string qos_profile
+ setraises (NonChangeable);
+ };
+ connector DDS_TopicBase : DDS_Base {
+ attribute string topic_name
+ setraises (NonChangeable);
+ attribute DDS::StringSeq key_fields
+ setraises (NonChangeable);
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl
new file mode 100644
index 00000000000..fd0e13244c9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+/**
+ * @file dds4ccm_ConnectorStatusListener.idl
+ *
+ */
+
+#ifndef DDS4CCM_CONNECTORSTATUSLISTNER_IDL3
+#define DDS4CCM_CONNECTORSTATUSLISTNER_IDL3
+
+#include "connectors/dds4ccm/idl/dds4ccm_Base.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListenerE.idl"
+
+module CCM_DDS
+{
+ local interface ConnectorStatusListener {
+ // status that are relevant system-wide
+ void on_inconsistent_topic(in DDS::Topic the_topic,
+ in DDS::InconsistentTopicStatus status);
+ void on_requested_incompatible_qos(in DDS::DataReader the_reader,
+ in DDS::RequestedIncompatibleQosStatus status);
+ void on_sample_rejected(in DDS::DataReader the_reader,
+ in DDS::SampleRejectedStatus status);
+ void on_offered_deadline_missed(in DDS::DataWriter the_writer,
+ in DDS::OfferedDeadlineMissedStatus status);
+ void on_offered_incompatible_qos(in DDS::DataWriter the_writer,
+ in DDS::OfferedIncompatibleQosStatus status);
+ void on_unexpected_status (in DDS::Entity the_entity,
+ in DDS::StatusKind status_kind);
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl
new file mode 100644
index 00000000000..14e1cbe9702
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file dds4ccm_DataListenerControl.idl
+ *
+ */
+
+#ifndef DDS4CCM_LISTENERCONTROL_IDL3
+#define DDS4CCM_LISTENERCONTROL_IDL3
+
+#include "connectors/dds4ccm/idl/dds4ccm_Base.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_DataListenerControlE.idl"
+
+module CCM_DDS
+{
+ local interface DataListenerControl {
+ attribute ListenerMode mode;
+ attribute DataNumber_t max_delivered_data;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl
new file mode 100644
index 00000000000..713a7fb1f2c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl
@@ -0,0 +1,23 @@
+// $Id$
+/**
+ * @file dds4ccm_PortStatusListener.idl
+ */
+
+#ifndef DDS4CCM_PORTSTATUSLISTNER_IDL3
+#define DDS4CCM_PORTSTATUSLISTNER_IDL3
+
+#include "connectors/dds4ccm/idl/dds4ccm_Base.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_PortStatusListenerE.idl"
+
+module CCM_DDS
+{
+ local interface PortStatusListener {
+ void on_requested_deadline_missed(in DDS::DataReader the_reader,
+ in DDS::RequestedDeadlineMissedStatus status);
+ void on_sample_lost(in DDS::DataReader the_reader,
+ in DDS::SampleLostStatus status);
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl
new file mode 100644
index 00000000000..fe22878cb47
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListenerControl.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file dds4ccm_StateListenerControl.idl
+ */
+
+#ifndef DDS4CCM_STATELISTENERCONTROL_IDL
+#define DDS4CCM_STATELISTENERCONTROL_IDL
+
+#include "connectors/dds4ccm/idl/dds4ccm_DataListenerControl.idl"
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds4ccm_StateListenerControlE.idl"
+
+module CCM_DDS
+{
+ local interface StateListenerControl : DataListenerControl {
+ attribute boolean is_filter_interpreted;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_lem_stub.mpc b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_lem_stub.mpc
new file mode 100644
index 00000000000..04a490c2635
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_lem_stub.mpc
@@ -0,0 +1,57 @@
+// $Id$
+
+project (DDS4CCM_lem_gen) : dds4ccm, ciaoidldefaults {
+ custom_only = 1
+ after += DDS4CCM_idl_gen
+ idlflags += -I$(CIAO_ROOT)/connectors \
+ -Wb,stub_export_macro=DDS4CCM_LEM_STUB_Export \
+ -Wb,stub_export_include=dds4ccm_lem_stub_export.h -SS
+
+ IDL_Files {
+ idlflags += -Gxhst
+ dds_rtf2_dcpsE.idl
+ }
+
+ IDL_Files {
+ dds4ccm_BaseE.idl
+ dds4ccm_PortStatusListenerE.idl
+ dds4ccm_DataListenerControlE.idl
+ dds4ccm_ConnectorStatusListenerE.idl
+ dds4ccm_StateListenerControlE.idl
+ dds4ccm_ConnectorE.idl
+ dds_rtf2_dcps_i_handleE.idl
+ }
+}
+
+project (DDS4CCM_lem_stub) : dds4ccm, ccm_lem_stub, ciaolib_with_idl, ciao_output, taolib, valuetype, ifr_client {
+ after += DDS4CCM_stub DDS4CCM_lem_gen
+ libs += DDS4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+ sharedname = DDS4CCM_lem_stub
+ dynamicflags += DDS4CCM_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ dds4ccm_BaseEC.cpp
+ dds_rtf2_dcpsEC.cpp
+ dds4ccm_PortStatusListenerEC.cpp
+ dds4ccm_DataListenerControlEC.cpp
+ dds4ccm_ConnectorStatusListenerEC.cpp
+ dds4ccm_StateListenerControlEC.cpp
+ dds4ccm_ConnectorEC.cpp
+ dds_rtf2_dcps_i_handleEC.cpp
+ }
+
+ Header_Files {
+ dds4ccm_BaseEC.h
+ dds_rtf2_dcpsEC.h
+ dds4ccm_PortStatusListenerEC.h
+ dds4ccm_DataListenerControlEC.h
+ dds4ccm_ConnectorStatusListenerEC.h
+ dds4ccm_StateListenerControlEC.h
+ dds4ccm_lem_stub_export.h
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_skel.mpc b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_skel.mpc
new file mode 100644
index 00000000000..a3fe6f44635
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_skel.mpc
@@ -0,0 +1,30 @@
+// $Id$
+
+project (DDS4CCM_skel) : dds4ccm, ciaolib_with_idl, ciao_output, taolib, portableserver, ciao_servant {
+ after += DDS4CCM_lem_stub
+ libs += DDS4CCM_lem_stub DDS4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+
+ dynamicflags += DDS4CCM_SKEL_BUILD_DLL
+ IDL_Files {
+ }
+
+ Header_Files {
+ dds4ccm_BaseS.h
+ dds4ccm_PortStatusListenerS.h
+ dds4ccm_DataListenerControlS.h
+ dds4ccm_StateListenerControlS.h
+ dds4ccm_ConnectorStatusListenerS.h
+ dds_rtf2_dcpsS.h
+ }
+
+ Source_Files {
+ dds_rtf2_dcpsS.cpp
+ dds4ccm_PortStatusListenerS.cpp
+ dds4ccm_DataListenerControlS.cpp
+ dds4ccm_ConnectorStatusListenerS.cpp
+ dds4ccm_ConnectorS.cpp
+ dds4ccm_StateListenerControlS.cpp
+ dds_rtf2_dcps_i_handleS.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_stub.mpc b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_stub.mpc
new file mode 100644
index 00000000000..8788f8dd6cf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_stub.mpc
@@ -0,0 +1,59 @@
+// $Id$
+
+project (DDS4CCM_idl_gen) : dds4ccm, componentidldefaults {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DDS4CCM_STUB_Export \
+ -Wb,stub_export_include=dds4ccm_stub_export.h \
+ -Wb,skel_export_macro=DDS4CCM_SKEL_Export \
+ -Wb,skel_export_include=dds4ccm_skel_export.h \
+ -I$(CIAO_ROOT)/connectors -Glem
+
+ IDL_Files {
+ idlflags += -Gxhst -Gxhsk -SS
+ dds4ccm_Base.idl
+ }
+
+ IDL_Files {
+ idlflags -= -Gxhst -Gxhsk
+ dds_rtf2_dcps.idl
+ dds_rtf2_dcps_i_handle.idl
+ dds4ccm_PortStatusListener.idl
+ dds4ccm_DataListenerControl.idl
+ dds4ccm_ConnectorStatusListener.idl
+ dds4ccm_StateListenerControl.idl
+ dds4ccm_Connector.idl
+ }
+}
+
+project (DDS4CCM_stub) : dds4ccm, ccm_stub, ciaolib_with_idl, ciao_output, taolib {
+
+ after += DDS4CCM_idl_gen
+ includes += $(CIAO_ROOT)/connectors
+
+ dynamicflags += DDS4CCM_STUB_BUILD_DLL
+ IDL_Files {
+ }
+
+ Header_Files {
+ dds4ccm_BaseC.h
+ dds4ccm_PortStatusListenerC.h
+ dds4ccm_DataListenerControlC.h
+ dds4ccm_ConnectorStatusListenerC.h
+ dds4ccm_StateListenerControlC.h
+ dds_rtf2_dcpsC.h
+ }
+
+ Source_Files {
+ dds4ccm_BaseC.cpp
+ dds4ccm_PortStatusListenerC.cpp
+ dds4ccm_DataListenerControlC.cpp
+ dds4ccm_ConnectorStatusListenerC.cpp
+ dds4ccm_StateListenerControlC.cpp
+ dds4ccm_ConnectorC.cpp
+ dds_rtf2_dcpsC.cpp
+ dds_rtf2_dcps_i_handleC.cpp
+ dds_rtf2_dcps_instance_handleC.cpp
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
new file mode 100644
index 00000000000..65f78ac10d0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
@@ -0,0 +1,1275 @@
+// $Id$
+
+#ifndef DDS_RFT2_DCPS_IDL
+#define DDS_RFT2_DCPS_IDL
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds_rtf2_dcpsE.idl"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+# include "dds/DdsDcps.idl"
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+
+#define DOMAINID_TYPE_NATIVE long
+#define HANDLE_TYPE_NATIVE long
+#define HANDLE_NIL_NATIVE 0
+#define BUILTIN_TOPIC_KEY_TYPE_NATIVE long
+
+#define TheParticipantFactory
+#define PARTICIPANT_QOS_DEFAULT
+#define TOPIC_QOS_DEFAULT
+#define PUBLISHER_QOS_DEFAULT
+#define SUBSCRIBER_QOS_DEFAULT
+#define DATAWRITER_QOS_DEFAULT
+#define DATAREADER_QOS_DEFAULT
+#define DATAWRITER_QOS_USE_TOPIC_QOS
+#define DATAREADER_QOS_USE_TOPIC_QOS
+
+#include "tao/StringSeq.pidl"
+#include "connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl"
+
+module DDS {
+ typedef long DomainId_t;
+ struct BuiltinTopicKey_t {
+ long value[3];
+ };
+ typedef long ReturnCode_t;
+ typedef long QosPolicyId_t;
+ typedef sequence<string> StringSeq;
+
+ struct Duration_t {
+ long sec;
+ unsigned long nanosec;
+ };
+
+ struct Time_t {
+ long sec;
+ unsigned long nanosec;
+ };
+
+ // ----------------------------------------------------------------------
+ // Pre-defined values
+ // ----------------------------------------------------------------------
+ //const InstanceHandle_t HANDLE_NIL = 0;
+
+ const long LENGTH_UNLIMITED = -1;
+
+ const long DURATION_INFINITE_SEC = 0x7fffffff;
+ const unsigned long DURATION_INFINITE_NSEC = 0x7fffffff;
+
+ const long DURATION_ZERO_SEC = 0;
+ const unsigned long DURATION_ZERO_NSEC = 0;
+
+ const long TIME_INVALID_SEC = -1;
+ const unsigned long TIME_INVALID_NSEC = 0xffffffff;
+
+ // ----------------------------------------------------------------------
+ // Return codes
+ // ----------------------------------------------------------------------
+ const ReturnCode_t RETCODE_OK = 0;
+ const ReturnCode_t RETCODE_ERROR = 1;
+ const ReturnCode_t RETCODE_UNSUPPORTED = 2;
+ const ReturnCode_t RETCODE_BAD_PARAMETER = 3;
+ const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = 4;
+ const ReturnCode_t RETCODE_OUT_OF_RESOURCES = 5;
+ const ReturnCode_t RETCODE_NOT_ENABLED = 6;
+ const ReturnCode_t RETCODE_IMMUTABLE_POLICY = 7;
+ const ReturnCode_t RETCODE_INCONSISTENT_POLICY = 8;
+ const ReturnCode_t RETCODE_ALREADY_DELETED = 9;
+ const ReturnCode_t RETCODE_TIMEOUT = 10;
+ const ReturnCode_t RETCODE_NO_DATA = 11;
+ const ReturnCode_t RETCODE_ILLEGAL_OPERATION = 12;
+
+ // ----------------------------------------------------------------------
+ // Status to support listeners and conditions
+ // ----------------------------------------------------------------------
+
+ typedef unsigned long StatusKind;
+ typedef unsigned long StatusMask; // bit-mask StatusKind
+
+ const StatusKind INCONSISTENT_TOPIC_STATUS = 0x0001 << 0;
+ const StatusKind OFFERED_DEADLINE_MISSED_STATUS = 0x0001 << 1;
+ const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = 0x0001 << 2;
+ const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 5;
+ const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = 0x0001 << 6;
+ const StatusKind SAMPLE_LOST_STATUS = 0x0001 << 7;
+ const StatusKind SAMPLE_REJECTED_STATUS = 0x0001 << 8;
+ const StatusKind DATA_ON_READERS_STATUS = 0x0001 << 9;
+ const StatusKind DATA_AVAILABLE_STATUS = 0x0001 << 10;
+ const StatusKind LIVELINESS_LOST_STATUS = 0x0001 << 11;
+ const StatusKind LIVELINESS_CHANGED_STATUS = 0x0001 << 12;
+ const StatusKind PUBLICATION_MATCHED_STATUS = 0x0001 << 13;
+ const StatusKind SUBSCRIPTION_MATCHED_STATUS = 0x0001 << 14;
+ const StatusKind RELIABLE_WRITER_CACHE_CHANGED_STATUS = 0x00000001 << 24;
+ const StatusKind RELIABLE_READER_ACTIVITY_CHANGED_STATUS = 0x00000001 << 25;
+
+ struct InconsistentTopicStatus {
+ long total_count;
+ long total_count_change;
+ };
+
+ struct SampleLostStatus {
+ long total_count;
+ long total_count_change;
+ };
+
+ enum SampleRejectedStatusKind {
+ NOT_REJECTED,
+ REJECTED_BY_INSTANCES_LIMIT,
+ REJECTED_BY_SAMPLES_LIMIT,
+ REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT
+ };
+
+ struct SampleRejectedStatus {
+ long total_count;
+ long total_count_change;
+ SampleRejectedStatusKind last_reason;
+ InstanceHandle_t last_instance_handle;
+ };
+
+ struct LivelinessLostStatus {
+ long total_count;
+ long total_count_change;
+ };
+
+ struct LivelinessChangedStatus {
+ long alive_count;
+ long not_alive_count;
+ long alive_count_change;
+ long not_alive_count_change;
+ InstanceHandle_t last_publication_handle;
+ };
+
+ struct OfferedDeadlineMissedStatus {
+ long total_count;
+ long total_count_change;
+ InstanceHandle_t last_instance_handle;
+ };
+
+ struct RequestedDeadlineMissedStatus {
+ long total_count;
+ long total_count_change;
+ InstanceHandle_t last_instance_handle;
+ };
+
+ struct QosPolicyCount {
+ QosPolicyId_t policy_id;
+ long count;
+ };
+
+ typedef sequence<QosPolicyCount> QosPolicyCountSeq;
+
+ struct OfferedIncompatibleQosStatus {
+ long total_count;
+ long total_count_change;
+ QosPolicyId_t last_policy_id;
+ QosPolicyCountSeq policies;
+ };
+
+ struct RequestedIncompatibleQosStatus {
+ long total_count;
+ long total_count_change;
+ QosPolicyId_t last_policy_id;
+ QosPolicyCountSeq policies;
+ };
+
+ struct PublicationMatchedStatus {
+ long total_count;
+ long total_count_change;
+ long current_count;
+ long current_count_change;
+ InstanceHandle_t last_subscription_handle;
+ };
+
+ struct SubscriptionMatchedStatus {
+ long total_count;
+ long total_count_change;
+ long current_count;
+ long current_count_change;
+ InstanceHandle_t last_publication_handle;
+ };
+
+ struct ReliableReaderActivityChangedStatus {
+ long active_count;
+ long inactive_count;
+ long active_count_change;
+ long inactive_count_change;
+ InstanceHandle_t last_instance_handle;
+ };
+
+ struct ReliableWriterCacheEventCount {
+ long total_count;
+ long total_count_change;
+ };
+
+ struct ReliableWriterCacheChangedStatus {
+ ReliableWriterCacheEventCount empty_reliable_writer_cache;
+ ReliableWriterCacheEventCount full_reliable_writer_cache;
+ ReliableWriterCacheEventCount low_watermark_reliable_writer_cache;
+ ReliableWriterCacheEventCount high_watermark_reliable_writer_cache;
+ long unacknowledged_sample_count;
+ long unacknowledged_sample_count_peak;
+ };
+
+ // ----------------------------------------------------------------------
+ // Listeners
+ // ----------------------------------------------------------------------
+
+ local interface Listener;
+ local interface Entity;
+ local interface TopicDescription;
+ local interface Topic;
+ local interface ContentFilteredTopic;
+ local interface MultiTopic;
+ local interface DataWriter;
+ local interface DataReader;
+ local interface Subscriber;
+ local interface Publisher;
+
+ typedef sequence<DataReader> DataReaderSeq;
+
+ local interface Listener {};
+
+ local interface TopicListener : Listener {
+ void on_inconsistent_topic(in Topic the_topic,
+ in InconsistentTopicStatus status);
+ };
+
+ local interface DataWriterListener : Listener {
+ void on_offered_deadline_missed(
+ in DataWriter writer,
+ in OfferedDeadlineMissedStatus status);
+ void on_offered_incompatible_qos(
+ in DataWriter writer,
+ in OfferedIncompatibleQosStatus status);
+ void on_liveliness_lost(
+ in DataWriter writer,
+ in LivelinessLostStatus status);
+ void on_publication_matched(
+ in DataWriter writer,
+ in PublicationMatchedStatus status);
+ void on_reliable_writer_cache_changed (
+ in DataWriter writer,
+ in ReliableWriterCacheChangedStatus status);
+ void on_reliable_reader_activity_changed (
+ in DataWriter writer,
+ in ReliableReaderActivityChangedStatus status);
+ };
+
+ local interface PublisherListener : DataWriterListener {
+ };
+
+ local interface DataReaderListener : Listener {
+ void on_requested_deadline_missed(
+ in DataReader the_reader,
+ in RequestedDeadlineMissedStatus status);
+ void on_requested_incompatible_qos(
+ in DataReader the_reader,
+ in RequestedIncompatibleQosStatus status);
+ void on_sample_rejected(
+ in DataReader the_reader,
+ in SampleRejectedStatus status);
+ void on_liveliness_changed(
+ in DataReader the_reader,
+ in LivelinessChangedStatus status);
+ void on_data_available(
+ in DataReader the_reader);
+ void on_subscription_matched(
+ in DataReader the_reader,
+ in SubscriptionMatchedStatus status);
+ void on_sample_lost(
+ in DataReader the_reader,
+ in SampleLostStatus status);
+ };
+
+ local interface SubscriberListener : DataReaderListener {
+ void on_data_on_readers(
+ in Subscriber the_subscriber);
+ };
+
+
+ local interface DomainParticipantListener : TopicListener,
+ PublisherListener,
+ SubscriberListener {
+ };
+
+
+ // ----------------------------------------------------------------------
+ // Conditions
+ // ----------------------------------------------------------------------
+
+ local interface Condition {
+ boolean get_trigger_value();
+ };
+
+ typedef sequence<Condition> ConditionSeq;
+
+ local interface WaitSet {
+ ReturnCode_t wait(
+ inout ConditionSeq active_conditions,
+ in Duration_t timeout);
+ ReturnCode_t attach_condition(
+ in Condition cond);
+ ReturnCode_t detach_condition(
+ in Condition cond);
+ ReturnCode_t get_conditions(
+ inout ConditionSeq attached_conditions);
+ };
+
+ local interface GuardCondition : Condition {
+ ReturnCode_t set_trigger_value(
+ in boolean value);
+ };
+
+ local interface StatusCondition : Condition {
+ StatusMask get_enabled_statuses();
+ ReturnCode_t set_enabled_statuses(
+ in StatusMask mask);
+ Entity get_entity();
+ };
+
+ // Sample states to support reads
+ typedef unsigned long SampleStateKind;
+ const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0;
+ const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1;
+
+ // This is a bit-mask SampleStateKind
+ typedef unsigned long SampleStateMask;
+ const SampleStateMask ANY_SAMPLE_STATE = 0xffff;
+
+ // View states to support reads
+ typedef unsigned long ViewStateKind;
+ const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0;
+ const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1;
+
+ // This is a bit-mask ViewStateKind
+ typedef unsigned long ViewStateMask;
+ const ViewStateMask ANY_VIEW_STATE = 0xffff;
+
+ // Instance states to support reads
+ typedef unsigned long InstanceStateKind;
+ const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0;
+ const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE = 0x0001 << 1;
+ const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2;
+
+ // This is a bit-mask InstanceStateKind
+ typedef unsigned long InstanceStateMask;
+ const InstanceStateMask ANY_INSTANCE_STATE = 0xffff;
+ const InstanceStateMask NOT_ALIVE_INSTANCE_STATE = 0x006;
+
+
+ local interface ReadCondition : Condition {
+ SampleStateMask get_sample_state_mask();
+ ViewStateMask get_view_state_mask();
+ InstanceStateMask get_instance_state_mask();
+ DataReader get_datareader();
+ };
+
+ local interface QueryCondition : ReadCondition {
+ string get_query_expression();
+ ReturnCode_t get_query_parameters(
+ inout StringSeq query_parameters);
+ ReturnCode_t set_query_parameters(
+ in StringSeq query_parameters);
+ };
+
+ // ----------------------------------------------------------------------
+ // Qos
+ // ----------------------------------------------------------------------
+ const string USERDATA_QOS_POLICY_NAME = "UserData";
+ const string DURABILITY_QOS_POLICY_NAME = "Durability";
+ const string PRESENTATION_QOS_POLICY_NAME = "Presentation";
+ const string DEADLINE_QOS_POLICY_NAME = "Deadline";
+ const string LATENCYBUDGET_QOS_POLICY_NAME = "LatencyBudget";
+ const string OWNERSHIP_QOS_POLICY_NAME = "Ownership";
+ const string OWNERSHIPSTRENGTH_QOS_POLICY_NAME = "OwnershipStrength";
+ const string LIVELINESS_QOS_POLICY_NAME = "Liveliness";
+ const string TIMEBASEDFILTER_QOS_POLICY_NAME = "TimeBasedFilter";
+ const string PARTITION_QOS_POLICY_NAME = "Partition";
+ const string RELIABILITY_QOS_POLICY_NAME = "Reliability";
+ const string DESTINATIONORDER_QOS_POLICY_NAME = "DestinationOrder";
+ const string HISTORY_QOS_POLICY_NAME = "History";
+ const string RESOURCELIMITS_QOS_POLICY_NAME = "ResourceLimits";
+ const string ENTITYFACTORY_QOS_POLICY_NAME = "EntityFactory";
+ const string WRITERDATALIFECYCLE_QOS_POLICY_NAME = "WriterDataLifecycle";
+ const string READERDATALIFECYCLE_QOS_POLICY_NAME = "ReaderDataLifecycle";
+ const string TOPICDATA_QOS_POLICY_NAME = "TopicData";
+ const string GROUPDATA_QOS_POLICY_NAME = "TransportPriority";
+ const string LIFESPAN_QOS_POLICY_NAME = "Lifespan";
+ const string DURABILITYSERVICE_POLICY_NAME = "DurabilityService";
+
+ const QosPolicyId_t INVALID_QOS_POLICY_ID = 0;
+ const QosPolicyId_t USERDATA_QOS_POLICY_ID = 1;
+ const QosPolicyId_t DURABILITY_QOS_POLICY_ID = 2;
+ const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = 3;
+ const QosPolicyId_t DEADLINE_QOS_POLICY_ID = 4;
+ const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = 5;
+ const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = 6;
+ const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = 7;
+ const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = 8;
+ const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = 9;
+ const QosPolicyId_t PARTITION_QOS_POLICY_ID = 10;
+ const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = 11;
+ const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = 12;
+ const QosPolicyId_t HISTORY_QOS_POLICY_ID = 13;
+ const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = 14;
+ const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = 15;
+ const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = 16;
+ const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = 17;
+ const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = 18;
+ const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = 19;
+ const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = 20;
+ const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = 21;
+ const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = 22;
+
+ typedef sequence<octet> OctetSeq;
+ struct UserDataQosPolicy {
+ OctetSeq value;
+ };
+
+ struct TopicDataQosPolicy {
+ OctetSeq value;
+ };
+
+ struct GroupDataQosPolicy {
+ OctetSeq value;
+ };
+
+ struct TransportPriorityQosPolicy {
+ long value;
+ };
+
+ struct LifespanQosPolicy {
+ Duration_t duration;
+ };
+
+ enum DurabilityQosPolicyKind {
+ VOLATILE_DURABILITY_QOS,
+ TRANSIENT_LOCAL_DURABILITY_QOS,
+ TRANSIENT_DURABILITY_QOS,
+ PERSISTENT_DURABILITY_QOS
+ };
+ struct DurabilityQosPolicy {
+ DurabilityQosPolicyKind kind;
+ };
+
+ enum PresentationQosPolicyAccessScopeKind {
+ INSTANCE_PRESENTATION_QOS,
+ TOPIC_PRESENTATION_QOS,
+ GROUP_PRESENTATION_QOS
+ };
+ struct PresentationQosPolicy {
+ PresentationQosPolicyAccessScopeKind access_scope;
+ boolean coherent_access;
+ boolean ordered_access;
+ };
+
+ struct DeadlineQosPolicy {
+ Duration_t period;
+ };
+
+ struct LatencyBudgetQosPolicy {
+ Duration_t duration;
+ };
+
+ enum OwnershipQosPolicyKind {
+ SHARED_OWNERSHIP_QOS,
+ EXCLUSIVE_OWNERSHIP_QOS
+ };
+ struct OwnershipQosPolicy {
+ OwnershipQosPolicyKind kind;
+ };
+
+ struct OwnershipStrengthQosPolicy {
+ long value;
+ };
+
+ enum LivelinessQosPolicyKind {
+ AUTOMATIC_LIVELINESS_QOS,
+ MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
+ MANUAL_BY_TOPIC_LIVELINESS_QOS
+ };
+
+ struct LivelinessQosPolicy {
+ LivelinessQosPolicyKind kind;
+ Duration_t lease_duration;
+ };
+
+ struct TimeBasedFilterQosPolicy {
+ Duration_t minimum_separation;
+ };
+
+ struct PartitionQosPolicy {
+ StringSeq name;
+ };
+
+ enum ReliabilityQosPolicyKind {
+ BEST_EFFORT_RELIABILITY_QOS,
+ RELIABLE_RELIABILITY_QOS
+ };
+
+ struct ReliabilityQosPolicy {
+ ReliabilityQosPolicyKind kind;
+ Duration_t max_blocking_time;
+ };
+
+ enum DestinationOrderQosPolicyKind {
+ BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
+ BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
+ };
+ struct DestinationOrderQosPolicy {
+ DestinationOrderQosPolicyKind kind;
+ };
+
+ enum HistoryQosPolicyKind {
+ KEEP_LAST_HISTORY_QOS,
+ KEEP_ALL_HISTORY_QOS
+ };
+ struct HistoryQosPolicy {
+ HistoryQosPolicyKind kind;
+ long depth;
+ };
+
+ struct ResourceLimitsQosPolicy {
+ long max_samples;
+ long max_instances;
+ long max_samples_per_instance;
+ };
+
+ struct EntityFactoryQosPolicy {
+ boolean autoenable_created_entities;
+ };
+
+ struct WriterDataLifecycleQosPolicy {
+ boolean autodispose_unregistered_instances;
+ };
+
+ struct ReaderDataLifecycleQosPolicy {
+ Duration_t autopurge_nowriter_samples_delay;
+ Duration_t autopurge_disposed_samples_delay;
+ };
+
+ struct DurabilityServiceQosPolicy {
+ Duration_t service_cleanup_delay;
+ HistoryQosPolicyKind history_kind;
+ long history_depth;
+ long max_samples;
+ long max_instances;
+ long max_samples_per_instance;
+ };
+
+ struct DomainParticipantFactoryQos {
+ EntityFactoryQosPolicy entity_factory;
+ };
+
+ struct DomainParticipantQos {
+ UserDataQosPolicy user_data;
+ EntityFactoryQosPolicy entity_factory;
+ };
+
+ struct TopicQos {
+ TopicDataQosPolicy topic_data;
+ DurabilityQosPolicy durability;
+ DurabilityServiceQosPolicy durability_service;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ DestinationOrderQosPolicy destination_order;
+ HistoryQosPolicy history;
+ ResourceLimitsQosPolicy resource_limits;
+ TransportPriorityQosPolicy transport_priority;
+ LifespanQosPolicy lifespan;
+
+ OwnershipQosPolicy ownership;
+ };
+
+ struct DataWriterQos {
+ DurabilityQosPolicy durability;
+ DurabilityServiceQosPolicy durability_service;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ DestinationOrderQosPolicy destination_order;
+ HistoryQosPolicy history;
+ ResourceLimitsQosPolicy resource_limits;
+ TransportPriorityQosPolicy transport_priority;
+ LifespanQosPolicy lifespan;
+
+ UserDataQosPolicy user_data;
+ OwnershipQosPolicy ownership;
+ OwnershipStrengthQosPolicy ownership_strength;
+ WriterDataLifecycleQosPolicy writer_data_lifecycle;
+ };
+
+ struct PublisherQos {
+ PresentationQosPolicy presentation;
+ PartitionQosPolicy partition;
+ GroupDataQosPolicy group_data;
+ EntityFactoryQosPolicy entity_factory;
+ };
+
+ struct DataReaderQos {
+ DurabilityQosPolicy durability;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ DestinationOrderQosPolicy destination_order;
+ HistoryQosPolicy history;
+ ResourceLimitsQosPolicy resource_limits;
+
+ UserDataQosPolicy user_data;
+ OwnershipQosPolicy ownership;
+ TimeBasedFilterQosPolicy time_based_filter;
+ ReaderDataLifecycleQosPolicy reader_data_lifecycle;
+ };
+
+ struct SubscriberQos {
+ PresentationQosPolicy presentation;
+ PartitionQosPolicy partition;
+ GroupDataQosPolicy group_data;
+ EntityFactoryQosPolicy entity_factory;
+ };
+
+ // ----------------------------------------------------------------------
+
+ struct ParticipantBuiltinTopicData {
+ BuiltinTopicKey_t key;
+ UserDataQosPolicy user_data;
+ };
+
+ struct TopicBuiltinTopicData {
+ BuiltinTopicKey_t key;
+ string name;
+ string type_name;
+ DurabilityQosPolicy durability;
+ DurabilityServiceQosPolicy durability_service;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ TransportPriorityQosPolicy transport_priority;
+ LifespanQosPolicy lifespan;
+ DestinationOrderQosPolicy destination_order;
+ HistoryQosPolicy history;
+ ResourceLimitsQosPolicy resource_limits;
+ OwnershipQosPolicy ownership;
+ TopicDataQosPolicy topic_data;
+ };
+
+ struct PublicationBuiltinTopicData {
+ BuiltinTopicKey_t key;
+ BuiltinTopicKey_t participant_key;
+ string topic_name;
+ string type_name;
+
+ DurabilityQosPolicy durability;
+ DurabilityServiceQosPolicy durability_service;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ LifespanQosPolicy lifespan;
+ UserDataQosPolicy user_data;
+ OwnershipQosPolicy ownership;
+ OwnershipStrengthQosPolicy ownership_strength;
+ DestinationOrderQosPolicy destination_order;
+
+ PresentationQosPolicy presentation;
+ PartitionQosPolicy partition;
+ TopicDataQosPolicy topic_data;
+ GroupDataQosPolicy group_data;
+ };
+
+ struct SubscriptionBuiltinTopicData {
+ BuiltinTopicKey_t key;
+ BuiltinTopicKey_t participant_key;
+ string topic_name;
+ string type_name;
+
+ DurabilityQosPolicy durability;
+ DeadlineQosPolicy deadline;
+ LatencyBudgetQosPolicy latency_budget;
+ LivelinessQosPolicy liveliness;
+ ReliabilityQosPolicy reliability;
+ OwnershipQosPolicy ownership;
+ DestinationOrderQosPolicy destination_order;
+ UserDataQosPolicy user_data;
+ TimeBasedFilterQosPolicy time_based_filter;
+
+ PresentationQosPolicy presentation;
+ PartitionQosPolicy partition;
+ TopicDataQosPolicy topic_data;
+ GroupDataQosPolicy group_data;
+ };
+
+ // ----------------------------------------------------------------------
+ local interface Entity {
+ // ReturnCode_t set_qos(
+ // in EntityQos qos);
+ // ReturnCode_t get_qos(
+ // inout EntityQos qos);
+ // ReturnCode_t set_listener(
+ // in Listener l,
+ // in StatusMask mask);
+ // Listener get_listener();
+
+ ReturnCode_t enable();
+
+ StatusCondition get_statuscondition();
+
+ StatusMask get_status_changes();
+
+ InstanceHandle_t get_instance_handle();
+ };
+
+ // ----------------------------------------------------------------------
+ local interface DomainParticipant : Entity {
+ // Factory interfaces
+ Publisher create_publisher(
+ in PublisherQos qos,
+ in PublisherListener a_listener,
+ in StatusMask mask);
+ Publisher create_publisher_with_profile(
+ in string library_name,
+ in string profile_name,
+ in PublisherListener a_listener,
+ in StatusMask mask);
+ ReturnCode_t delete_publisher(
+ in Publisher p);
+
+ Subscriber create_subscriber(
+ in SubscriberQos qos,
+ in SubscriberListener a_listener,
+ in StatusMask mask);
+ Subscriber create_subscriber_with_profile(
+ in string library_name,
+ in string profile_name,
+ in SubscriberListener a_listener,
+ in StatusMask mask);
+ ReturnCode_t delete_subscriber(
+ in Subscriber s);
+ Subscriber get_builtin_subscriber();
+
+ Topic create_topic(
+ in string topic_name,
+ in string type_name,
+ in TopicQos qos,
+ in TopicListener a_listener,
+ in StatusMask mask);
+ Topic create_topic_with_profile(
+ in string topic_name,
+ in string type_name,
+ in string library_name,
+ in string profile_name,
+ in TopicListener a_listener,
+ in StatusMask mask);
+
+ ReturnCode_t delete_topic(
+ in Topic a_topic);
+
+ Topic find_topic(
+ in string topic_name,
+ in Duration_t timeout);
+ TopicDescription lookup_topicdescription(
+ in string name);
+
+ ContentFilteredTopic create_contentfilteredtopic(
+ in string name,
+ in Topic related_topic,
+ in string filter_expression,
+ in StringSeq expression_parameters);
+
+ ReturnCode_t delete_contentfilteredtopic(
+ in ContentFilteredTopic a_contentfilteredtopic);
+
+ MultiTopic create_multitopic(
+ in string name,
+ in string type_name,
+ in string subscription_expression,
+ in StringSeq expression_parameters);
+
+ ReturnCode_t delete_multitopic(
+ in MultiTopic a_multitopic);
+
+ ReturnCode_t delete_contained_entities();
+
+ ReturnCode_t set_qos(
+ in DomainParticipantQos qos);
+ ReturnCode_t get_qos(
+ inout DomainParticipantQos qos);
+
+ ReturnCode_t set_listener(
+ in DomainParticipantListener a_listener,
+ in StatusMask mask);
+ DomainParticipantListener get_listener();
+
+ ReturnCode_t ignore_participant(
+ in InstanceHandle_t handle);
+ ReturnCode_t ignore_topic(
+ in InstanceHandle_t handle);
+ ReturnCode_t ignore_publication(
+ in InstanceHandle_t handle);
+ ReturnCode_t ignore_subscription(
+ in InstanceHandle_t handle);
+
+ DomainId_t get_domain_id();
+ ReturnCode_t assert_liveliness();
+
+ ReturnCode_t set_default_publisher_qos(
+ in PublisherQos qos);
+ ReturnCode_t get_default_publisher_qos(
+ inout PublisherQos qos);
+
+ ReturnCode_t set_default_subscriber_qos(
+ in SubscriberQos qos);
+ ReturnCode_t get_default_subscriber_qos(
+ inout SubscriberQos qos);
+
+ ReturnCode_t set_default_topic_qos(
+ in TopicQos qos);
+ ReturnCode_t get_default_topic_qos(
+ inout TopicQos qos);
+
+ ReturnCode_t get_discovered_participants(
+ inout InstanceHandleSeq participant_handles);
+ ReturnCode_t get_discovered_participant_data(
+ inout ParticipantBuiltinTopicData participant_data,
+ in InstanceHandle_t participant_handle);
+
+ ReturnCode_t get_discovered_topics(
+ inout InstanceHandleSeq topic_handles);
+ ReturnCode_t get_discovered_topic_data(
+ inout TopicBuiltinTopicData topic_data,
+ in InstanceHandle_t topic_handle);
+
+ boolean contains_entity(
+ in InstanceHandle_t a_handle);
+
+ ReturnCode_t get_current_time(
+ inout Time_t current_time);
+ };
+
+ local interface DomainParticipantFactory {
+ DomainParticipant create_participant(
+ in DomainId_t domain_id,
+ in DomainParticipantQos qos,
+ in DomainParticipantListener a_listener,
+ in StatusMask mask);
+ DomainParticipant create_participant_with_profile(
+ in DomainId_t domain_id,
+ in string library_name,
+ in string profile_name,
+ in DomainParticipantListener a_listener,
+ in StatusMask mask);
+ ReturnCode_t delete_participant(
+ in DomainParticipant a_participant);
+
+ DomainParticipant lookup_participant(
+ in DomainId_t domain_id);
+
+ ReturnCode_t set_default_participant_qos(
+ in DomainParticipantQos qos);
+ ReturnCode_t set_default_participant_qos_with_profile(
+ in string library_name,
+ in string profile_name);
+ ReturnCode_t get_default_participant_qos(
+ inout DomainParticipantQos qos);
+
+ ReturnCode_t set_qos(
+ in DomainParticipantFactoryQos qos);
+ ReturnCode_t get_qos(
+ inout DomainParticipantFactoryQos qos);
+ };
+
+ local interface TypeSupport {
+ // ReturnCode_t register_type(
+ // in DomainParticipant domain,
+ // in string type_name);
+ // string get_type_name();
+ };
+
+ // ----------------------------------------------------------------------
+ local interface TopicDescription {
+ string get_type_name();
+ string get_name();
+
+ DomainParticipant get_participant();
+ };
+
+ local interface Topic : Entity, TopicDescription {
+ ReturnCode_t set_qos(
+ in TopicQos qos);
+ ReturnCode_t get_qos(
+ inout TopicQos qos);
+ ReturnCode_t set_listener(
+ in TopicListener a_listener,
+ in StatusMask mask);
+ TopicListener get_listener();
+ // Access the status
+ ReturnCode_t get_inconsistent_topic_status(
+ inout InconsistentTopicStatus a_status);
+ };
+
+ local interface ContentFilteredTopic : TopicDescription {
+ string get_filter_expression();
+ ReturnCode_t get_expression_parameters(
+ inout StringSeq expression_parameters);
+ ReturnCode_t set_expression_parameters(
+ in StringSeq expression_parameters);
+ Topic get_related_topic();
+ };
+
+ local interface MultiTopic : TopicDescription {
+ string get_subscription_expression();
+ ReturnCode_t get_expression_parameters(
+ inout StringSeq expression_parameters);
+ ReturnCode_t set_expression_parameters(
+ in StringSeq expression_parameters);
+ };
+
+ // ----------------------------------------------------------------------
+ local interface Publisher : Entity {
+ DataWriter create_datawriter(
+ in Topic a_topic,
+ in DataWriterQos qos,
+ in DataWriterListener a_listener,
+ in StatusMask mask);
+ DataWriter create_datawriter_with_profile(
+ in Topic a_topic,
+ in string library_name,
+ in string probile_name,
+ in DataWriterListener a_listener,
+ in StatusMask mask);
+ ReturnCode_t delete_datawriter(
+ in DataWriter a_datawriter);
+ DataWriter lookup_datawriter(
+ in string topic_name);
+
+ ReturnCode_t delete_contained_entities();
+
+ ReturnCode_t set_qos(
+ in PublisherQos qos);
+ ReturnCode_t get_qos(
+ inout PublisherQos qos);
+
+ ReturnCode_t set_listener(
+ in PublisherListener a_listener,
+ in StatusMask mask);
+ PublisherListener get_listener();
+
+ ReturnCode_t suspend_publications();
+ ReturnCode_t resume_publications();
+
+ ReturnCode_t begin_coherent_changes();
+ ReturnCode_t end_coherent_changes();
+
+ ReturnCode_t wait_for_acknowledgments(
+ in Duration_t max_wait);
+
+ DomainParticipant get_participant();
+
+ ReturnCode_t set_default_datawriter_qos(
+ in DataWriterQos qos);
+ ReturnCode_t get_default_datawriter_qos(
+ inout DataWriterQos qos);
+
+ ReturnCode_t copy_from_topic_qos(
+ inout DataWriterQos a_datawriter_qos,
+ in TopicQos a_topic_qos);
+ };
+
+ local interface DataWriter : Entity {
+ // InstanceHandle_t register_instance(
+ // in Data instance_data);
+ // InstanceHandle_t register_instance_w_timestamp(
+ // in Data instance_data,
+ // in Time_t source_timestamp);
+ // ReturnCode_t unregister_instance(
+ // in Data instance_data,
+ // in InstanceHandle_t handle);
+ // ReturnCode_t unregister_instance_w_timestamp(
+ // in Data instance_data,
+ // in InstanceHandle_t handle,
+ // in Time_t source_timestamp);
+ // ReturnCode_t write(
+ // in Data instance_data,
+ // in InstanceHandle_t handle);
+ // ReturnCode_t write_w_timestamp(
+ // in Data instance_data,
+ // in InstanceHandle_t handle,
+ // in Time_t source_timestamp);
+ // ReturnCode_t dispose(
+ // in Data instance_data,
+ // in InstanceHandle_t instance_handle);
+ // ReturnCode_t dispose_w_timestamp(
+ // in Data instance_data,
+ // in InstanceHandle_t instance_handle,
+ // in Time_t source_timestamp);
+ // ReturnCode_t get_key_value(
+ // inout Data key_holder,
+ // in InstanceHandle_t handle);
+ // InstanceHandle_t lookup_instance(
+ // in Data instance_data);
+
+ ReturnCode_t set_qos(
+ in DataWriterQos qos);
+ ReturnCode_t get_qos(
+ inout DataWriterQos qos);
+
+ ReturnCode_t set_listener(
+ in DataWriterListener a_listener,
+ in StatusMask mask);
+ DataWriterListener get_listener();
+
+ Topic get_topic();
+ Publisher get_publisher();
+
+ ReturnCode_t wait_for_acknowledgments(
+ in Duration_t max_wait);
+
+ // Access the status
+ ReturnCode_t get_liveliness_lost_status(
+ inout LivelinessLostStatus status);
+ ReturnCode_t get_offered_deadline_missed_status(
+ inout OfferedDeadlineMissedStatus status);
+ ReturnCode_t get_offered_incompatible_qos_status(
+ inout OfferedIncompatibleQosStatus status);
+ ReturnCode_t get_publication_matched_status(
+ inout PublicationMatchedStatus status);
+
+ ReturnCode_t assert_liveliness();
+
+ ReturnCode_t get_matched_subscriptions(
+ inout InstanceHandleSeq subscription_handles);
+ ReturnCode_t get_matched_subscription_data(
+ inout SubscriptionBuiltinTopicData subscription_data,
+ in InstanceHandle_t subscription_handle);
+ };
+
+ // ----------------------------------------------------------------------
+ local interface Subscriber : Entity {
+ DataReader create_datareader(
+ in TopicDescription a_topic,
+ in DataReaderQos qos,
+ in DataReaderListener a_listener,
+ in StatusMask mask);
+ DataReader create_datareader_with_profile(
+ in TopicDescription a_topic,
+ in string library_name,
+ in string profile_name,
+ in DataReaderListener a_listener,
+ in StatusMask mask);
+ ReturnCode_t delete_datareader(
+ in DataReader a_datareader);
+ ReturnCode_t delete_contained_entities();
+ DataReader lookup_datareader(
+ in string topic_name);
+ ReturnCode_t get_datareaders(
+ inout DataReaderSeq readers,
+ in SampleStateMask sample_states,
+ in ViewStateMask view_states,
+ in InstanceStateMask instance_states);
+ ReturnCode_t notify_datareaders();
+
+ ReturnCode_t set_qos(
+ in SubscriberQos qos);
+ ReturnCode_t get_qos(
+ inout SubscriberQos qos);
+
+ ReturnCode_t set_listener(
+ in SubscriberListener a_listener,
+ in StatusMask mask);
+ SubscriberListener get_listener();
+
+ ReturnCode_t begin_access();
+ ReturnCode_t end_access();
+
+ DomainParticipant get_participant();
+
+ ReturnCode_t set_default_datareader_qos(
+ in DataReaderQos qos);
+ ReturnCode_t get_default_datareader_qos(
+ inout DataReaderQos qos);
+
+ ReturnCode_t copy_from_topic_qos(
+ inout DataReaderQos a_datareader_qos,
+ in TopicQos a_topic_qos);
+ };
+
+ local interface DataReader : Entity {
+ // ReturnCode_t read(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t take(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t read_w_condition(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in ReadCondition a_condition);
+
+ // ReturnCode_t take_w_condition(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in ReadCondition a_condition);
+
+ // ReturnCode_t read_next_sample(
+ // inout Data data_values,
+ // inout SampleInfo sample_info);
+
+ // ReturnCode_t take_next_sample(
+ // inout Data data_values,
+ // inout SampleInfo sample_info);
+
+ // ReturnCode_t read_instance(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t a_handle,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t take_instance(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t a_handle,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t read_next_instance(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t previous_handle,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t take_next_instance(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t previous_handle,
+ // in SampleStateMask sample_states,
+ // in ViewStateMask view_states,
+ // in InstanceStateMask instance_states);
+
+ // ReturnCode_t read_next_instance_w_condition(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t previous_handle,
+ // in ReadCondition a_condition);
+
+ // ReturnCode_t take_next_instance_w_condition(
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos,
+ // in long max_samples,
+ // in InstanceHandle_t previous_handle,
+ // in ReadCondition a_condition);
+
+ // ReturnCode_t return_loan (
+ // inout DataSeq data_values,
+ // inout SampleInfoSeq sample_infos);
+
+ // ReturnCode_t get_key_value(
+ // inout Data key_holder,
+ // in InstanceHandle_t handle);
+
+ // InstanceHandle_t lookup_instance(
+ // in Data instance_data);
+
+ ReadCondition create_readcondition(
+ in SampleStateMask sample_states,
+ in ViewStateMask view_states,
+ in InstanceStateMask instance_states);
+
+ QueryCondition create_querycondition(
+ in SampleStateMask sample_states,
+ in ViewStateMask view_states,
+ in InstanceStateMask instance_states,
+ in string query_expression,
+ in StringSeq query_parameters);
+
+ ReturnCode_t delete_readcondition(
+ in ReadCondition a_condition);
+
+ ReturnCode_t delete_contained_entities();
+
+ ReturnCode_t set_qos(
+ in DataReaderQos qos);
+ ReturnCode_t get_qos(
+ inout DataReaderQos qos);
+
+ ReturnCode_t set_listener(
+ in DataReaderListener a_listener,
+ in StatusMask mask);
+ DataReaderListener get_listener();
+
+ TopicDescription get_topicdescription();
+ Subscriber get_subscriber();
+
+ ReturnCode_t get_sample_rejected_status(
+ inout SampleRejectedStatus status);
+ ReturnCode_t get_liveliness_changed_status(
+ inout LivelinessChangedStatus status);
+ ReturnCode_t get_requested_deadline_missed_status(
+ inout RequestedDeadlineMissedStatus status);
+ ReturnCode_t get_requested_incompatible_qos_status(
+ inout RequestedIncompatibleQosStatus status);
+ ReturnCode_t get_subscription_matched_status(
+ inout SubscriptionMatchedStatus status);
+ ReturnCode_t get_sample_lost_status(
+ inout SampleLostStatus status);
+
+ ReturnCode_t wait_for_historical_data(
+ in Duration_t max_wait);
+
+ ReturnCode_t get_matched_publications(
+ inout InstanceHandleSeq publication_handles);
+ ReturnCode_t get_matched_publication_data(
+ inout PublicationBuiltinTopicData publication_data,
+ in InstanceHandle_t publication_handle);
+ };
+
+
+ struct SampleInfo {
+ SampleStateKind sample_state;
+ ViewStateKind view_state;
+ InstanceStateKind instance_state;
+ Time_t source_timestamp;
+ InstanceHandle_t instance_handle;
+ InstanceHandle_t publication_handle;
+ long disposed_generation_count;
+ long no_writers_generation_count;
+ long sample_rank;
+ long generation_rank;
+ long absolute_generation_rank;
+ boolean valid_data;
+ };
+
+ typedef sequence<SampleInfo> SampleInfoSeq;
+};
+
+#endif
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl
new file mode 100644
index 00000000000..9ded847d64e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_i_handle.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+#ifndef DDS_RFT2_DCPS_IDL_I
+#define DDS_RFT2_DCPS_IDL_I
+
+#pragma ciao lem "connectors/dds4ccm/idl/dds_rtf2_dcps_i_handleE.idl"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+
+module DDS {
+ struct NativeInstanceHandle_t {
+ octet value[16];
+ unsigned long length;
+ unsigned long isValid;
+ };
+ typedef NativeInstanceHandle_t InstanceHandle_t;
+ typedef sequence<InstanceHandle_t> InstanceHandleSeq;
+};
+
+#endif
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl
new file mode 100644
index 00000000000..071310bdfa6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handle.idl
@@ -0,0 +1,16 @@
+// $Id$
+
+#ifndef DDS_RFT2_DCPS_INSTANCE_HANDLE_IDL
+#define DDS_RFT2_DCPS_INSTANCE_HANDLE_IDL
+
+#if (CIAO_DDS4CCM_NDDS==1)
+
+#include "dds_rtf2_dcps_i_handle.idl"
+
+module DDS {
+ native HANDLE_NIL;
+};
+
+#endif
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp
new file mode 100644
index 00000000000..3fe4af04da8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.cpp
@@ -0,0 +1,15 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds_rtf2_dcps_instance_handleC.h"
+
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+
+static ::DDS::InstanceHandle_t S_HANDLE = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 16, 0};
+
+namespace DDS
+{
+ ::DDS::InstanceHandle_t const HANDLE_NIL = S_HANDLE;
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h
new file mode 100644
index 00000000000..9d8723910b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleC.h
@@ -0,0 +1,37 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef _TAO_IDL_DDS_RTF2_DCPSC_H_XX
+#define _TAO_IDL_DDS_RTF2_DCPSC_H_XX
+
+#include /**/ "ace/pre.h"
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include /**/ "dds4ccm_stub_export.h"
+#include /**/ "tao/Versioned_Namespace.h"
+
+#include "dds_rtf2_dcps_i_handleC.h"
+
+// TAO_IDL - Generated from
+// c:\ace\latest\ace_wrappers\tao\tao_idl\be\be_visitor_root/root_ch.cpp:62
+
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+
+namespace DDS
+{
+ extern DDS4CCM_STUB_Export ::DDS::InstanceHandle_t const HANDLE_NIL;
+}
+
+#endif
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h
new file mode 100644
index 00000000000..aa63d70414b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleEC.h
@@ -0,0 +1,66 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * http://doc.ece.uci.edu/
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:134
+
+#ifndef _TAO_IDL_DDS_RTF2_DCPSEC_H_XX
+#define _TAO_IDL_DDS_RTF2_DCPSEC_H_XX
+
+#include /**/ "ace/pre.h"
+
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include /**/ "dds4ccm_lem_stub_export.h"
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "tao/ORB.h"
+#include "tao/SystemException.h"
+#include "tao/Basic_Types.h"
+#include "tao/ORB_Constants.h"
+#include "tao/Object.h"
+#include "tao/AnyTypeCode/TypeCode.h"
+#include "tao/AnyTypeCode/TypeCode_Constants.h"
+#include "tao/String_Manager_T.h"
+#include "tao/Objref_VarOut_T.h"
+#include /**/ "tao/Versioned_Namespace.h"
+
+#include "ccm/CCM_ContainerC.h"
+#include "dds_rtf2_dcps_instance_handleC.h"
+
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h
new file mode 100644
index 00000000000..cfde5fcb45e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps_instance_handleS.h
@@ -0,0 +1,48 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.4
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * http://doc.ece.uci.edu/
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// C:\ACE\latest\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:471
+
+#ifndef _TAO_IDL_DDS_RTF2_DCPS_I_HANDLES_H_S
+#define _TAO_IDL_DDS_RTF2_DCPS_I_HANDLES_H_S
+
+#include /**/ "ace/pre.h"
+
+#include "dds_rtf2_dcps_i_handleC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include /**/ "dds4ccm_skel_export.h"
+
+#include /**/ "ace/post.h"
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.cpp
new file mode 100644
index 00000000000..2a2a0597606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.cpp
@@ -0,0 +1,19 @@
+// $Id$
+#include "dds4ccm/impl/dds/Coherent_Changes_Guard.h"
+
+CIAO::DDS4CCM::Coherent_Changes_Guard::Coherent_Changes_Guard (DDSPublisher* p, bool coherent_write) : p_ (p), coherent_write_ (coherent_write)
+{
+ if (this->coherent_write_)
+ {
+ p_->begin_coherent_changes ();
+ }
+}
+
+CIAO::DDS4CCM::Coherent_Changes_Guard::~Coherent_Changes_Guard ()
+{
+ if (this->coherent_write_)
+ {
+ this->p_->end_coherent_changes ();
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.h
new file mode 100644
index 00000000000..d98cde63d1b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Coherent_Changes_Guard.h
@@ -0,0 +1,43 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef _CIAO_COHERENT_CHANGES_GUARD
+#define _CIAO_COHERENT_CHANGES_GUARD
+
+#include "ace/Copy_Disabled.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+# include "dds/DdsDcpsC.h"
+typedef ::DDS::Publisher DDSPublisher;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export Coherent_Changes_Guard :
+ private ACE_Copy_Disabled
+ {
+ public:
+ Coherent_Changes_Guard (::DDSPublisher* p, bool coherent_write);
+ ~Coherent_Changes_Guard ();
+ private:
+ ::DDSPublisher* p_;
+ bool const coherent_write_;
+ };
+ }
+}
+
+#endif /* _CIAO_COHERENT_CHANGES_GUARD */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.cpp
new file mode 100644
index 00000000000..c97ea2c28e8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.cpp
@@ -0,0 +1,144 @@
+// $Id$
+
+#include "ContentFilteredTopic.h"
+#include "Topic.h"
+
+#include "ndds/StringSeq.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_ContentFilteredTopic_i::CCM_DDS_ContentFilteredTopic_i (
+ DDSContentFilteredTopic * dw) : impl_ (dw)
+ {
+ }
+
+ CCM_DDS_ContentFilteredTopic_i::~CCM_DDS_ContentFilteredTopic_i (void)
+ {
+ }
+
+ char *
+ CCM_DDS_ContentFilteredTopic_i::get_filter_expression (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_ContentFilteredTopic_i::get_filter_expression");
+ return CORBA::string_dup (this->impl ()->get_filter_expression ());
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_ContentFilteredTopic_i::get_expression_parameters (
+ ::DDS::StringSeq & expression_parameters)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_ContentFilteredTopic_i::get_expression_parameters");
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_StringSeq parameters;
+ ::DDS::ReturnCode_t retval = this->impl ()->get_expression_parameters (
+ parameters);
+ expression_parameters <<= parameters;
+#else
+ ::DDS::ReturnCode_t retval =
+ this->impl ()->get_expression_parameters (expression_parameters);
+#endif
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_ContentFilteredTopic_i::set_expression_parameters (
+ const ::DDS::StringSeq & expression_parameters)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_ContentFilteredTopic_i::set_expression_parameters");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_StringSeq parameters;
+ parameters <<= expression_parameters;
+ return this->impl ()->set_expression_parameters (parameters);
+#else
+ return this->impl ()->set_expression_parameters (expression_parameters);
+#endif
+ }
+
+ ::DDS::Topic_ptr
+ CCM_DDS_ContentFilteredTopic_i::get_related_topic (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_ContentFilteredTopic_i::get_related_topic");
+
+ ::DDS::Topic_var retval = ::DDS::Topic::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSTopic *topic = this->impl ()->get_related_topic ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (topic),
+ CORBA::NO_MEMORY ());
+ return retval._retn ();
+#else
+ ::DDS::Topic_var topic = this->impl ()->get_related_topic ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (topic.in ()),
+ CORBA::NO_MEMORY ());
+ return retval._retn ();
+#endif
+ }
+
+ char *
+ CCM_DDS_ContentFilteredTopic_i::get_type_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_type_name ());
+#else
+ return this->impl ()->get_type_name ();
+#endif
+ }
+
+ char *
+ CCM_DDS_ContentFilteredTopic_i::get_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_name ());
+#else
+ return this->impl ()->get_name ();
+#endif
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_ContentFilteredTopic_i::get_participant (void)
+ {
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipant* p = this->impl ()->get_participant ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::DomainParticipant_var p = this->impl ()->get_participant ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ DDSContentFilteredTopic *
+ CCM_DDS_ContentFilteredTopic_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_ContentFilteredTopic_i::set_impl (DDSContentFilteredTopic * dw)
+ {
+ this->impl_ = dw;
+ }
+
+ DDSContentFilteredTopic *
+ CCM_DDS_ContentFilteredTopic_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.h
new file mode 100644
index 00000000000..c5dc96c8a1e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ContentFilteredTopic.h
@@ -0,0 +1,71 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_NDDS_CONTENFILTEREDTOPIC_H
+#define CIAO_NDDS_CONTENFILTEREDTOPIC_H
+
+#include "DomainParticipant.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ContentFilteredTopic DDSContentFilteredTopic;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_ContentFilteredTopic_i :
+ public virtual ::DDS::CCM_ContentFilteredTopic,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_ContentFilteredTopic_i (DDSContentFilteredTopic * dw);
+
+ /// Destructor
+ virtual ~CCM_DDS_ContentFilteredTopic_i (void);
+
+ virtual char * get_filter_expression (void);
+
+ virtual
+ ::DDS::ReturnCode_t get_expression_parameters (
+ ::DDS::StringSeq & expression_parameters);
+
+ virtual
+ ::DDS::ReturnCode_t set_expression_parameters (
+ const ::DDS::StringSeq & expression_parameters);
+
+ virtual
+ ::DDS::Topic_ptr get_related_topic (void);
+
+ virtual
+ char * get_type_name (void);
+
+ virtual
+ char * get_name (void);
+
+ virtual
+ ::DDS::DomainParticipant_ptr get_participant (void);
+
+ DDSContentFilteredTopic * get_impl (void);
+
+ void set_impl (DDSContentFilteredTopic * dw);
+
+ private:
+ DDSContentFilteredTopic * impl_;
+
+ DDSContentFilteredTopic * impl (void);
+ };
+ }
+}
+
+#endif /* CIAO_NDDS_CONTENFILTEREDTOPIC_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS4CCM_Traits.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS4CCM_Traits.h
new file mode 100644
index 00000000000..45022d7e9f1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS4CCM_Traits.h
@@ -0,0 +1,66 @@
+/**
+ * @file DDS4CCM_Traits.h
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ *
+ * Traits necessary for various bits and pieces of the DDS4CCM infrastructure.
+ */
+
+#ifndef DDS4CCM_TRAITS_H
+#define DDS4CCM_TRAITS_H
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename BASE_TYPE,
+ typename SEQ_TYPE,
+ typename WRITER_TYPE,
+ typename UPDATER_TYPE,
+ typename GETTER_TYPE,
+ typename READER_TYPE,
+ typename CONTEXT_TYPE,
+ typename LISTENER_TYPE,
+ typename STATELISTENER_TYPE,
+ typename CONNECTORSTATUSLISTENER_TYPE
+ >
+
+ struct Connector_Traits
+ {
+ typedef BASE_TYPE base_type;
+ typedef SEQ_TYPE seq_type;
+ typedef WRITER_TYPE writer_type;
+ typedef UPDATER_TYPE updater_type;
+ typedef GETTER_TYPE getter_type;
+ typedef READER_TYPE reader_type;
+ typedef CONTEXT_TYPE context_type;
+ typedef LISTENER_TYPE listener_type;
+ typedef STATELISTENER_TYPE statelistener_type;
+ typedef CONNECTORSTATUSLISTENER_TYPE connectorstatuslistener_type;
+ };
+
+ /**
+ * @struct Type_Traits
+ * @brief Convenience traits struct.
+ *
+ * This is a convenience struct that is used by most of the
+ * DDS4CCM infrastructure; it is not necessary to use this exact
+ * struct, so long as all of the needed fields are filled in.
+ */
+ template <typename VALUE_TYPE,
+ typename DDS_SEQ_TYPE,
+ typename TYPE_SUPPORT,
+ typename DATA_WRITER,
+ typename DATA_READER>
+ struct Type_Traits
+ {
+ typedef VALUE_TYPE value_type;
+ typedef DDS_SEQ_TYPE dds_seq_type;
+ typedef TYPE_SUPPORT type_support;
+ typedef DATA_WRITER data_writer;
+ typedef DATA_READER data_reader;
+ };
+ }
+}
+#endif /* DDS4CCM_TRAITS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.cpp
new file mode 100644
index 00000000000..e464fd0d680
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.cpp
@@ -0,0 +1,263 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/DDSCallbackStatusHandler.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+//============================================================
+// On_Unexpected_Status_Handler
+//============================================================
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ OnUnexpectedStatusHandler::OnUnexpectedStatusHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind) :
+ error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)),
+ entity_ (::DDS::Entity::_duplicate (entity)),
+ status_kind_ (status_kind)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnUnexpectedStatusHandler::~OnUnexpectedStatusHandler (void)
+ {
+ }
+
+ int
+ OnUnexpectedStatusHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->error_listener_->on_unexpected_status (this->entity_, this->status_kind_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnRequestedOncompatibleQosHandler
+ //============================================================
+ OnRequestedOncompatibleQosHandler::OnRequestedOncompatibleQosHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::RequestedIncompatibleQosStatus &status) :
+ csl_ (::CCM_DDS::ConnectorStatusListener::_duplicate (csl)),
+ dr_ (::DDS::DataReader::_duplicate (dr)),
+ status_ (status)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnRequestedOncompatibleQosHandler::~OnRequestedOncompatibleQosHandler (void)
+ {
+ }
+
+ int
+ OnRequestedOncompatibleQosHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->csl_->on_requested_incompatible_qos (this->dr_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnSampleRejectedHandler
+ //============================================================
+ OnSampleRejectedHandler::OnSampleRejectedHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::SampleRejectedStatus &status) :
+ csl_ (::CCM_DDS::ConnectorStatusListener::_duplicate (csl)),
+ dr_ (::DDS::DataReader::_duplicate (dr)),
+ status_ (status)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnSampleRejectedHandler::~OnSampleRejectedHandler (void)
+ {
+ }
+
+ int
+ OnSampleRejectedHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->csl_->on_sample_rejected (this->dr_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnInconsistentTopicHandler
+ //============================================================
+ OnInconsistentTopicHandler::OnInconsistentTopicHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::Topic_ptr tp,
+ const ::DDS::InconsistentTopicStatus &status) :
+ csl_ (::CCM_DDS::ConnectorStatusListener::_duplicate (csl)),
+ tp_ (::DDS::Topic::_duplicate (tp)),
+ status_ (status)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnInconsistentTopicHandler::~OnInconsistentTopicHandler (void)
+ {
+ }
+
+ int
+ OnInconsistentTopicHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->csl_->on_inconsistent_topic (this->tp_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnOfferedDeadlineMissedHandler
+ //============================================================
+ OnOfferedDeadlineMissedHandler::OnOfferedDeadlineMissedHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataWriter_ptr dw,
+ const ::DDS::OfferedDeadlineMissedStatus &status) :
+ csl_ (::CCM_DDS::ConnectorStatusListener::_duplicate (csl)),
+ dw_ (::DDS::DataWriter::_duplicate (dw)),
+ status_ (status)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnOfferedDeadlineMissedHandler::~OnOfferedDeadlineMissedHandler (void)
+ {
+ }
+
+ int
+ OnOfferedDeadlineMissedHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->csl_->on_offered_deadline_missed (this->dw_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnOfferedIncompatibleQoSHandler
+ //============================================================
+ OnOfferedIncompatibleQoSHandler::OnOfferedIncompatibleQoSHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataWriter_ptr dw,
+ const ::DDS::OfferedIncompatibleQosStatus &status) :
+ csl_ (::CCM_DDS::ConnectorStatusListener::_duplicate (csl)),
+ dw_ (::DDS::DataWriter::_duplicate (dw)),
+ status_ (status)
+ {
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+ }
+
+ OnOfferedIncompatibleQoSHandler::~OnOfferedIncompatibleQoSHandler (void)
+ {
+ }
+
+ int
+ OnOfferedIncompatibleQoSHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->csl_->on_offered_incompatible_qos (this->dw_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnRequestedDeadlineMissedHandler
+ //============================================================
+ OnRequestedDeadlineMissedHandler::OnRequestedDeadlineMissedHandler (
+ ::CCM_DDS::PortStatusListener_ptr psl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::RequestedDeadlineMissedStatus & status) :
+ psl_ (::CCM_DDS::PortStatusListener::_duplicate (psl)),
+ dr_ (::DDS::DataReader::_duplicate (dr)),
+ status_ (status)
+ {
+ }
+
+ OnRequestedDeadlineMissedHandler::~OnRequestedDeadlineMissedHandler ()
+ {
+ }
+
+ int
+ OnRequestedDeadlineMissedHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->psl_->on_requested_deadline_missed (this->dr_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // OnSampleLostHandler
+ //============================================================
+ OnSampleLostHandler::OnSampleLostHandler (
+ ::CCM_DDS::PortStatusListener_ptr psl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::SampleLostStatus & status) :
+ psl_ (::CCM_DDS::PortStatusListener::_duplicate (psl)),
+ dr_ (::DDS::DataReader::_duplicate (dr)),
+ status_ (status)
+ {
+ }
+
+ OnSampleLostHandler::~OnSampleLostHandler ()
+ {
+ }
+
+ int
+ OnSampleLostHandler::handle_exception (ACE_HANDLE)
+ {
+ try
+ {
+ this->psl_->on_sample_lost (this->dr_, this->status_);
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.h
new file mode 100644
index 00000000000..32d9701e738
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDSCallbackStatusHandler.h
@@ -0,0 +1,155 @@
+// $Id$
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Eventhandler on orb thread, handling the
+ * received data from DDS.
+ */
+
+#ifndef CIAO_DDS_CALLBACK_STATUS_HANDLER
+#define CIAO_DDS_CALLBACK_STATUS_HANDLER
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/idl/dds4ccm_ConnectorStatusListenerC.h"
+#include "dds4ccm/idl/dds4ccm_PortStatusListenerC.h"
+#include "ace/Event_Handler.h"
+#include "dds4ccm_dds_impl_export.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export OnUnexpectedStatusHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnUnexpectedStatusHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind);
+ virtual ~OnUnexpectedStatusHandler ();
+
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var error_listener_;
+ ::DDS::Entity_var entity_;
+ ::DDS::StatusKind status_kind_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnRequestedOncompatibleQosHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnRequestedOncompatibleQosHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::RequestedIncompatibleQosStatus &status);
+ virtual ~OnRequestedOncompatibleQosHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var csl_;
+ ::DDS::DataReader_var dr_;
+ ::DDS::RequestedIncompatibleQosStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnSampleRejectedHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnSampleRejectedHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::SampleRejectedStatus &status);
+ virtual ~OnSampleRejectedHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var csl_;
+ ::DDS::DataReader_var dr_;
+ ::DDS::SampleRejectedStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnInconsistentTopicHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnInconsistentTopicHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::Topic_ptr tp,
+ const ::DDS::InconsistentTopicStatus &status);
+ virtual ~OnInconsistentTopicHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var csl_;
+ ::DDS::Topic_var tp_;
+ ::DDS::InconsistentTopicStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnOfferedDeadlineMissedHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnOfferedDeadlineMissedHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataWriter_ptr dw,
+ const ::DDS::OfferedDeadlineMissedStatus &status);
+ virtual ~OnOfferedDeadlineMissedHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var csl_;
+ ::DDS::DataWriter_var dw_;
+ ::DDS::OfferedDeadlineMissedStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnOfferedIncompatibleQoSHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnOfferedIncompatibleQoSHandler (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl,
+ ::DDS::DataWriter_ptr dw,
+ const ::DDS::OfferedIncompatibleQosStatus &status);
+ virtual ~OnOfferedIncompatibleQoSHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var csl_;
+ ::DDS::DataWriter_var dw_;
+ ::DDS::OfferedIncompatibleQosStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnRequestedDeadlineMissedHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnRequestedDeadlineMissedHandler (
+ ::CCM_DDS::PortStatusListener_ptr psl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::RequestedDeadlineMissedStatus &status);
+ virtual ~OnRequestedDeadlineMissedHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::PortStatusListener_var psl_;
+ ::DDS::DataReader_var dr_;
+ ::DDS::RequestedDeadlineMissedStatus const status_;
+ };
+
+ class DDS4CCM_DDS_IMPL_Export OnSampleLostHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ OnSampleLostHandler (
+ ::CCM_DDS::PortStatusListener_ptr psl,
+ ::DDS::DataReader_ptr dr,
+ const ::DDS::SampleLostStatus &status);
+ virtual ~OnSampleLostHandler ();
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ ::CCM_DDS::PortStatusListener_var psl_;
+ ::DDS::DataReader_var dr_;
+ ::DDS::SampleLostStatus const status_;
+ };
+ }
+}
+
+#endif /* CIAO_DDS_CALLBACK_STATUS_HANDLER */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.cpp
new file mode 100644
index 00000000000..10771a3c029
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.cpp
@@ -0,0 +1,238 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DomainParticipantFactory.h"
+#include "dds4ccm/impl/dds/DomainParticipant.h"
+#include "ace/Tokenizer_T.h"
+#include "ace/Env_Value_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::DDS_Base_Connector_T (void)
+ : domain_id_ (0)
+ , configuration_complete_ (false)
+ , library_name_ (0)
+ , profile_name_ (0)
+{
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), this->domain_id_);
+ this->domain_id_ = id;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::~DDS_Base_Connector_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::DomainId_t
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::domain_id (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::domain_id");
+
+ return this->domain_id_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::domain_id (
+ ::DDS::DomainId_t domain_id)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::domain_id");
+
+ if (this->configuration_complete_)
+ {
+ throw ::CCM_DDS::NonChangeable ();
+ }
+ else
+ {
+ this->domain_id_ = domain_id;
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+char *
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::qos_profile (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::qos_profile");
+
+ return CORBA::string_dup (this->qos_profile_.in ());
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::qos_profile (
+ const char * qos_profile)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::qos_profile");
+
+ if (this->configuration_complete_)
+ {
+ throw ::CCM_DDS::NonChangeable ();
+ }
+ else
+ {
+ this->qos_profile_ = qos_profile;
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::init_default_domain (void)
+{
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "DDS_Base_Connector_T::init_default_domain - "
+ "Configuring default domain <%d>\n",
+ this->domain_id_));
+ try
+ {
+ ACE_Env_Value<int> verbosity (ACE_TEXT("DDS4CCM_NDDS_LOG_VERBOSITY"),
+ NDDS_CONFIG_LOG_VERBOSITY_SILENT);
+
+ NDDS_Config_LogVerbosity n_verbosity =
+ static_cast <NDDS_Config_LogVerbosity> (verbosity.operator int());
+ NDDSConfigLogger::get_instance()->set_verbosity (n_verbosity);
+
+ // Generic code
+ if (this->qos_profile_.in ())
+ {
+ char* buf = ACE_OS::strdup (this->qos_profile_.in ());
+ ACE_Tokenizer_T<char> tok (buf);
+ tok.delimiter_replace ('#', 0);
+ for (char *p = tok.next (); p; p = tok.next ())
+ {
+ if (!this->library_name_)
+ {
+ this->library_name_ = p;
+ }
+ else if (!this->profile_name_)
+ {
+ this->profile_name_ = p;
+ }
+ }
+ }
+ if (this->library_name_ && this->profile_name_)
+ {
+ DPFACTORY->set_default_participant_qos_with_profile (
+ this->library_name_,
+ this->profile_name_);
+ this->domain_participant_ =
+ DPFACTORY->create_participant_with_profile (
+ this->domain_id_,
+ this->library_name_,
+ this->profile_name_,
+ ::DDS::DomainParticipantListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DomainParticipantQos qos;
+ this->domain_participant_ =
+ DPFACTORY->create_participant (
+ this->domain_id_,
+ qos,
+ ::DDS::DomainParticipantListener::_nil (),
+ 0);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_Base_Connector_T::init_default_domain: "
+ "Caught unexpected exception while configuring default domain <%d>\n",
+ this->domain_id_));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::set_session_context");
+
+ typename CCM_TYPE::context_type::_var_type lctx =
+ CCM_TYPE::context_type::_narrow (ctx);
+
+ if (::CORBA::is_nil (lctx.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->context_ = lctx;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
+ this->init_default_domain ();
+ this->configuration_complete_ = true;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate");
+ try
+ {
+ if (::CORBA::is_nil (this->domainparticipantlistener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->domainparticipantlistener_,
+ DomainParticipantListener(
+ this->context_->
+ get_connection_error_listener ()),
+ CORBA::NO_MEMORY ());
+ }
+ this->domain_participant_->set_listener (
+ this->domainparticipantlistener_.in (),
+ DomainParticipantListener::get_mask ());
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_Base_Connector_T::ccm_activate: "
+ "Caught unexpected exception while configuring default domain\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate");
+ try
+ {
+ this->domain_participant_->set_listener (
+ ::DDS::DomainParticipantListener::_nil (),
+ 0);
+ this->domainparticipantlistener_ = ::DDS::DomainParticipantListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_Base_Connector_T::ccm_passivate: "
+ "Caught unexpected exception while configuring default domain\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove (void)
+{
+ DDS4CCM_TRACE ("DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove");
+
+ ::DDS::ReturnCode_t const retcode = DPFACTORY->delete_participant (
+ this->domain_participant_.in ());
+ if (retcode != ::DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Base_Connector_T::ccm_remove - "
+ "Unable to delete participant: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retcode)));
+ throw CORBA::INTERNAL ();
+ }
+
+
+ this->domain_participant_ = ::DDS::DomainParticipant::_nil ();
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.h
new file mode 100644
index 00000000000..77466a88097
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Base_Connector_T.h
@@ -0,0 +1,57 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ */
+#ifndef DDS_BASE_CONNECTOR_T_H
+#define DDS_BASE_CONNECTOR_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+#include "tao/LocalObject.h"
+#include "dds4ccm/impl/dds/DomainParticipantListener_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+class DDS_Base_Connector_T
+ : public virtual CCM_TYPE::base_type,
+ public virtual ::CORBA::LocalObject,
+ private virtual ACE_Copy_Disabled
+{
+public:
+ DDS_Base_Connector_T (void);
+ virtual ~DDS_Base_Connector_T (void);
+
+ virtual ::DDS::DomainId_t domain_id (void);
+
+ virtual void domain_id (::DDS::DomainId_t domain_id);
+
+ virtual char *qos_profile (void);
+
+ virtual void qos_profile (const char * qos_profile);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_remove (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+
+protected:
+ void init_default_domain (void);
+
+ DDS::DomainId_t domain_id_;
+ CORBA::String_var qos_profile_;
+ bool configuration_complete_;
+ const char* library_name_;
+ const char* profile_name_;
+
+ ::DDS::DomainParticipant_var domain_participant_;
+ ::DDS::DomainParticipantListener_var domainparticipantlistener_;
+ typename CCM_TYPE::context_type::_var_type context_;
+
+ typedef ::CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE> DomainParticipantListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Base_Connector_T.cpp"
+
+#endif /* CONNECTOR_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.cpp
new file mode 100644
index 00000000000..3c37ed761bb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.cpp
@@ -0,0 +1,261 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Writer_T.h"
+#include "dds4ccm/impl/dds/Getter_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_Event_Connector_T (void) :
+ TopicBaseConnector (),
+ supplier_obtained_ (false),
+ push_consumer_obtained_ (false),
+ pull_consumer_obtained_ (false)
+
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_Event_Connector_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::writer_type::_ptr_type
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_data");
+
+ this->supplier_obtained_ = true;
+ return this->supplier_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataWriter_ptr
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_supplier_dds_entity");
+
+ this->supplier_obtained_ = true;
+ return this->supplier_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::getter_type::_ptr_type
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_fresh_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_fresh_data");
+
+ this->pull_consumer_obtained_ = true;
+ return this->pull_consumer_.get_fresh_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data");
+
+ this->push_consumer_obtained_ = true;
+ return this->push_consumer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_data");
+
+ this->pull_consumer_obtained_ = true;
+ return this->pull_consumer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::CCM_DDS::CCM_DataListenerControl_ptr
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data_control (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_data_control");
+
+ this->push_consumer_obtained_ = true;
+ return this->push_consumer_.get_data_control ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_consumer_dds_entity");
+
+ this->pull_consumer_obtained_ = true;
+ return this->pull_consumer_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_consumer_dds_entity");
+
+ this->push_consumer_obtained_ = true;
+ return this->push_consumer_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ TopicBaseConnector::configuration_complete ();
+
+ this->push_consumer_obtained_ |=
+ ! ::CORBA::is_nil (this->context_->get_connection_push_consumer_data_listener ());
+
+ ::CCM_DDS::PortStatusListener_var push_consumer_psl =
+ this->context_->get_connection_push_consumer_status ();
+ this->push_consumer_obtained_ |= ! ::CORBA::is_nil (push_consumer_psl.in ());
+
+ ::CCM_DDS::PortStatusListener_var pull_consumer_psl =
+ this->context_->get_connection_pull_consumer_status ();
+ this->pull_consumer_obtained_ |=
+ ! ::CORBA::is_nil (pull_consumer_psl.in ());
+
+ if (this->push_consumer_obtained_)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "Creating push consumer port.\n"));
+ this->push_consumer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "No need to create push consumer port.\n"));
+ }
+
+ if (this->supplier_obtained_)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "Creating supplier port.\n"));
+ this->supplier_.configuration_complete(
+ this->topic_.in (),
+ this->publisher_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "No need to create supplier port.\n"));
+ }
+
+ if (this->pull_consumer_obtained_)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "Creating pull consumer port.\n"));
+ this->pull_consumer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete - "
+ "No need to create pull consumer port.\n"));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate");
+ ACE_Reactor* reactor = 0;
+#if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ reactor = this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ();
+#endif
+ TopicBaseConnector::ccm_activate (reactor);
+
+ if (this->push_consumer_obtained_)
+ {
+ this->push_consumer_.activate (
+ this->context_->get_connection_push_consumer_data_listener (),
+ this->context_->get_connection_push_consumer_status (),
+ reactor);
+ }
+
+ if (this->supplier_obtained_)
+ {
+ this->supplier_.activate ();
+ }
+
+ if (this->pull_consumer_obtained_)
+ {
+ this->pull_consumer_.activate (
+ this->context_->get_connection_pull_consumer_status (),
+ reactor);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate");
+
+ if (this->push_consumer_obtained_)
+ {
+ this->push_consumer_.passivate ();
+ }
+
+ if (this->supplier_obtained_)
+ {
+ this->supplier_.passivate ();
+ }
+
+ if (this->pull_consumer_obtained_)
+ {
+ this->pull_consumer_.passivate ();
+ }
+ TopicBaseConnector::ccm_passivate ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove (void)
+{
+ DDS4CCM_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove");
+
+ if (this->push_consumer_obtained_)
+ {
+ this->push_consumer_.remove (this->subscriber_.in ());
+ }
+
+ if (this->supplier_obtained_)
+ {
+ this->supplier_.remove (this->publisher_.in ());
+ }
+
+ if (this->pull_consumer_obtained_)
+ {
+ this->pull_consumer_.remove (this->subscriber_.in ());
+ }
+ TopicBaseConnector::ccm_remove ();
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.h
new file mode 100644
index 00000000000..cc6783ea175
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Event_Connector_T.h
@@ -0,0 +1,95 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_EVENT_CONNECTOR_T_H_
+#define DDS_EVENT_CONNECTOR_T_H_
+
+#include "dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h"
+#include "dds4ccm/impl/dds/DDS_Get_T.h"
+#include "dds4ccm/impl/dds/DDS_Write_T.h"
+#include "dds4ccm/impl/dds/DDS_Listen_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_Event_Connector_T
+ : public virtual DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>
+{
+public:
+ DDS_Event_Connector_T (void);
+ virtual ~DDS_Event_Connector_T (void);
+
+ /**
+ * @name DDS_Write
+ * DDS_Write operations
+ */
+ //@{
+ virtual typename CCM_TYPE::writer_type::_ptr_type get_supplier_data (void);
+
+ virtual ::DDS::CCM_DataWriter_ptr get_supplier_dds_entity (void);
+ //@}
+
+ /**
+ * @name DDS_Get
+ * DDS_Get operations
+ */
+ //@{
+ virtual typename CCM_TYPE::reader_type::_ptr_type get_pull_consumer_data (void);
+
+ virtual typename CCM_TYPE::getter_type::_ptr_type get_pull_consumer_fresh_data (void);
+
+ virtual ::DDS::CCM_DataReader_ptr get_pull_consumer_dds_entity (void);
+ //@}
+
+ /**
+ * @name DDS_Listen
+ * DDS_Listen operations
+ */
+ //@{
+ virtual typename CCM_TYPE::reader_type::_ptr_type get_push_consumer_data (void);
+
+ virtual ::CCM_DDS::CCM_DataListenerControl_ptr get_push_consumer_data_control (void);
+
+ virtual ::DDS::CCM_DataReader_ptr get_push_consumer_dds_entity (void);
+ //@}
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+private:
+ bool supplier_obtained_;
+ bool push_consumer_obtained_;
+ bool pull_consumer_obtained_;
+
+ /**
+ * DDS_Write supplier
+ */
+ //@{
+ DDS_Write_T <DDS_TYPE, CCM_TYPE> supplier_;
+ //@}
+
+ /**
+ * DDS_Listen push_consumer
+ */
+ //@{
+ DDS_Listen_T <DDS_TYPE, CCM_TYPE, FIXED> push_consumer_;
+ //@}
+
+ /**
+ * DDS_Get pull_consumer
+ */
+ //@{
+ DDS_Get_T <DDS_TYPE, CCM_TYPE, FIXED> pull_consumer_;
+ //@}
+
+ typedef DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE> TopicBaseConnector;
+};
+
+#include "dds4ccm/impl/dds/DDS_Event_Connector_T.cpp"
+
+#endif /* DDS_EVENT_CONNECTOR_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.cpp
new file mode 100644
index 00000000000..2d7bb7c6ae3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.cpp
@@ -0,0 +1,190 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_Get_T (void) :
+ ccm_dds_reader_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_Get_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ try
+ {
+ if (!this->ccm_dds_reader_.get_impl ())
+ {
+ ::DDS::DataReader_var reader;
+ if (profile_name && library_name)
+ {
+ reader = subscriber->create_datareader_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ reader = subscriber->create_datareader (
+ topic,
+ drqos,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *> (reader.in ());
+ this->ccm_dds_reader_.set_impl (rd->get_impl ());
+ this->dds_get_.set_impl (&this->ccm_dds_reader_);
+ this->dds_read_.set_impl (&this->ccm_dds_reader_);
+ this->dds_read_.set_contentfilteredtopic_data (library_name,
+ profile_name,
+ &this->dds_get_);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::activate (
+ ::CCM_DDS::PortStatusListener_ptr listener,
+ ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::activate");
+ try
+ {
+ if (::CORBA::is_nil (this->status_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->status_,
+ PortStatusListener (listener, reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_reader_.set_listener (
+ this->status_.in (),
+ PortStatusListener::get_mask (listener));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate");
+ try
+ {
+ DDS_ReturnCode_t retcode = this->dds_get_.passivate ();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Get_T::passivate - "
+ "Unable to passivate Getter: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retcode)));
+ throw CORBA::INTERNAL ();
+ }
+ retcode = this->dds_read_.passivate ();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Get_T::passivate - "
+ "Unable to passivate Reader: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retcode)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_reader_.set_listener (
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ this->status_ = ::DDS::DataReaderListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::remove (
+ ::DDS::Subscriber_ptr subscriber)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::remove");
+ try
+ {
+ DDS::ReturnCode_t const retval =
+ subscriber->delete_datareader (&this->ccm_dds_reader_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Get_T::remove - "
+ "Unable to delete DataReader: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->dds_get_.set_impl (0);
+ this->dds_read_.set_impl (0);
+ this->ccm_dds_reader_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Get_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::getter_type::_ptr_type
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_fresh_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_fresh_data");
+
+ return &this->dds_get_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data");
+
+ return &this->dds_read_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Get_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity");
+
+ return &this->ccm_dds_reader_;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.h
new file mode 100644
index 00000000000..19abbfeb397
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Get_T.h
@@ -0,0 +1,65 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_GET_T_H_
+#define DDS_GET_T_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/Getter_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_Get_T
+{
+public:
+ DDS_Get_T (void);
+ ~DDS_Get_T (void);
+
+ /**
+ * @name DDS_Get
+ * DDS_Get operations
+ */
+ //@{
+ typename CCM_TYPE::reader_type::_ptr_type get_data (void);
+
+ typename CCM_TYPE::getter_type::_ptr_type get_fresh_data (void);
+
+ ::DDS::CCM_DataReader_ptr get_dds_entity (void);
+ //@}
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (
+ ::CCM_DDS::PortStatusListener_ptr listener,
+ ACE_Reactor* reactor);
+
+ void passivate (void);
+
+ void remove (::DDS::Subscriber_ptr subscriber);
+
+private:
+ /**
+ * DDS_Get
+ */
+ //@{
+ ::DDS::DataReaderListener_var status_;
+ ::CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, FIXED> dds_get_;
+ ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED> dds_read_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i ccm_dds_reader_;
+ //@}
+
+ typedef ::CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE> PortStatusListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Get_T.cpp"
+
+#endif /* DDS_GET_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.cpp
new file mode 100644
index 00000000000..97cf9aa08da
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.cpp
@@ -0,0 +1,181 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Writer_T.h"
+#include "dds4ccm/impl/dds/Getter_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/dds/Topic.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_Listen_T (void) :
+ data_control_ (new CCM_DDS_DataListenerControl_T
+ < ::CCM_DDS::CCM_DataListenerControl> ()),
+ ccm_dds_reader_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_Listen_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ try
+ {
+ if (!this->ccm_dds_reader_.get_impl ())
+ {
+ ::DDS::DataReader_var reader;
+ if (library_name && profile_name)
+ {
+ reader = subscriber->create_datareader_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ reader = subscriber->create_datareader (
+ topic,
+ drqos,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *> (reader.in ());
+ this->ccm_dds_reader_.set_impl (rd->get_impl ());
+ this->dds_read_.set_impl (&this->ccm_dds_reader_);
+ this->dds_read_.set_contentfilteredtopic_data (library_name, profile_name);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::activate (
+ typename CCM_TYPE::listener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr status,
+ ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::activate");
+ try
+ {
+ if (::CORBA::is_nil (this->data_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->data_listener_,
+ DataReaderListener (
+ listener,
+ status,
+ this->data_control_.in (),
+ reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_reader_.set_listener (
+ this->data_listener_.in (),
+ DataReaderListener::get_mask (listener));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate ()
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate");
+ try
+ {
+ this->ccm_dds_reader_.set_listener (
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ this->data_listener_= ::DDS::DataReaderListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::remove (
+ ::DDS::Subscriber_ptr subscriber)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::remove");
+ try
+ {
+ DDS::ReturnCode_t retval =
+ subscriber->delete_datareader (&this->ccm_dds_reader_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Listen_T::remove - "
+ "Unable to delete DataReader: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_reader_.set_impl (0);
+ this->dds_read_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Listen_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data");
+
+ return &this->dds_read_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity");
+
+ return &this->ccm_dds_reader_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::CCM_DDS::CCM_DataListenerControl_ptr
+DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data_control (void)
+{
+ DDS4CCM_TRACE ("DDS_Listen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data_control");
+
+ return ::CCM_DDS::CCM_DataListenerControl::_duplicate (this->data_control_.in ());
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.h
new file mode 100644
index 00000000000..9c8288a416b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Listen_T.h
@@ -0,0 +1,65 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_LISTEN_T_H_
+#define DDS_LISTEN_T_H_
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_Listen_T
+{
+public:
+ DDS_Listen_T (void);
+ ~DDS_Listen_T (void);
+
+ /**
+ * @name DDS_Listen
+ * DDS_Listen operations
+ */
+ //@{
+ typename CCM_TYPE::reader_type::_ptr_type get_data (void);
+
+ ::CCM_DDS::CCM_DataListenerControl_ptr get_data_control (void);
+
+ ::DDS::CCM_DataReader_ptr get_dds_entity (void);
+ //@}
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (
+ typename CCM_TYPE::listener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr status,
+ ACE_Reactor* reactor);
+
+ void passivate (void);
+
+ void remove (
+ ::DDS::Subscriber_ptr subscriber);
+
+private:
+ /**
+ * DDS_Listen
+ */
+ //@{
+ ::CCM_DDS::CCM_DataListenerControl_var data_control_;
+ ::DDS::DataReaderListener_var data_listener_;
+ ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED> dds_read_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i ccm_dds_reader_;
+ //@}
+ typedef ::CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE> DataReaderListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Listen_T.cpp"
+
+#endif /* DDS_LISTEN_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.cpp
new file mode 100644
index 00000000000..f3a5d061913
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.cpp
@@ -0,0 +1,162 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Writer_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_Read_T (void) :
+ ccm_dds_reader_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_Read_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ try
+ {
+ if (!this->ccm_dds_reader_.get_impl ())
+ {
+ ::DDS::DataReader_var reader;
+ if (profile_name && library_name)
+ {
+ reader = subscriber->create_datareader_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ reader = subscriber->create_datareader (
+ topic,
+ drqos,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *> (reader.in ());
+ this->ccm_dds_reader_.set_impl (rd->get_impl ());
+ this->dds_read_.set_impl (&this->ccm_dds_reader_);
+ this->dds_read_.set_contentfilteredtopic_data (library_name, profile_name);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::activate (
+ ::CCM_DDS::PortStatusListener_ptr listener,
+ ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::activate");
+
+ try
+ {
+ if (::CORBA::is_nil (this->status_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->status_,
+ PortStatusListener (listener, reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_reader_.set_listener (
+ this->status_.in (),
+ PortStatusListener::get_mask (listener));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate ()
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate");
+
+ try
+ {
+ this->ccm_dds_reader_.set_listener (::DDS::DataReaderListener::_nil (), 0);
+ this->status_ = ::DDS::DataReaderListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::remove (
+ ::DDS::Subscriber_ptr subscriber)
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::remove");
+
+ try
+ {
+ DDS::ReturnCode_t const retval =
+ subscriber->delete_datareader (&this->ccm_dds_reader_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Read_T::remove - "
+ "Unable to delete DataReader: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_reader_.set_impl (0);
+ this->dds_read_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Read_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data");
+
+ return &this->dds_read_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Read_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity");
+
+ return &this->ccm_dds_reader_;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.h
new file mode 100644
index 00000000000..db987a36e3f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Read_T.h
@@ -0,0 +1,59 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_READ_T_H_
+#define DDS_READ_T_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_Read_T
+{
+public:
+ DDS_Read_T (void);
+ ~DDS_Read_T (void);
+
+ /**
+ * @name DDS_Read
+ * DDS_Read operations
+ */
+ //@{
+ typename CCM_TYPE::reader_type::_ptr_type get_data (void);
+
+ ::DDS::CCM_DataReader_ptr get_dds_entity (void);
+ //@}
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (
+ ::CCM_DDS::PortStatusListener_ptr listener,
+ ACE_Reactor* reactor);
+
+ void passivate (void);
+
+ void remove (
+ ::DDS::Subscriber_ptr subscriber);
+
+private:
+ /**
+ * DDS_Read
+ */
+ //@{
+ ::DDS::DataReaderListener_var status_;
+ ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED> dds_read_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i ccm_dds_reader_;
+ //@}
+ typedef ::CIAO::DDS4CCM::PortStatusListener_T <DDS_TYPE, CCM_TYPE> PortStatusListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Read_T.cpp"
+
+#endif /* DDS_READ_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.cpp
new file mode 100644
index 00000000000..f6b1521b202
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.cpp
@@ -0,0 +1,177 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderStateListener_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/StateListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_StateListen_T (void) :
+ data_control_ (new CCM_DDS_StateListenerControl_T
+ < ::CCM_DDS::CCM_StateListenerControl> ()),
+ ccm_dds_reader_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_StateListen_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ try
+ {
+ if (!this->ccm_dds_reader_.get_impl ())
+ {
+ ::DDS::DataReader_var reader;
+ if (library_name && profile_name)
+ {
+ reader = subscriber->create_datareader_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ reader = subscriber->create_datareader (
+ topic,
+ drqos,
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i *> (reader.in ());
+ this->ccm_dds_reader_.set_impl (rd->get_impl ());
+ this->dds_read_.set_impl (&this->ccm_dds_reader_);
+ this->dds_read_.set_contentfilteredtopic_data (library_name, profile_name);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::activate (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr status,
+ ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::activate");
+
+ try
+ {
+ if (::CORBA::is_nil (this->data_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->data_listener_,
+ DataReaderStateListener (
+ listener,
+ status,
+ this->data_control_.in (),
+ reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_reader_.set_listener (
+ this->data_listener_.in (),
+ DataReaderStateListener::get_mask (listener));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate");
+ try
+ {
+ this->ccm_dds_reader_.set_listener (
+ ::DDS::DataReaderListener::_nil (),
+ 0);
+ this->data_listener_ = ::DDS::DataReaderListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::remove (
+ ::DDS::Subscriber_ptr subscriber)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::remove");
+ try
+ {
+ DDS::ReturnCode_t retval =
+ subscriber->delete_datareader (&this->ccm_dds_reader_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_StateListen_T::remove - "
+ "Unable to delete DataReader: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_reader_.set_impl (0);
+ this->dds_read_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_StateListen_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data (void)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data");
+
+ return &this->dds_read_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_dds_entity");
+
+ return &this->ccm_dds_reader_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::CCM_DDS::CCM_StateListenerControl_ptr
+DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data_control (void)
+{
+ DDS4CCM_TRACE ("DDS_StateListen_T<DDS_TYPE, CCM_TYPE, FIXED>::get_data_control");
+
+ return ::CCM_DDS::CCM_StateListenerControl::_duplicate (
+ this->data_control_.in ());
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.h
new file mode 100644
index 00000000000..368b4c52ead
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_StateListen_T.h
@@ -0,0 +1,62 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_STATELISTEN_T_H_
+#define DDS_STATELISTEN_T_H_
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_StateListen_T
+{
+public:
+ DDS_StateListen_T (void);
+ ~DDS_StateListen_T (void);
+
+ /**
+ * @name DDS_Listen
+ * DDS_Listen operations
+ */
+ //@{
+ typename CCM_TYPE::reader_type::_ptr_type get_data (void);
+
+ ::CCM_DDS::CCM_StateListenerControl_ptr get_data_control (void);
+
+ ::DDS::CCM_DataReader_ptr get_dds_entity (void);
+ //@}
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Subscriber_ptr subscriber,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr status,
+ ACE_Reactor* reactor);
+
+ void passivate (void);
+
+ void remove (
+ ::DDS::Subscriber_ptr subscriber);
+
+
+private:
+ /**
+ * DDS_Listen
+ */
+ //@{
+ ::CCM_DDS::CCM_StateListenerControl_var data_control_;
+ ::DDS::DataReaderListener_var data_listener_;
+ ::CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED> dds_read_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i ccm_dds_reader_;
+ //@}
+ typedef ::CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE> DataReaderStateListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_StateListen_T.cpp"
+
+#endif /* DDS_STATELISTEN_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.cpp
new file mode 100644
index 00000000000..6961e2a438c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.cpp
@@ -0,0 +1,352 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderStateListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Updater_T.h"
+#include "dds4ccm/impl/dds/Reader_T.h"
+#include "dds4ccm/impl/dds/PublisherListener_T.h"
+#include "dds4ccm/impl/dds/SubscriberListener_T.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/impl/dds/StateListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::DDS_State_Connector_T (void) :
+ TopicBaseConnector (),
+ observable_obtained_ (false),
+ passive_observer_obtained_ (false),
+ pull_observer_obtained_ (false),
+ push_observer_obtained_ (false),
+ push_state_observer_obtained_ (false)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::~DDS_State_Connector_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::updater_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_observable_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_observable_data");
+
+ this->observable_obtained_ = true;
+ return this->observable_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataWriter_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_observable_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_observable_dds_entity");
+
+ this->observable_obtained_ = true;
+ return this->observable_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_passive_observer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_passive_observer_data");
+
+ this->passive_observer_obtained_ = true;
+ return this->passive_observer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_passive_observer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_passive_observer_dds_entity");
+
+ this->passive_observer_obtained_ = true;
+ return this->passive_observer_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_data");
+
+ this->pull_observer_obtained_ = true;
+ return this->pull_observer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::getter_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_fresh_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_fresh_data");
+
+ this->pull_observer_obtained_ = true;
+ return this->pull_observer_.get_fresh_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_pull_observer_dds_entity");
+
+ return this->pull_observer_.get_dds_entity ();
+ this->pull_observer_obtained_ = true;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_data");
+
+ this->push_observer_obtained_ = true;
+ return this->push_observer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::CCM_DDS::CCM_DataListenerControl_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_data_control (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_data_control");
+
+ this->push_observer_obtained_ = true;
+ return this->push_observer_.get_data_control ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_observer_dds_entity");
+
+ this->push_observer_obtained_ = true;
+ return this->push_observer_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename CCM_TYPE::reader_type::_ptr_type
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_data (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_data");
+
+ this->push_state_observer_obtained_ = true;
+ return this->push_state_observer_.get_data ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::CCM_DDS::CCM_StateListenerControl_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_data_control (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_data_control");
+
+ this->push_state_observer_obtained_ = true;
+ return this->push_state_observer_.get_data_control ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+::DDS::CCM_DataReader_ptr
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::get_push_state_observer_dds_entity");
+
+ this->push_state_observer_obtained_ = true;
+ return this->push_state_observer_.get_dds_entity ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::configuration_complete");
+
+ TopicBaseConnector::configuration_complete ();
+
+ ::CCM_DDS::PortStatusListener_var push_observer_psl =
+ this->context_->get_connection_push_observer_status ();
+ typename CCM_TYPE::listener_type::_var_type push_observer_dl =
+ this->context_->get_connection_push_observer_data_listener ();
+ this->push_observer_obtained_ |= ! ::CORBA::is_nil (push_observer_psl.in ());
+ this->push_observer_obtained_ |= ! ::CORBA::is_nil (push_observer_dl.in ());
+
+ ::CCM_DDS::PortStatusListener_var push_state_observer_psl =
+ this->context_->get_connection_push_state_observer_status ();
+ typename CCM_TYPE::statelistener_type::_var_type push_state_observer_dl =
+ this->context_->get_connection_push_state_observer_data_listener ();
+ this->push_state_observer_obtained_ |= ! ::CORBA::is_nil (push_state_observer_psl.in ());
+ this->push_state_observer_obtained_ |= ! ::CORBA::is_nil (push_state_observer_dl.in ());
+
+ ::CCM_DDS::PortStatusListener_var pull_observer_psl =
+ this->context_->get_connection_pull_observer_status ();
+ this->pull_observer_obtained_ |= ! ::CORBA::is_nil (pull_observer_psl.in ());
+
+ ::CCM_DDS::PortStatusListener_var passive_observer_psl =
+ this->context_->get_connection_passive_observer_status ();
+ this->passive_observer_obtained_ |= ! ::CORBA::is_nil (passive_observer_psl.in ());
+
+ if (this->observable_obtained_)
+ {
+ this->observable_.configuration_complete (
+ this->topic_.in (),
+ this->publisher_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+
+ if (this->push_observer_obtained_)
+ {
+ this->push_observer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+
+ if (this->push_state_observer_obtained_)
+ {
+ this->push_state_observer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+
+ if (this->pull_observer_obtained_)
+ {
+ this->pull_observer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+
+ if (this->passive_observer_obtained_)
+ {
+ this->passive_observer_.configuration_complete (
+ this->topic_.in (),
+ this->subscriber_.in (),
+ this->library_name_,
+ this->profile_name_);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_activate");
+
+ ACE_Reactor* reactor = 0;
+#if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ reactor = this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ();
+#endif
+ TopicBaseConnector::ccm_activate (reactor);
+
+ if (this->observable_obtained_)
+ {
+ this->observable_.activate ();
+ }
+
+ if (this->push_observer_obtained_)
+ {
+ this->push_observer_.activate (
+ this->context_->get_connection_push_observer_data_listener (),
+ this->context_->get_connection_push_observer_status (),
+ reactor);
+ }
+
+ if (this->push_state_observer_obtained_)
+ {
+ this->push_state_observer_.activate (
+ this->context_->get_connection_push_state_observer_data_listener (),
+ this->context_->get_connection_push_state_observer_status (),
+ reactor);
+ }
+
+ if (this->pull_observer_obtained_)
+ {
+ this->pull_observer_.activate (
+ this->context_->get_connection_pull_observer_status (),
+ reactor);
+ }
+
+ if (this->passive_observer_obtained_)
+ {
+ this->passive_observer_.activate (
+ this->context_->get_connection_passive_observer_status (),
+ reactor);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_passivate");
+ if (this->observable_obtained_)
+ {
+ this->observable_.passivate ();
+ }
+
+ if (this->push_observer_obtained_)
+ {
+ this->push_observer_.passivate ();
+ }
+
+ if (this->push_state_observer_obtained_)
+ {
+ this->push_state_observer_.passivate ();
+ }
+
+ if (this->pull_observer_obtained_)
+ {
+ this->pull_observer_.passivate ();
+ }
+
+ if (this->passive_observer_obtained_)
+ {
+ this->passive_observer_.passivate ();
+ }
+
+ TopicBaseConnector::ccm_passivate ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove (void)
+{
+ DDS4CCM_TRACE ("DDS_State_Connector_T<DDS_TYPE, CCM_TYPE, FIXED>::ccm_remove");
+
+ if (this->observable_obtained_)
+ {
+ this->observable_.remove (this->publisher_.in ());
+ }
+
+ if (this->push_observer_obtained_)
+ {
+ this->push_observer_.remove (this->subscriber_.in ());
+ }
+
+ if (this->push_state_observer_obtained_)
+ {
+ this->push_state_observer_.remove (this->subscriber_.in ());
+ }
+
+ if (this->pull_observer_obtained_)
+ {
+ this->pull_observer_.remove (this->subscriber_.in ());
+ }
+
+ if (this->passive_observer_obtained_)
+ {
+ this->passive_observer_.remove (this->subscriber_.in ());
+ }
+ TopicBaseConnector::ccm_remove ();
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.h
new file mode 100644
index 00000000000..5b7c0baaf47
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_State_Connector_T.h
@@ -0,0 +1,118 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_STATE_CONNECTOR_T_H_
+#define DDS_STATE_CONNECTOR_T_H_
+
+#include "dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h"
+#include "dds4ccm/impl/dds/DDS_Get_T.h"
+#include "dds4ccm/impl/dds/DDS_Listen_T.h"
+#include "dds4ccm/impl/dds/DDS_StateListen_T.h"
+#include "dds4ccm/impl/dds/DDS_Update_T.h"
+#include "dds4ccm/impl/dds/DDS_Read_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+class DDS_State_Connector_T
+ : public virtual DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>
+{
+public:
+ DDS_State_Connector_T (void);
+ virtual ~DDS_State_Connector_T (void);
+
+ virtual typename CCM_TYPE::updater_type::_ptr_type
+ get_observable_data (void);
+
+ virtual ::DDS::CCM_DataWriter_ptr
+ get_observable_dds_entity (void);
+
+ virtual typename CCM_TYPE::reader_type::_ptr_type
+ get_passive_observer_data (void);
+
+ virtual ::DDS::CCM_DataReader_ptr
+ get_passive_observer_dds_entity (void);
+
+ virtual typename CCM_TYPE::reader_type::_ptr_type
+ get_pull_observer_data (void);
+
+ virtual typename CCM_TYPE::getter_type::_ptr_type
+ get_pull_observer_fresh_data (void);
+
+ virtual ::DDS::CCM_DataReader_ptr
+ get_pull_observer_dds_entity (void);
+
+ virtual typename CCM_TYPE::reader_type::_ptr_type
+ get_push_observer_data (void);
+
+ virtual ::CCM_DDS::CCM_DataListenerControl_ptr
+ get_push_observer_data_control (void);
+
+ virtual ::DDS::CCM_DataReader_ptr
+ get_push_observer_dds_entity (void);
+
+ virtual typename CCM_TYPE::reader_type::_ptr_type
+ get_push_state_observer_data (void);
+
+ virtual ::CCM_DDS::CCM_StateListenerControl_ptr
+ get_push_state_observer_data_control (void);
+
+ virtual ::DDS::CCM_DataReader_ptr
+ get_push_state_observer_dds_entity (void);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+private:
+ bool observable_obtained_;
+ bool passive_observer_obtained_;
+ bool pull_observer_obtained_;
+ bool push_observer_obtained_;
+ bool push_state_observer_obtained_;
+
+ /**
+ * DDS_Update observable
+ */
+ //@{
+ DDS_Update_T <DDS_TYPE, CCM_TYPE> observable_;
+ //@}
+
+ /**
+ * DDS_Read passive_observer
+ */
+ //@{
+ DDS_Read_T <DDS_TYPE, CCM_TYPE, FIXED> passive_observer_;
+ //@}
+
+ /**
+ * DDS_Get pull_observer
+ */
+ //@{
+ DDS_Get_T <DDS_TYPE, CCM_TYPE, FIXED> pull_observer_;
+ //@}
+
+ /**
+ * DDS_Listen push_observer
+ */
+ //@{
+ DDS_Listen_T <DDS_TYPE, CCM_TYPE, FIXED> push_observer_;
+ //@}
+
+ /**
+ * DDS_StateListen push_state_observer
+ */
+ //@{
+ DDS_StateListen_T <DDS_TYPE, CCM_TYPE, FIXED> push_state_observer_;
+ //@}
+
+typedef DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE> TopicBaseConnector;
+};
+
+#include "dds4ccm/impl/dds/DDS_State_Connector_T.cpp"
+
+#endif /* DDS_STATE_CONNECTOR_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.cpp
new file mode 100644
index 00000000000..619ce7cd49d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.cpp
@@ -0,0 +1,473 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::DDS_TopicBase_Connector_T (void) :
+ BaseConnector ()
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::~DDS_TopicBase_Connector_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
+ BaseConnector::configuration_complete ();
+ this->init_default_topic ();
+ this->init_subscriber ();
+ this->init_publisher ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate (ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate");
+ BaseConnector::ccm_activate ();
+ this->activate_default_topic (reactor);
+ this->activate_subscriber (reactor);
+ this->activate_publisher (reactor);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate");
+ this->passivate_default_topic ();
+ this->passivate_subscriber ();
+ this->passivate_publisher ();
+ BaseConnector::ccm_passivate ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove");
+ this->remove_default_topic ();
+ this->remove_subscriber ();
+ this->remove_publisher ();
+ BaseConnector::ccm_remove ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+char *
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::topic_name (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::topic_name");
+ return CORBA::string_dup (this->topic_name_.in ());
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::topic_name (
+ const char * topic_name)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::topic_name");
+ if (this->configuration_complete_)
+ {
+ throw ::CCM_DDS::NonChangeable ();
+ }
+ else
+ {
+ this->topic_name_ = topic_name;
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::key_fields (
+ const ::DDS::StringSeq & key_fields)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::key_fields");
+ if (this->configuration_complete_)
+ {
+ throw ::CCM_DDS::NonChangeable ();
+ }
+ else
+ {
+ this->key_fields_.length (key_fields.length ());
+ for (CORBA::ULong i = 0; i < key_fields.length (); ++i)
+ {
+ this->key_fields_.operator [](i) = CORBA::string_dup (key_fields[i]);
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StringSeq *
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::key_fields (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::key_fields");
+/*
+ For future use, DDS_TYPE doesn't have get_typecode yet
+ ::DDS_TypeCode* ptr = ::DDS_TYPE::type_support::get_typecode ();
+ DDS_ExceptionCode_t ex;
+ DDS_UnsignedLong const number = ptr->member_count (ex);
+ for (DDS_UnsignedLong i = 0; i < number; i++)
+ {
+ if (ptr->is_member_key (i, ex))
+ {
+ const char* name = ptr->member_name (i, ex);
+ printf ("Name: %s\n", name);
+ }
+ }
+ */
+ ::DDS::StringSeq_var retval = 0;
+ ACE_NEW_THROW_EX (retval,
+ ::DDS::StringSeq (this->key_fields_.length ()),
+ CORBA::NO_MEMORY ());
+ retval->length (this->key_fields_.length ());
+
+ for (CORBA::ULong i = 0; i < this->key_fields_.length (); ++i)
+ {
+ (*retval)[i] = CORBA::string_dup (this->key_fields_[i]);
+ }
+ return retval._retn ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::init_default_topic (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::init_default_topic");
+
+ if (::CORBA::is_nil (this->topic_.in ()))
+ {
+ try
+ {
+ CIAO::DDS4CCM::CCM_DDS_DomainParticipant_i *part =
+ dynamic_cast< CIAO::DDS4CCM::CCM_DDS_DomainParticipant_i * > (
+ this->domain_participant_.in ());
+ DDS_ReturnCode_t const retcode = DDS_TYPE::type_support::register_type(
+ part->get_impl (), DDS_TYPE::type_support::get_type_name ());
+
+ if (retcode == DDS_RETCODE_OK)
+ {
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->topic_ =
+ this->domain_participant_->create_topic_with_profile (
+ this->topic_name_.in (),
+ DDS_TYPE::type_support::get_type_name (),
+ this->library_name_,
+ this->profile_name_,
+ ::DDS::TopicListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::TopicQos tqos;
+ this->topic_ =
+ this->domain_participant_->create_topic (
+ this->topic_name_.in (),
+ DDS_TYPE::type_support::get_type_name (),
+ tqos,
+ ::DDS::TopicListener::_nil (),
+ 0);
+ }
+ }
+ else
+ {
+ throw CCM_DDS::InternalError (retcode, 0);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::init_default_topic: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::init_subscriber (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::init_subscriber");
+
+ if (::CORBA::is_nil (this->subscriber_.in ()))
+ {
+ try
+ {
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->subscriber_ = this->domain_participant_->
+ create_subscriber_with_profile (
+ this->library_name_,
+ this->profile_name_,
+ ::DDS::SubscriberListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::SubscriberQos sqos;
+ this->subscriber_ = this->domain_participant_->
+ create_subscriber (
+ sqos,
+ ::DDS::SubscriberListener::_nil (),
+ 0);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::init_subscriber: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::init_publisher (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::init_publisher");
+
+ if (::CORBA::is_nil (this->publisher_.in ()))
+ {
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->publisher_ = this->domain_participant_->
+ create_publisher_with_profile (
+ this->library_name_,
+ this->profile_name_,
+ ::DDS::PublisherListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::PublisherQos pqos;
+ this->publisher_ = this->domain_participant_->
+ create_publisher (
+ pqos,
+ ::DDS::PublisherListener::_nil (),
+ 0);
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::activate_default_topic (ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::activate_default_topic");
+ try
+ {
+ if (::CORBA::is_nil (this->topiclistener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->topiclistener_,
+ TopicListener (
+ this->context_->get_connection_error_listener (),
+ reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->topic_->set_listener (
+ this->topiclistener_.in (),
+ TopicListener::get_mask (
+ this->context_->get_connection_error_listener ()));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::activate_default_topic: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::activate_subscriber (ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::activate_subscriber");
+
+ try
+ {
+ if (::CORBA::is_nil (this->subscriber_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->subscriber_listener_,
+ SubscriberListener (
+ this->context_->get_connection_error_listener (),
+ reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->subscriber_->set_listener (
+ this->subscriber_listener_.in (),
+ SubscriberListener::get_mask (
+ this->context_->get_connection_error_listener ()));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::activate_subscriber: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::activate_publisher (ACE_Reactor* reactor)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::activate_publisher");
+
+ try
+ {
+ if (::CORBA::is_nil (this->publisher_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->publisher_listener_,
+ PublisherListener (
+ this->context_->get_connection_error_listener (),
+ reactor),
+ CORBA::NO_MEMORY ());
+ }
+ this->publisher_->set_listener (
+ this->publisher_listener_.in (),
+ PublisherListener::get_mask (
+ this->context_->get_connection_error_listener ()));
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::activate_publisher: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::passivate_default_topic (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::passivate_default_topic");
+
+ try
+ {
+ this->topic_->set_listener (
+ ::DDS::TopicListener::_nil (),
+ 0);
+
+ this->topiclistener_ = ::DDS::TopicListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::passivate_default_topic: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::passivate_subscriber (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::passivate_subscriber");
+
+ try
+ {
+ this->subscriber_->set_listener (
+ ::DDS::SubscriberListener::_nil (),
+ 0);
+ this->subscriber_listener_ = ::DDS::SubscriberListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::passivate_subscriber: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::passivate_publisher (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::passivate_publisher");
+
+ try
+ {
+ this->publisher_->set_listener (
+ ::DDS::PublisherListener::_nil (),
+ 0);
+ this->publisher_listener_ = ::DDS::PublisherListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::passivate_default_topic: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::remove_default_topic (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::remove_default_topic");
+
+ try
+ {
+ DDS::ReturnCode_t retval =
+ this->domain_participant_->delete_topic (this->topic_.in ());
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_TopicBase_Connector_T::remove - "
+ "Unable to delete Topic: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->topic_ = ::DDS::Topic::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::remove_default_topic: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::remove_subscriber (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::remove_subscriber");
+
+ try
+ {
+ this->domain_participant_->delete_subscriber (this->subscriber_.in ());
+ this->subscriber_ = ::DDS::Subscriber::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::remove_subscriber: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::remove_publisher (void)
+{
+ DDS4CCM_TRACE ("DDS_TopicBase_Connector_T::remove_publisher");
+
+ try
+ {
+ this->domain_participant_->delete_publisher (this->publisher_.in ());
+ this->publisher_ = ::DDS::Publisher::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, "DDS_TopicBase_Connector_T::remove_publisher: "
+ "Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h
new file mode 100644
index 00000000000..19c91c8f034
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h
@@ -0,0 +1,75 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_TOPIC_BASE_CONNECTOR_H
+#define DDS_TOPIC_BASE_CONNECTOR_H
+
+#include "ace/Copy_Disabled.h"
+#include "dds4ccm/impl/dds/DDS_Base_Connector_T.h"
+#include "dds4ccm/impl/dds/TopicListener_T.h"
+#include "dds4ccm/impl/dds/PublisherListener_T.h"
+#include "dds4ccm/impl/dds/SubscriberListener_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+class DDS_TopicBase_Connector_T
+ : public virtual DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>
+{
+public:
+ DDS_TopicBase_Connector_T (void);
+ virtual ~DDS_TopicBase_Connector_T (void);
+
+ virtual char *topic_name (void);
+
+ virtual void topic_name (const char * topic_name);
+
+ virtual ::DDS::StringSeq *key_fields (void);
+
+ virtual void key_fields (const ::DDS::StringSeq & key_fields);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_remove (void);
+ virtual void ccm_activate (ACE_Reactor* reactor);
+ virtual void ccm_passivate (void);
+
+protected:
+ void init_default_topic (void);
+ void init_publisher (void);
+ void init_subscriber (void);
+
+ void activate_default_topic (ACE_Reactor* reactor);
+ void activate_publisher (ACE_Reactor* reactor);
+ void activate_subscriber (ACE_Reactor* reactor);
+
+ void passivate_default_topic (void);
+ void passivate_publisher (void);
+ void passivate_subscriber (void);
+
+ void remove_default_topic (void);
+ void remove_publisher (void);
+ void remove_subscriber (void);
+
+ CORBA::String_var topic_name_;
+ DDS::StringSeq key_fields_;
+
+ ::DDS::Topic_var topic_;
+ ::DDS::TopicListener_var topiclistener_;
+
+ ::DDS::Publisher_var publisher_;
+ ::DDS::PublisherListener_var publisher_listener_;
+ ::DDS::Subscriber_var subscriber_;
+ ::DDS::SubscriberListener_var subscriber_listener_;
+
+typedef ::CIAO::DDS4CCM::TopicListener_T<DDS_TYPE, CCM_TYPE> TopicListener;
+typedef ::CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE> SubscriberListener;
+typedef ::CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE> PublisherListener;
+typedef DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE> BaseConnector;
+
+};
+
+#include "dds4ccm/impl/dds/DDS_TopicBase_Connector_T.cpp"
+
+#endif /* DDS_TOPIC_BASE_CONNECTOR_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.cpp
new file mode 100644
index 00000000000..fae108a1faa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.cpp
@@ -0,0 +1,151 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderStateListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/Updater_T.h"
+#include "dds4ccm/impl/dds/DataWriter.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::DDS_Update_T (void) :
+ ccm_dds_writer_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::~DDS_Update_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Publisher_ptr publisher,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
+ if (!this->ccm_dds_writer_.get_impl ())
+ {
+ try
+ {
+ ::DDS::DataWriter_var dwv_tmp;
+ if (library_name && profile_name)
+ {
+ dwv_tmp = publisher->create_datawriter_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataWriterQos dwqos;
+ dwv_tmp = publisher->create_datawriter (
+ topic,
+ dwqos,
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i *rw =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dwv_tmp.in ());
+ this->ccm_dds_writer_.set_impl (rw->get_impl ());
+ this->dds_update_.set_impl (&this->ccm_dds_writer_);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::activate ()
+{
+ DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::activate");
+ try
+ {
+ if (::CORBA::is_nil (this->data_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->data_listener_,
+ DataWriterListener (),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_writer_.set_listener (
+ this->data_listener_.in (),
+ DataWriterListener::get_mask ());
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::passivate ()
+{
+ DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::passivate");
+ try
+ {
+ this->ccm_dds_writer_.set_listener (
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ this->data_listener_ = ::DDS::DataWriterListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::remove (
+ ::DDS::Publisher_ptr publisher)
+{
+ DDS4CCM_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::remove");
+ try
+ {
+ DDS::ReturnCode_t retval =
+ publisher->delete_datawriter (&this->ccm_dds_writer_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Update_T::remove - "
+ "Unable to delete DataWriter: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_writer_.set_impl (0);
+ this->dds_update_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+typename CCM_TYPE::updater_type::_ptr_type
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::get_data (void)
+{
+ return &this->dds_update_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::CCM_DataWriter_ptr
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::get_dds_entity (void)
+{
+ return &this->ccm_dds_writer_;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.h
new file mode 100644
index 00000000000..11912ec8606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Update_T.h
@@ -0,0 +1,51 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_UPDATE_T_H
+#define DDS_UPDATE_T_H
+
+#include "dds4ccm/impl/dds/Updater_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+class DDS_Update_T
+{
+public:
+ DDS_Update_T (void);
+ ~DDS_Update_T (void);
+
+ typename CCM_TYPE::updater_type::_ptr_type get_data (void);
+
+ ::DDS::CCM_DataWriter_ptr get_dds_entity (void);
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Publisher_ptr publisher,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (void);
+
+ void passivate (void);
+
+ void remove (
+ ::DDS::Publisher_ptr publisher);
+
+private:
+ /**
+ * DDS_Update
+ */
+ //@{
+ ::DDS::DataWriterListener_var data_listener_;
+ ::CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE> dds_update_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i ccm_dds_writer_;
+ //@}
+ typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE> DataWriterListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Update_T.cpp"
+
+#endif /* DDS_UPDATE_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.cpp
new file mode 100644
index 00000000000..92e0178495a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.cpp
@@ -0,0 +1,156 @@
+// -*- C++ -*-
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/DataWriterListener_T.h"
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::DDS_Write_T (void) :
+ ccm_dds_writer_ (0)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::~DDS_Write_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Publisher_ptr publisher,
+ const char* library_name,
+ const char* profile_name)
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
+
+ try
+ {
+ if (!this->ccm_dds_writer_.get_impl ())
+ {
+ ::DDS::DataWriter_var dwv_tmp;
+ if (library_name && profile_name)
+ {
+ dwv_tmp = publisher->create_datawriter_with_profile (
+ topic,
+ library_name,
+ profile_name,
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ else
+ {
+ ::DDS::DataWriterQos dwqos;
+ dwv_tmp = publisher->create_datawriter (
+ topic,
+ dwqos,
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i *rw =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dwv_tmp.in ());
+ this->ccm_dds_writer_.set_impl (rw->get_impl ());
+ this->writer_t_.set_impl (&this->ccm_dds_writer_);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::configuration_complete: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::activate ()
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::activate");
+ try
+ {
+ if (::CORBA::is_nil (this->data_listener_.in ()))
+ {
+ ACE_NEW_THROW_EX (this->data_listener_,
+ DataWriterListener (),
+ CORBA::NO_MEMORY ());
+ }
+ this->ccm_dds_writer_.set_listener (
+ this->data_listener_.in (),
+ DataWriterListener::get_mask ());
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::activate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::passivate ()
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::passivate");
+ try
+ {
+ this->ccm_dds_writer_.set_listener (
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ this->data_listener_ = ::DDS::DataWriterListener::_nil ();
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::passivate: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::remove (
+ ::DDS::Publisher_ptr publisher)
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::remove");
+ try
+ {
+ DDS::ReturnCode_t const retval =
+ publisher->delete_datawriter (&this->ccm_dds_writer_);
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "DDS_Write_T::remove - "
+ "Unable to delete DataWriter: <%C>\n",
+ ::CIAO::DDS4CCM::translate_retcode (retval)));
+ throw CORBA::INTERNAL ();
+ }
+ this->ccm_dds_writer_.set_impl (0);
+ this->writer_t_.set_impl (0);
+ }
+ catch (...)
+ {
+ DDS4CCM_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::remove: Caught unexpected exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+typename CCM_TYPE::writer_type::_ptr_type
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::get_data (void)
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::get_data");
+
+ return &this->writer_t_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::CCM_DataWriter_ptr
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::get_dds_entity (void)
+{
+ DDS4CCM_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::get_dds_entity");
+
+ return &this->ccm_dds_writer_;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.h
new file mode 100644
index 00000000000..fb503da1947
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DDS_Write_T.h
@@ -0,0 +1,59 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_WRITE_T_H_
+#define DDS_WRITE_T_H_
+
+#include "dds4ccm/impl/dds/DDS_TopicBase_Connector_T.h"
+#include "dds4ccm/impl/dds/Writer_T.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+class DDS_Write_T
+{
+public:
+ DDS_Write_T (void);
+ ~DDS_Write_T (void);
+
+ /**
+ * @name DDS_Write
+ * DDS_Write operations
+ */
+ //@{
+ typename CCM_TYPE::writer_type::_ptr_type get_data (void);
+
+ ::DDS::CCM_DataWriter_ptr get_dds_entity (void);
+ //@}
+
+ void configuration_complete (
+ ::DDS::Topic_ptr topic,
+ ::DDS::Publisher_ptr publisher,
+ const char* library_name,
+ const char* profile_name);
+
+ void activate (void);
+
+ void passivate (void);
+
+ void remove (
+ ::DDS::Publisher_ptr publisher);
+
+private:
+ /**
+ * DDS_Write
+ */
+ //@{
+ ::DDS::DataWriterListener_var data_listener_;
+ ::CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE> writer_t_;
+ ::CIAO::DDS4CCM::CCM_DDS_DataWriter_i ccm_dds_writer_;
+ //@}
+
+ typedef ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE> DataWriterListener;
+};
+
+#include "dds4ccm/impl/dds/DDS_Write_T.cpp"
+
+#endif /* DDS_WRITE_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.cpp
new file mode 100644
index 00000000000..627cec340b4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.cpp
@@ -0,0 +1,50 @@
+// -*- C++ -*-
+// $Id$
+
+template <typename BASE_TYPE>
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::CCM_DDS_DataListenerControl_T (void) :
+ mode_ (::CCM_DDS::NOT_ENABLED),
+ max_delivered_data_ (0)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::CCM_DDS_DataListenerControl_T");
+}
+
+template <typename BASE_TYPE>
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::~CCM_DDS_DataListenerControl_T (void)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::~CCM_DDS_DataListenerControl_T");
+}
+
+template <typename BASE_TYPE>
+::CCM_DDS::ListenerMode
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::mode (void)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::mode");
+ return this->mode_.value ();
+}
+
+template <typename BASE_TYPE>
+void
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::mode (::CCM_DDS::ListenerMode mode)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::mode");
+ this->mode_ = mode;
+}
+
+template <typename BASE_TYPE>
+::CCM_DDS::DataNumber_t
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::max_delivered_data (void)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::max_delivered_data");
+ return this->max_delivered_data_.value ();
+}
+
+template <typename BASE_TYPE>
+void
+CCM_DDS_DataListenerControl_T<BASE_TYPE>::max_delivered_data (
+ ::CCM_DDS::DataNumber_t max_delivered_data)
+{
+ DDS4CCM_TRACE ("CCM_DDS_DataListenerControl_T::max_delivered_data");
+ this->max_delivered_data_ = max_delivered_data;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.h
new file mode 100644
index 00000000000..50630e7221a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataListenerControl_T.h
@@ -0,0 +1,48 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef DDS4CCM_DATALISTENERCONTROLI_H_
+#define DDS4CCM_DATALISTENERCONTROLI_H_
+
+#include "dds4ccm/idl/dds4ccm_DataListenerControlEC.h"
+#include "tao/LocalObject.h"
+#include "ace/Copy_Disabled.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+template <typename BASE_TYPE>
+class CCM_DDS_DataListenerControl_T
+ : public virtual BASE_TYPE,
+ public virtual ::CORBA::LocalObject,
+ private ACE_Copy_Disabled
+{
+public:
+ /// Constructor
+ CCM_DDS_DataListenerControl_T (void);
+
+ /// Destructor
+ virtual ~CCM_DDS_DataListenerControl_T (void);
+
+ /// Set the mode
+ virtual ::CCM_DDS::ListenerMode mode (void);
+
+ /// Get the mode
+ virtual void mode (::CCM_DDS::ListenerMode mode);
+
+ /// Set the max_delivered_data
+ virtual ::CCM_DDS::DataNumber_t max_delivered_data (void);
+
+ /// Get the max_delivered_data
+ virtual void max_delivered_data (::CCM_DDS::DataNumber_t max_delivered_data);
+
+protected:
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::ListenerMode> mode_;
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CCM_DDS::DataNumber_t> max_delivered_data_;
+};
+
+#include "dds4ccm/impl/dds/DataListenerControl_T.cpp"
+
+#endif /* DDS4CCM_DATALISTENERCONTROLI_H_ */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.cpp
new file mode 100644
index 00000000000..32af7c110fa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.cpp
@@ -0,0 +1,457 @@
+// $Id$
+
+#include "DataReader.h"
+#include "DataReaderListener.h"
+#include "StatusCondition.h"
+#include "ReadCondition.h"
+#include "QueryCondition.h"
+#include "Subscriber.h"
+#include "TopicDescription.h"
+#include "Topic.h"
+#include "ContentFilteredTopic.h"
+
+#include "ndds/SampleLostStatus.h"
+#include "ndds/SubscriptionMatchedStatus.h"
+#include "ndds/RequestedDeadlineMissedStatus.h"
+#include "ndds/SampleRejectedStatus.h"
+#include "ndds/LivelinessChangedStatus.h"
+#include "ndds/PublicationBuiltinTopicData.h"
+#include "ndds/RequestedIncompatibleQosStatus.h"
+#include "ndds/Duration_t.h"
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/InstanceHandleSeq.h"
+#include "ndds/DataReaderQos.h"
+#include "ndds/StringSeq.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DataReader_i::CCM_DDS_DataReader_i (DDSDataReader * dr)
+ : impl_ (dr)
+ {
+ }
+
+ CCM_DDS_DataReader_i::~CCM_DDS_DataReader_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_DataReader_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ if (sc)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ if (! ::CORBA::is_nil (sc.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_DataReader_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ DDS_INSTANCE_HANDLE_T_RETN
+ CCM_DDS_DataReader_i::get_instance_handle (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ ::DDS::ReadCondition_ptr
+ CCM_DDS_DataReader_i::create_readcondition (
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+ {
+ ::DDS::ReadCondition_var retval = ::DDS::ReadCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSReadCondition* rc = this->impl ()->create_readcondition (sample_states, view_states, instance_states);
+ if (rc)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_ReadCondition_i (rc),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::ReadCondition_var rc = this->impl ()->create_readcondition (sample_states, view_states, instance_states);
+ if (! ::CORBA::is_nil (rc.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::QueryCondition_ptr
+ CCM_DDS_DataReader_i::create_querycondition (
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states,
+ const char * query_expression,
+ const ::DDS::StringSeq & query_parameters)
+ {
+ ::DDS::QueryCondition_var retval = ::DDS::QueryCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_StringSeq parameters;
+ parameters <<= query_parameters;
+ DDSQueryCondition* qc = this->impl ()->create_querycondition (
+ sample_states,
+ view_states,
+ instance_states,
+ query_expression,
+ parameters);
+
+ if (qc)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_QueryCondition_i (qc),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::QueryCondition_var qc = this->impl ()->create_querycondition (
+ sample_states,
+ view_states,
+ instance_states,
+ query_expression,
+ query_parameters);
+
+ if (! ::CORBA::is_nil (qc.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_QueryCondition_i (qc.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::delete_readcondition (
+ ::DDS::ReadCondition_ptr a_condition)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_ReadCondition_i *rc = dynamic_cast< CCM_DDS_ReadCondition_i *> (a_condition);
+ if (!rc)
+ {
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+ return this->impl ()->delete_readcondition (rc->get_impl ());
+#else
+ return this->impl ()->delete_readcondition (a_condition);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::delete_contained_entities (void)
+ {
+ return this->impl ()->delete_contained_entities ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::set_qos (
+ const ::DDS::DataReaderQos &qos)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataReaderQos ddsqos;
+ ddsqos <<= qos;
+ return this->impl ()->set_qos (ddsqos);
+#else
+ return this->impl ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_qos (
+ ::DDS::DataReaderQos &qos)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataReaderQos ddsqos;
+ ::DDS_ReturnCode_t const retval = this->impl ()->get_qos (ddsqos);
+ qos <<= ddsqos;
+ return retval;
+#else
+ return this->impl ()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::set_listener (
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReader_i::set_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_DataReaderListener_i *ccm_dds_drl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_drl,
+ CCM_DDS_DataReaderListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl ()->set_listener (ccm_dds_drl, mask);
+#else
+ return this->impl ()->set_listener (a_listener, mask);
+#endif
+ }
+
+ ::DDS::DataReaderListener_ptr
+ CCM_DDS_DataReader_i::get_listener (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReader_i::get_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDataReaderListener *drl = this->impl ()->get_listener ();
+ CCM_DDS_DataReaderListener_i *ccm_dds_drl = dynamic_cast <CCM_DDS_DataReaderListener_i *> (drl);
+ if (!ccm_dds_drl)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_DataReader_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::DataReaderListener::_nil ();
+ }
+ return ccm_dds_drl->get_datareaderlistener ();
+#else
+ return this->impl ()->get_listener ();
+#endif
+ }
+
+ ::DDS::TopicDescription_ptr
+ CCM_DDS_DataReader_i::get_topicdescription (void)
+ {
+ ::DDS::TopicDescription_var dds_td = ::DDS::TopicDescription::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDSTopicDescription* td = this->impl ()->get_topicdescription ();
+ ::DDSTopic * tp = ::DDSTopic::narrow (td);
+ if (tp)
+ {
+ ACE_NEW_THROW_EX (dds_td,
+ CCM_DDS_Topic_i (tp),
+ CORBA::NO_MEMORY ());
+ }
+ else
+ {
+ ::DDSContentFilteredTopic * cft =
+ DDSContentFilteredTopic::narrow (td);
+ if (cft)
+ {
+ ACE_NEW_THROW_EX (dds_td,
+ CCM_DDS_ContentFilteredTopic_i (cft),
+ CORBA::NO_MEMORY ());
+ }
+ }
+#else
+ ::DDS::TopicDescription_var td = this->impl ()->get_topicdescription ();
+ ACE_NEW_THROW_EX (dds_td,
+ CCM_DDS_TopicDescription_i (td.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return dds_td._retn ();
+ }
+
+ ::DDS::Subscriber_ptr
+ CCM_DDS_DataReader_i::get_subscriber (void)
+ {
+ ::DDS::Subscriber_var dds_td = ::DDS::Subscriber::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDSSubscriber* subscriber = this->impl ()->get_subscriber ();
+ ACE_NEW_THROW_EX (dds_td,
+ CCM_DDS_Subscriber_i (subscriber),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDSSubscriber_var subscriber = this->impl ()->get_subscriber ();
+ ACE_NEW_THROW_EX (dds_td,
+ CCM_DDS_Subscriber_i (subscriber.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return dds_td._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_sample_rejected_status (
+ ::DDS::SampleRejectedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_SampleRejectedStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_sample_rejected_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_sample_rejected_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_liveliness_changed_status (
+ ::DDS::LivelinessChangedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_LivelinessChangedStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_liveliness_changed_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_liveliness_changed_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_requested_deadline_missed_status (
+ ::DDS::RequestedDeadlineMissedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_RequestedDeadlineMissedStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_requested_deadline_missed_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_requested_deadline_missed_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_requested_incompatible_qos_status (
+ ::DDS::RequestedIncompatibleQosStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_RequestedIncompatibleQosStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_requested_incompatible_qos_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_requested_incompatible_qos_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_subscription_matched_status (
+ ::DDS::SubscriptionMatchedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriptionMatchedStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_subscription_matched_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_subscription_matched_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_sample_lost_status (
+ ::DDS::SampleLostStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_SampleLostStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_sample_lost_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_sample_lost_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::wait_for_historical_data (
+ const ::DDS::Duration_t & max_wait)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_Duration_t rtiduration;
+ rtiduration <<= max_wait;
+ return this->impl ()->wait_for_historical_data (rtiduration);
+#else
+ return this->impl ()->wait_for_historical_data (max_wait);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_matched_publications (
+ ::DDS::InstanceHandleSeq & publication_handles)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReader_i::get_matched_publications");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_matched_publications (rtiseq);
+ publication_handles <<= rtiseq;
+ return retval;
+#else
+ return this->impl ()->get_matched_publications (publication_handles);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataReader_i::get_matched_publication_data (
+ ::DDS::PublicationBuiltinTopicData & publication_data,
+ DDS_INSTANCE_HANDLE_T_IN publication_handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublicationBuiltinTopicData ccm_dds_pub_data;
+ ::DDS_InstanceHandle_t ccm_dds_pub_handle;
+
+ ccm_dds_pub_data <<= publication_data;
+ ccm_dds_pub_handle <<= publication_handle;
+ ::DDS::ReturnCode_t const retcode = this->impl()->
+ get_matched_publication_data (ccm_dds_pub_data,
+ ccm_dds_pub_handle);
+ publication_data <<= ccm_dds_pub_data;
+ return retcode;
+#else
+ return this->impl ()->get_matched_publication_data (publication_data, publication_handle);
+#endif
+ }
+
+ DDSDataReader *
+ CCM_DDS_DataReader_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_DataReader_i::set_impl (DDSDataReader * dr)
+ {
+ this->impl_ = dr;
+ }
+
+ DDSDataReader *
+ CCM_DDS_DataReader_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.h
new file mode 100644
index 00000000000..88805eb70e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReader.h
@@ -0,0 +1,134 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAREADER_H
+#define DDS4CCM_DATAREADER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataReader DDSDataReader;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DataReader_i
+ : public virtual ::DDS::CCM_DataReader,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DataReader_i (DDSDataReader *dr);
+
+ /// Destructor
+ virtual ~CCM_DDS_DataReader_i (void);
+
+ virtual ::DDS::ReturnCode_t enable (void);
+
+ virtual ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual ::DDS::StatusMask get_status_changes (void);
+
+ virtual DDS_INSTANCE_HANDLE_T_RETN get_instance_handle (void);
+
+ virtual ::DDS::ReadCondition_ptr
+ create_readcondition (
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states);
+
+ virtual ::DDS::QueryCondition_ptr
+ create_querycondition (
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states,
+ const char * query_expression,
+ const ::DDS::StringSeq & query_parameters);
+
+ virtual ::DDS::ReturnCode_t
+ delete_readcondition (
+ ::DDS::ReadCondition_ptr a_condition);
+
+ virtual ::DDS::ReturnCode_t delete_contained_entities (void);
+
+ virtual ::DDS::ReturnCode_t set_qos (const ::DDS::DataReaderQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_qos (::DDS::DataReaderQos & qos);
+
+ virtual ::DDS::ReturnCode_t
+ set_listener (
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual ::DDS::DataReaderListener_ptr get_listener (void);
+
+ virtual ::DDS::TopicDescription_ptr get_topicdescription (void);
+
+ virtual ::DDS::Subscriber_ptr get_subscriber (void);
+
+ virtual ::DDS::ReturnCode_t
+ get_sample_rejected_status (::DDS::SampleRejectedStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ get_liveliness_changed_status (
+ ::DDS::LivelinessChangedStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ get_requested_deadline_missed_status (
+ ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ get_requested_incompatible_qos_status (
+ ::DDS::RequestedIncompatibleQosStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ get_subscription_matched_status (
+ ::DDS::SubscriptionMatchedStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ get_sample_lost_status (::DDS::SampleLostStatus & status);
+
+ virtual ::DDS::ReturnCode_t
+ wait_for_historical_data (const ::DDS::Duration_t & max_wait);
+
+ virtual ::DDS::ReturnCode_t
+ get_matched_publications (
+ ::DDS::InstanceHandleSeq & publication_handles);
+
+ virtual ::DDS::ReturnCode_t
+ get_matched_publication_data (
+ ::DDS::PublicationBuiltinTopicData & publication_data,
+ DDS_INSTANCE_HANDLE_T_IN publication_handle);
+
+ DDSDataReader * get_impl (void);
+
+ void set_impl (DDSDataReader * dr);
+
+ private:
+ DDSDataReader * impl_;
+
+ DDSDataReader * impl (void);
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.cpp
new file mode 100644
index 00000000000..c7f51f3a2d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.cpp
@@ -0,0 +1,67 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::DataReaderHandler_T (
+ typename CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>* drl,
+ ::DDS::DataReader_ptr dr)
+ : drl_ (drl),
+ dr_ (::DDS::DataReader::_duplicate (dr))
+{
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::~DataReaderHandler_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+int
+CIAO::DDS4CCM::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::handle_exception (ACE_HANDLE)
+{
+ try
+ {
+ this->drl_->on_data_available_i (this->dr_.in ());
+ }
+ catch (...)
+ {
+ }
+ return 0;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderStateHandler_T<DDS_TYPE, CCM_TYPE>::DataReaderStateHandler_T (
+ typename CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>* drl,
+ ::DDS::DataReader_ptr dr)
+ : drl_ (drl),
+ dr_ (::DDS::DataReader::_duplicate (dr))
+{
+ this->reference_counting_policy ().value
+ (ACE_Event_Handler::Reference_Counting_Policy::ENABLED);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderStateHandler_T<DDS_TYPE, CCM_TYPE>::~DataReaderStateHandler_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+int
+CIAO::DDS4CCM::DataReaderStateHandler_T<DDS_TYPE, CCM_TYPE>::handle_exception (ACE_HANDLE)
+{
+ try
+ {
+ this->drl_->on_data_available_i (this->dr_.in ());
+ }
+ catch (...)
+ {
+ }
+ return 0;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.h
new file mode 100644
index 00000000000..44d96bc24c2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderHandler_T.h
@@ -0,0 +1,63 @@
+// $Id$
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Eventhandler on orb thread, handling the
+ * received data from DDS.
+ */
+
+#ifndef DDS4CCM_DATAREADERHANDLER_T_H
+#define DDS4CCM_DATAREADERHANDLER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Event_Handler.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderListener_T;
+
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderHandler_T :
+ public ACE_Event_Handler
+ {
+ public:
+ DataReaderHandler_T (
+ typename CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>* drl,
+ ::DDS::DataReader_ptr dr);
+ virtual ~DataReaderHandler_T ();
+
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ typename CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>* drl_;
+ ::DDS::DataReader_var dr_;
+ };
+
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderStateListener_T;
+
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderStateHandler_T :
+ public ACE_Event_Handler
+ {
+ public:
+ DataReaderStateHandler_T (
+ typename CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>* drl,
+ ::DDS::DataReader_ptr dr);
+ virtual ~DataReaderStateHandler_T ();
+
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ typename CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>* drl_;
+ ::DDS::DataReader_var dr_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/DataReaderHandler_T.cpp"
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.cpp
new file mode 100644
index 00000000000..2b6983ec63b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.cpp
@@ -0,0 +1,159 @@
+// $Id$
+
+#include "DataReaderListener.h"
+#include "DataReader.h"
+
+#include "ndds/SampleLostStatus.h"
+#include "ndds/SubscriptionMatchedStatus.h"
+#include "ndds/RequestedDeadlineMissedStatus.h"
+#include "ndds/SampleRejectedStatus.h"
+#include "ndds/LivelinessChangedStatus.h"
+#include "ndds/RequestedIncompatibleQosStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DataReaderListener_i::CCM_DDS_DataReaderListener_i (::DDS::DataReaderListener_ptr p)
+ : impl_ (::DDS::DataReaderListener::_duplicate (p))
+ {
+ }
+
+ CCM_DDS_DataReaderListener_i::~CCM_DDS_DataReaderListener_i (void)
+ {
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_requested_deadline_missed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedDeadlineMissedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_requested_deadline_missed");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::RequestedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_requested_incompatible_qos (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedIncompatibleQosStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_requested_incompatible_qos");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::RequestedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_sample_rejected (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleRejectedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_sample_rejected");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SampleRejectedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_sample_rejected (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_liveliness_changed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_LivelinessChangedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_liveliness_changed");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::LivelinessChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_liveliness_changed (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_data_available(::DDSDataReader *the_reader)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_data_available");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ this->impl_->on_data_available (dds_reader.in ());
+#else
+ this->impl_->on_data_available (dds_reader.in ());
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_subscription_matched (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SubscriptionMatchedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_subscription_matched");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SubscriptionMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_subscription_matched (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataReaderListener_i::on_sample_lost (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleLostStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataReaderListener_i::on_sample_lost");
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SampleLostStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_sample_lost (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_sample_lost (dds_reader.in (), status);
+#endif
+ }
+
+ ::DDS::DataReaderListener_ptr
+ CCM_DDS_DataReaderListener_i::get_datareaderlistener (void)
+ {
+ return ::DDS::DataReaderListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.h
new file mode 100644
index 00000000000..4a63e5a3571
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener.h
@@ -0,0 +1,74 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAREADERLISTENER_H
+#define DDS4CCM_DATAREADERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataReaderListener DDSDataReaderListener;
+typedef ::DDS::DataReader DDSDataReader;
+typedef ::DDS::RequestedDeadlineMissedStatus DDS_RequestedDeadlineMissedStatus;
+typedef ::DDS::LivelinessChangedStatus DDS_LivelinessChangedStatus;
+typedef ::DDS::RequestedIncompatibleQosStatus DDS_RequestedIncompatibleQosStatus;
+typedef ::DDS::SampleRejectedStatus DDS_SampleRejectedStatus;
+typedef ::DDS::SubscriptionMatchedStatus DDS_SubscriptionMatchedStatus;
+typedef ::DDS::SampleLostStatus DDS_SampleLostStatus;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DataReaderListener_i :
+ public virtual ::DDSDataReaderListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DataReaderListener_i (::DDS::DataReaderListener_ptr p);
+
+ /// Destructor
+ virtual ~CCM_DDS_DataReaderListener_i (void);
+
+ virtual void on_requested_deadline_missed(::DDSDataReader* reader,
+ const ::DDS_RequestedDeadlineMissedStatus& status);
+
+ virtual void on_liveliness_changed(::DDSDataReader* reader,
+ const ::DDS_LivelinessChangedStatus& status);
+
+ virtual void on_requested_incompatible_qos(::DDSDataReader* reader,
+ const ::DDS_RequestedIncompatibleQosStatus& status);
+
+ virtual void on_sample_rejected(::DDSDataReader* reader,
+ const ::DDS_SampleRejectedStatus& status);
+
+ virtual void on_data_available(::DDSDataReader* reader);
+
+ virtual void on_sample_lost(::DDSDataReader* reader,
+ const ::DDS_SampleLostStatus& status);
+
+ virtual void on_subscription_matched(::DDSDataReader* reader,
+ const ::DDS_SubscriptionMatchedStatus& status);
+
+ ::DDS::DataReaderListener_ptr get_datareaderlistener (void);
+ private:
+ ::DDS::DataReaderListener_var impl_;
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.cpp
new file mode 100644
index 00000000000..e05f3dacaac
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.cpp
@@ -0,0 +1,179 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "ace/Reactor.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::DataReaderListener_T (
+ typename CCM_TYPE::listener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ::CCM_DDS::DataListenerControl_ptr control,
+ ACE_Reactor* reactor)
+ : PortStatusListener_T <DDS_TYPE, CCM_TYPE> (port_status_listener, reactor) ,
+ listener_ (CCM_TYPE::listener_type::_duplicate (listener)),
+ control_ (::CCM_DDS::DataListenerControl::_duplicate (control))
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::DataReaderListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::~DataReaderListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::~DataReaderListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::on_data_available(::DDS::DataReader_ptr rdr)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::on_data_available");
+
+ if (! ::CORBA::is_nil (this->control_.in ()) && this->control_->mode () != ::CCM_DDS::NOT_ENABLED)
+ {
+ if (this->reactor_)
+ {
+ drh* rh = 0;
+ ACE_NEW (rh, drh (this, rdr));
+
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderListener_T::failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->on_data_available_i (rdr);
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::on_data_available_i (::DDS::DataReader_ptr rdr)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderListener_T::on_data_available_i");
+
+ if (::CORBA::is_nil (this->control_.in ()) || this->control_->mode () == ::CCM_DDS::NOT_ENABLED)
+ {
+ return;
+ }
+
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i* rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i*>(rdr);
+ if (!rd)
+ {
+ /* In this specific case, this will never fail */
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderListener_T::dynamic_cast failed.\n")));
+ return;
+ }
+
+ typename DDS_TYPE::data_reader * reader =
+ dynamic_cast< typename DDS_TYPE::data_reader * > ((rd->get_impl ()));
+
+ if (!reader)
+ {
+ /* In this specific case, this will never fail */
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderListener_T::narrow failed.\n")));
+ return;
+ }
+
+ typename DDS_TYPE::dds_seq_type data;
+ DDS_SampleInfoSeq sample_info;
+ ::DDS::ReturnCode_t const result = reader->take (
+ data,
+ sample_info,
+ DDS_LENGTH_UNLIMITED,
+ DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ANY_INSTANCE_STATE);
+ if (result == DDS_RETCODE_NO_DATA)
+ {
+ return;
+ }
+ else if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %C.\n"), translate_retcode (result)));
+ return;
+ }
+
+ if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE)
+ {
+ for (::DDS_Long i = 0; i < data.length (); ++i)
+ {
+ if (sample_info[i].valid_data)
+ {
+ ::CCM_DDS::ReadInfo info;
+ info <<= sample_info[i];
+ this->listener_->on_one_data (data[i], info);
+ }
+ }
+ }
+ else
+ {
+ CORBA::ULong nr_of_samples = 0;
+ for (::DDS_Long i = 0 ; i < sample_info.length(); i++)
+ {
+ if (sample_info[i].valid_data)
+ {
+ ++nr_of_samples;
+ }
+ }
+
+ if (nr_of_samples > 0)
+ {
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW (inst_seq,
+ typename CCM_TYPE::seq_type (nr_of_samples));
+
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW (infoseq,
+ ::CCM_DDS::ReadInfoSeq (nr_of_samples));
+
+ infoseq->length (nr_of_samples);
+ inst_seq->length (nr_of_samples);
+
+ // Copy the valid samples
+ CORBA::ULong ix = 0;
+ for (::DDS_Long i = 0 ; i < sample_info.length(); i++)
+ {
+ if(sample_info[i].valid_data)
+ {
+ (*infoseq)[ix] <<= sample_info[i];
+ (*inst_seq)[ix] = data[i];
+ ++ix;
+ }
+ }
+ this->listener_->on_many_data (*inst_seq, *infoseq);
+ }
+ }
+
+ // Return the loan
+ DDS_ReturnCode_t const retval = reader->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DataReaderListener_T::on_data_available_i - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::DataReaderListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ typename CCM_TYPE::listener_type::_ptr_type listener)
+{
+ if (! ::CORBA::is_nil (listener) || CIAO_debug_level >= 10)
+ {
+ return ::DDS::DATA_AVAILABLE_STATUS |
+ ::DDS::REQUESTED_DEADLINE_MISSED_STATUS |
+ ::DDS::SAMPLE_LOST_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.h
new file mode 100644
index 00000000000..07f63e29529
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderListener_T.h
@@ -0,0 +1,58 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAREADERLISTENER_T_H
+#define DDS4CCM_DATAREADERLISTENER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/impl/dds/PortStatusListener_T.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderListener_T :
+ public PortStatusListener_T <DDS_TYPE, CCM_TYPE>
+ {
+ public:
+ /// Constructor
+ DataReaderListener_T (
+ typename CCM_TYPE::listener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ::CCM_DDS::DataListenerControl_ptr control,
+ ACE_Reactor* reactor);
+
+ /// Destructor
+ virtual ~DataReaderListener_T (void);
+
+ virtual void on_data_available( ::DDS::DataReader *rdr);
+
+ static ::DDS::StatusMask get_mask (
+ typename CCM_TYPE::listener_type::_ptr_type listener);
+
+ void on_data_available_i ( ::DDS::DataReader *rdr);
+
+ private:
+ typename CCM_TYPE::listener_type::_var_type listener_;
+ ::CCM_DDS::DataListenerControl_var control_;
+
+ typedef ::CIAO::DDS4CCM::DataReaderHandler_T<DDS_TYPE, CCM_TYPE> drh;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/DataReaderListener_T.cpp"
+
+#endif /* DDS4CCM_DATAREADERLISTENER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.cpp
new file mode 100644
index 00000000000..a110cff07ed
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.cpp
@@ -0,0 +1,251 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DataReaderHandler_T.h"
+#include "tao/ORB_Core.h"
+
+#include <vector>
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::DataReaderStateListener_T (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ::CCM_DDS::StateListenerControl_ptr control,
+ ACE_Reactor* reactor)
+ : PortStatusListener_T <DDS_TYPE, CCM_TYPE> (port_status_listener, reactor) ,
+ listener_ (CCM_TYPE::statelistener_type::_duplicate (listener)),
+ control_ (::CCM_DDS::StateListenerControl::_duplicate (control))
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::DataReaderStateListener_T");
+}
+
+// Implementation skeleton destructor
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::~DataReaderStateListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::~DataReaderStateListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_data_available(::DDS::DataReader_ptr rdr)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available");
+ if (::CORBA::is_nil (this->control_.in ()) || this->control_->mode () == ::CCM_DDS::NOT_ENABLED)
+ return;
+ else
+ {
+ if (this->reactor_)
+ {
+ drsh* rh = 0;
+ ACE_NEW (rh, drsh (this, rdr));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderStateHandler_T::failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->on_data_available_i (rdr);
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::on_data_available_i (::DDS::DataReader_ptr rdr)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available_i");
+
+ if (::CORBA::is_nil (this->control_.in ()) || this->control_->mode () == ::CCM_DDS::NOT_ENABLED)
+ return;
+
+ ::CIAO::DDS4CCM::CCM_DDS_DataReader_i* rd =
+ dynamic_cast < ::CIAO::DDS4CCM::CCM_DDS_DataReader_i*>(rdr);
+ if (!rd)
+ {
+ /* In this specific case, this will never fail */
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::dynamic_cast failed.\n")));
+ return;
+ }
+
+ typename DDS_TYPE::data_reader * reader =
+ dynamic_cast< typename DDS_TYPE::data_reader * > ((rd->get_impl ()));
+
+ if (!reader)
+ {
+ /* In this specific case, this will never fail */
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("DataReaderStateListener_T::narrow failed.\n")));
+ return;
+ }
+
+ try
+ {
+ typename DDS_TYPE::dds_seq_type data;
+ DDS_SampleInfoSeq sample_info;
+ ::DDS_Long max_samples = 0;
+
+ this->control_->mode () == ::CCM_DDS::ONE_BY_ONE
+ ? max_samples = DDS_LENGTH_UNLIMITED
+ : this->control_->max_delivered_data() == 0
+ ? max_samples = DDS_LENGTH_UNLIMITED
+ : max_samples = this->control_->max_delivered_data ();
+
+ ::DDS::ReturnCode_t const result = reader->take (
+ data,
+ sample_info,
+ max_samples,
+ DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ANY_INSTANCE_STATE);
+ if (result == DDS_RETCODE_NO_DATA)
+ return;
+ else if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result));
+ }
+ if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE)
+ {
+ for (::DDS_Long i = 0; i < data.length (); ++i)
+ {
+ // Sample data may not be valid anymore when
+ // deleted so don't check the valid_data flag
+ // here.
+ if (sample_info[i].instance_state ==
+ ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE)
+ {
+ ::CCM_DDS::ReadInfo readinfo;
+ readinfo <<= sample_info[i];
+ this->listener_->on_deletion (data[i], readinfo);
+ }
+ if (sample_info[i].valid_data)
+ {
+ if (sample_info[i].view_state == ::DDS_NEW_VIEW_STATE)
+ {
+ ::CCM_DDS::ReadInfo readinfo;
+ readinfo <<= sample_info[i];
+ this->listener_->on_creation (data[i], readinfo);
+ }
+ else
+ {
+ ::CCM_DDS::ReadInfo info;
+ info <<= sample_info[i];
+ this->listener_->on_one_update (data[i], info);
+ }
+ }
+ }
+ }
+ else if (this->control_->mode () == ::CCM_DDS::MANY_BY_MANY)
+ {
+ typedef std::vector<DDS_Long> Updates;
+ Updates updates;
+
+ CORBA::ULong nr_of_updates = 0;
+
+ for (::DDS_Long i = 0 ; i < sample_info.length(); i++)
+ {
+ if ((sample_info[i].valid_data &&
+ sample_info[i].view_state == ::DDS_NEW_VIEW_STATE) ||
+ sample_info[i].instance_state == ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE)
+ {
+ // Sample_new or sample_delete found -> first send out the
+ // updated samples in one go
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW (inst_seq, typename CCM_TYPE::seq_type);
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW (infoseq, ::CCM_DDS::ReadInfoSeq);
+
+ infoseq->length (nr_of_updates);
+ inst_seq->length (nr_of_updates);
+ CORBA::ULong ix = 0;
+ for(Updates::iterator iter = updates.begin();
+ iter != updates.end();
+ ++iter)
+ {
+ (*infoseq)[ix] <<= sample_info[*iter];
+ (*inst_seq)[ix] = data[*iter];
+ ++ix;
+ }
+ this->listener_->on_many_updates (*inst_seq, *infoseq);
+ // Now invoke on_creation or on_deletion
+ if (sample_info[i].valid_data &&
+ sample_info[i].view_state == ::DDS_NEW_VIEW_STATE)
+ {
+ ::CCM_DDS::ReadInfo readinfo;
+ readinfo <<= sample_info[i];
+ this->listener_->on_creation (data[i], readinfo);
+ }
+ else if (sample_info[i].instance_state ==
+ ::DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE)
+ {
+ ::CCM_DDS::ReadInfo readinfo;
+ readinfo <<= sample_info[i];
+ this->listener_->on_deletion (data[i], readinfo);
+ }
+ // Clean up
+ updates.clear ();
+ nr_of_updates = 0;
+ }
+ else if (sample_info[i].valid_data)
+ {
+ ++nr_of_updates;
+ updates.push_back (i);
+ }
+ }
+ // Send the latest updates.
+ if (updates.size () > 0)
+ {
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW (inst_seq, typename CCM_TYPE::seq_type);
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW (infoseq, ::CCM_DDS::ReadInfoSeq);
+
+ infoseq->length (nr_of_updates);
+ inst_seq->length (nr_of_updates);
+ CORBA::ULong ix = 0;
+ for(Updates::iterator iter = updates.begin();
+ iter != updates.end();
+ ++iter)
+ {
+ (*infoseq)[ix] <<= sample_info[*iter];
+ (*inst_seq)[ix] = data[*iter];
+ ++ix;
+ }
+ this->listener_->on_many_updates (*inst_seq, *infoseq);
+ }
+ }
+ // Return the loan
+ DDS_ReturnCode_t const retval = reader->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available_i - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ }
+ catch (...)
+ {
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener)
+{
+ if (! ::CORBA::is_nil (listener) || CIAO_debug_level >= 10)
+ {
+ return ::DDS::DATA_AVAILABLE_STATUS |
+ ::DDS::REQUESTED_DEADLINE_MISSED_STATUS |
+ ::DDS::SAMPLE_LOST_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.h
new file mode 100644
index 00000000000..18e1cf4bb3d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataReaderStateListener_T.h
@@ -0,0 +1,53 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAREADERSTATELISTENER_T_H
+#define DDS4CCM_DATAREADERSTATELISTENER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataReaderStateListener_T :
+ public PortStatusListener_T <DDS_TYPE, CCM_TYPE>
+ {
+ public:
+ /// Constructor
+ DataReaderStateListener_T (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener,
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ::CCM_DDS::StateListenerControl_ptr control,
+ ACE_Reactor* reactor);
+
+ /// Destructor
+ virtual ~DataReaderStateListener_T (void);
+
+ virtual void on_data_available (::DDS::DataReader_ptr rdr);
+
+ static ::DDS::StatusMask get_mask (
+ typename CCM_TYPE::statelistener_type::_ptr_type listener);
+
+ void on_data_available_i (::DDS::DataReader_ptr rdr);
+
+ private:
+ typename CCM_TYPE::statelistener_type::_var_type listener_;
+ ::CCM_DDS::StateListenerControl_var control_;
+
+ typedef ::CIAO::DDS4CCM::DataReaderStateHandler_T<DDS_TYPE, CCM_TYPE> drsh;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/DataReaderStateListener_T.cpp"
+
+#endif /* DDS4CCM_DATAREADERSTATELISTENER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.cpp
new file mode 100644
index 00000000000..36ac76acaf3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.cpp
@@ -0,0 +1,301 @@
+// $Id$
+
+#include "DataWriter.h"
+#include "StatusCondition.h"
+#include "Publisher.h"
+#include "DataWriterListener.h"
+#include "Topic.h"
+
+#include "ndds/Duration_t.h"
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/PublicationMatchedStatus.h"
+#include "ndds/LivelinessLostStatus.h"
+#include "ndds/OfferedIncompatibleQosStatus.h"
+#include "ndds/OfferedDeadlineMissedStatus.h"
+#include "ndds/InstanceHandleSeq.h"
+#include "ndds/DataWriterQos.h"
+#include "ndds/SubscriptionBuiltinTopicData.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DataWriter_i::CCM_DDS_DataWriter_i (DDSDataWriter * dw)
+ : impl_ (dw)
+ {
+ }
+
+ CCM_DDS_DataWriter_i::~CCM_DDS_DataWriter_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::set_qos (const ::DDS::DataWriterQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataWriter_i::set_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataWriterQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_qos (ccm_dds_qos);
+#else
+ return this->impl ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_qos (::DDS::DataWriterQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataWriter_i::get_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataWriterQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ ::DDS::ReturnCode_t retcode = this->impl()->get_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl ()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::set_listener (::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ CCM_DDS_DataWriterListener_i* ccm_dds_impl_list = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_impl_list,
+ CCM_DDS_DataWriterListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl ()->set_listener (ccm_dds_impl_list, mask);
+ }
+
+ ::DDS::DataWriterListener_ptr
+ CCM_DDS_DataWriter_i::get_listener (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDataWriterListener *wr = this->impl ()->get_listener ();
+ CCM_DDS_DataWriterListener_i *list_proxy = dynamic_cast <CCM_DDS_DataWriterListener_i *> (wr);
+ if (!list_proxy)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_DataWriter_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::DataWriterListener::_nil ();
+ }
+ return list_proxy->get_datawriterlistener ();
+#else
+ return this->impl ()->get_listener ();
+#endif
+ }
+
+ ::DDS::Topic_ptr
+ CCM_DDS_DataWriter_i::get_topic (void)
+ {
+ ::DDS::Topic_var retval = ::DDS::Topic::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSTopic* t = this->impl ()->get_topic ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (t),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::Topic_var t = this->impl ()->get_topic ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (t.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::Publisher_ptr
+ CCM_DDS_DataWriter_i::get_publisher (void)
+ {
+ ::DDS::Publisher_var retval = ::DDS::Publisher::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSPublisher* p = this->impl ()->get_publisher ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Publisher_i (p),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::Publisher_var p = this->impl ()->get_publisher ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Publisher_i (p.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_Duration_t rtiduration;
+ rtiduration <<= max_wait;
+ return this->impl ()->wait_for_acknowledgments (rtiduration);
+#else
+ return this->impl ()->wait_for_acknowledgments (max_wait);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_liveliness_lost_status (::DDS::LivelinessLostStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_LivelinessLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_liveliness_lost_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_liveliness_lost_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_offered_deadline_missed_status (::DDS::OfferedDeadlineMissedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_OfferedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_offered_deadline_missed_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_offered_deadline_missed_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_offered_incompatible_qos_status (::DDS::OfferedIncompatibleQosStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_OfferedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_offered_incompatible_qos_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_offered_incompatible_qos_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_publication_matched_status (::DDS::PublicationMatchedStatus & status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublicationMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_publication_matched_status (ddsstatus);
+ status <<= ddsstatus;
+ return retval;
+#else
+ return this->impl ()->get_publication_matched_status (status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::assert_liveliness (void)
+ {
+ return this->impl ()->assert_liveliness ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_matched_subscriptions (::DDS::InstanceHandleSeq & subscription_handles)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandleSeq rtiseq;
+ rtiseq <<= subscription_handles;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_matched_subscriptions (rtiseq);
+ subscription_handles <<= rtiseq;
+ return retval;
+#else
+ return this->impl ()->get_matched_subscriptions (subscription_handles);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::get_matched_subscription_data (::DDS::SubscriptionBuiltinTopicData & subscription_data,
+ DDS_INSTANCE_HANDLE_T_IN subscription_handle)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DataWriter_i::get_matched_subscription_data");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriptionBuiltinTopicData ccm_dds_sub_data;
+ ::DDS_InstanceHandle_t ccm_dds_sub_handle;
+ ccm_dds_sub_handle <<= subscription_handle;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_matched_subscription_data (ccm_dds_sub_data,
+ ccm_dds_sub_handle);
+ subscription_data <<= ccm_dds_sub_data;
+ return retval;
+#else
+ return this->impl ()->get_matched_subscription_data (subscription_data, subscription_handle);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DataWriter_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_DataWriter_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_DataWriter_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ DDS_INSTANCE_HANDLE_T_RETN
+ CCM_DDS_DataWriter_i::get_instance_handle (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ DDSDataWriter *
+ CCM_DDS_DataWriter_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_DataWriter_i::set_impl (DDSDataWriter * dw)
+ {
+ this->impl_ = dw;
+ }
+
+ DDSDataWriter *
+ CCM_DDS_DataWriter_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.h
new file mode 100644
index 00000000000..fee440bf112
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriter.h
@@ -0,0 +1,113 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAWRITER_H
+#define DDS4CCM_DATAWRITER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataWriter DDSDataWriter;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DataWriter_i
+ : public virtual ::DDS::CCM_DataWriter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DataWriter_i (DDSDataWriter * dw);
+
+ /// Destructor
+ virtual ~CCM_DDS_DataWriter_i (void);
+
+ virtual
+ ::DDS::ReturnCode_t set_qos (const ::DDS::DataWriterQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t get_qos (::DDS::DataWriterQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t set_listener (::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual
+ ::DDS::DataWriterListener_ptr get_listener (void);
+
+ virtual
+ ::DDS::Topic_ptr get_topic (void);
+
+ virtual
+ ::DDS::Publisher_ptr get_publisher (void);
+
+ virtual
+ ::DDS::ReturnCode_t wait_for_acknowledgments (const ::DDS::Duration_t & max_wait);
+
+ virtual
+ ::DDS::ReturnCode_t get_liveliness_lost_status (::DDS::LivelinessLostStatus & status);
+
+ virtual
+ ::DDS::ReturnCode_t get_offered_deadline_missed_status (::DDS::OfferedDeadlineMissedStatus & status);
+
+ virtual
+ ::DDS::ReturnCode_t get_offered_incompatible_qos_status (::DDS::OfferedIncompatibleQosStatus & status);
+
+ virtual
+ ::DDS::ReturnCode_t get_publication_matched_status (::DDS::PublicationMatchedStatus & status);
+
+ virtual
+ ::DDS::ReturnCode_t assert_liveliness (void);
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_subscriptions (::DDS::InstanceHandleSeq & subscription_handles);
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_subscription_data (::DDS::SubscriptionBuiltinTopicData & subscription_data,
+ DDS_INSTANCE_HANDLE_T_IN subscription_handle);
+
+ virtual
+ ::DDS::ReturnCode_t enable (void);
+
+ virtual
+ ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual
+ ::DDS::StatusMask get_status_changes (void);
+
+ virtual
+ DDS_INSTANCE_HANDLE_T_RETN get_instance_handle (void);
+
+ DDSDataWriter * get_impl (void);
+
+ void set_impl (DDSDataWriter * dw);
+
+ private:
+ DDSDataWriter * impl_;
+
+ DDSDataWriter * impl (void);
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.cpp
new file mode 100644
index 00000000000..13416d987e7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.cpp
@@ -0,0 +1,108 @@
+// $Id$
+
+#include "DataWriterListener.h"
+#include "DataWriter.h"
+#include "ndds/PublicationMatchedStatus.h"
+#include "ndds/LivelinessLostStatus.h"
+#include "ndds/OfferedIncompatibleQosStatus.h"
+#include "ndds/OfferedDeadlineMissedStatus.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DataWriterListener_i::CCM_DDS_DataWriterListener_i (::DDS::DataWriterListener_ptr s)
+ : impl_ (::DDS::DataWriterListener::_duplicate (s))
+ {
+ }
+
+ CCM_DDS_DataWriterListener_i::~CCM_DDS_DataWriterListener_i (void)
+ {
+ }
+
+ void
+ CCM_DDS_DataWriterListener_i::on_offered_deadline_missed (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status)
+ {
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::OfferedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus);
+#else
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataWriterListener_i::on_offered_incompatible_qos (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status)
+ {
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::OfferedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus);
+#else
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataWriterListener_i::on_liveliness_lost (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_LivelinessLostStatus & status)
+ {
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::LivelinessLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus);
+#else
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_liveliness_lost (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_DataWriterListener_i::on_publication_matched (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_PublicationMatchedStatus & status)
+ {
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::PublicationMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_publication_matched (dds_writer.in (), ddsstatus);
+#else
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (the_writer));
+ this->impl_->on_publication_matched (dds_writer.in (), status);
+#endif
+ }
+
+ ::DDS::DataWriterListener_ptr
+ CCM_DDS_DataWriterListener_i::get_datawriterlistener (void)
+ {
+ return ::DDS::DataWriterListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.h
new file mode 100644
index 00000000000..3947cdf04da
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener.h
@@ -0,0 +1,71 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAWRITERLISTENER_H
+#define DDS4CCM_DATAWRITERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataWriterListener DDSDataWriterListener;
+typedef ::DDS::DataWriter DDSDataWriter;
+typedef ::DDS::OfferedDeadlineMissedStatus DDS_OfferedDeadlineMissedStatus;
+typedef ::DDS::OfferedIncompatibleQosStatus DDS_OfferedIncompatibleQosStatus;
+typedef ::DDS::LivelinessLostStatus DDS_LivelinessLostStatus;
+typedef ::DDS::PublicationMatchedStatus DDS_PublicationMatchedStatus;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DataWriterListener_i :
+ public virtual ::DDSDataWriterListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DataWriterListener_i (::DDS::DataWriterListener_ptr p);
+
+ /// Destructor
+ virtual ~CCM_DDS_DataWriterListener_i (void);
+
+ virtual void on_offered_deadline_missed (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status);
+
+ virtual void on_offered_incompatible_qos (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status);
+
+ virtual void on_liveliness_lost (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_LivelinessLostStatus & status);
+
+ virtual void on_publication_matched (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_PublicationMatchedStatus & status);
+
+ ::DDS::DataWriterListener_ptr get_datawriterlistener (void);
+ private:
+ ::DDS::DataWriterListener_var impl_;
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.cpp
new file mode 100644
index 00000000000..967058bfae5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.cpp
@@ -0,0 +1,76 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::DataWriterListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::DataWriterListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::~DataWriterListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::~DataWriterListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus &)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus &)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus &)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus &)
+{
+}
+
+#if (CIAO_DDS4CCM_NDDS==1)
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableWriterCacheChangedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableReaderActivityChangedStatus &)
+{
+}
+#endif
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DataWriterListener_T::get_mask");
+ return 0;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.h
new file mode 100644
index 00000000000..d6ec727260a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DataWriterListener_T.h
@@ -0,0 +1,72 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_DATAWRITERLISTENER_T
+#define DDS_DATAWRITERLISTENER_T
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "ace/Copy_Disabled.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DataWriterListener_T :
+ public ::DDS::DataWriterListener,
+ private ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ DataWriterListener_T (void);
+
+ /// Destructor
+ virtual ~DataWriterListener_T (void);
+
+ virtual void
+ on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus & );
+
+ virtual void
+ on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus & );
+
+ virtual void
+ on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus & );
+
+ virtual void
+ on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus & );
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual void
+ on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableWriterCacheChangedStatus & );
+
+ virtual void
+ on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableReaderActivityChangedStatus & );
+#endif
+
+ static ::DDS::StatusMask get_mask (void);
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/DataWriterListener_T.cpp"
+
+#endif /* DDS_DATAWRITERLISTENER_T */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.cpp
new file mode 100644
index 00000000000..a30cdb58125
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.cpp
@@ -0,0 +1,1132 @@
+// $Id$
+
+#include "DomainParticipant.h"
+#include "Subscriber.h"
+#include "Publisher.h"
+#include "ContentFilteredTopic.h"
+#include "Topic.h"
+#include "TopicDescription.h"
+#include "Utils.h"
+#include "StatusCondition.h"
+#include "PublisherListener.h"
+#include "SubscriberListener.h"
+#include "TopicListener.h"
+#include "DomainParticipantListener.h"
+
+#include "ndds/PublisherQos.h"
+#include "ndds/SubscriberQos.h"
+#include "ndds/TopicQos.h"
+#include "ndds/DomainParticipantQos.h"
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/Duration_t.h"
+#include "ndds/Time_t.h"
+#include "ndds/InstanceHandleSeq.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DomainParticipant_i::CCM_DDS_DomainParticipant_i (
+ DDSDomainParticipant * dp) : impl_ (dp)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipant_i::CCM_DDS_DomainParticipant_i");
+ }
+
+ CCM_DDS_DomainParticipant_i::~CCM_DDS_DomainParticipant_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipant_i::~CCM_DDS_DomainParticipant_i");
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::Publisher_ptr
+ CCM_DDS_DomainParticipant_i::create_publisher_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_publisher_with_profile");
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher_with_profile - "
+ "Creating Publisher\n"));
+ CCM_DDS_PublisherListener_i *ccm_dds_pl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_pl,
+ CCM_DDS_PublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ DDSPublisher * ccm_dds_pub =
+ this->impl ()->create_publisher_with_profile (library_name,
+ profile_name,
+ ccm_dds_pl,
+ mask);
+
+ if (!ccm_dds_pub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher_with_profile - "
+ "Error: Unable to create Publisher\n"));
+ delete ccm_dds_pl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Publisher_var retval = ::DDS::Publisher::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Publisher_i (ccm_dds_pub),
+ CORBA::NO_MEMORY ());
+
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher_with_profile - "
+ "Successfully created a DDSPublisher\n"));
+
+ ccm_dds_pub->enable ();
+ return retval._retn ();
+ }
+#endif
+
+ ::DDS::Publisher_ptr
+ CCM_DDS_DomainParticipant_i::create_publisher (
+ const ::DDS::PublisherQos & qos,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_publisher");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher - "
+ "Creating Publisher\n"));
+
+ DDS_PublisherQos ccm_dds_qos = DDS_PUBLISHER_QOS_DEFAULT;
+
+ CCM_DDS_PublisherListener_i *ccm_dds_pl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_pl,
+ CCM_DDS_PublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ DDSPublisher * ccm_dds_pub =
+ this->impl ()->create_publisher (ccm_dds_qos,
+ ccm_dds_pl,
+ mask);
+
+ if (!ccm_dds_pub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher - "
+ "Error: Unable to create Publisher\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Publisher_var retval = ::DDS::Publisher::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Publisher_i (ccm_dds_pub),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::create_publisher - "
+ "Successfully created a DDSPublisher\n"));
+
+ ccm_dds_pub->enable ();
+ return retval._retn ();
+#else
+ return this->impl ()->create_publisher (qos, a_listener, mask);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_publisher (::DDS::Publisher_ptr p)
+ {
+ CCM_DDS_Publisher_i *ccm_dds_pub = dynamic_cast < CCM_DDS_Publisher_i * > (p);
+
+ if (!ccm_dds_pub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_publisher - "
+ "Unable to cast provided object reference to servant pointer.\n"));
+ return ::DDS::RETCODE_ERROR;
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::delete_publisher - "
+ "Successfully casted provided object reference to CCM_DDS_Publisher_i\n"));
+
+ DDS_ReturnCode_t const retval = this->impl ()->delete_publisher (ccm_dds_pub->get_impl ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_publisher - "
+ "Error: RTI delete_publisher returned non-ok error code %C\n",
+ translate_retcode (retval)));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::delete_publisher - "
+ "Provided publisher successfully deleted\n"));
+ }
+
+ return retval;
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::Subscriber_ptr
+ CCM_DDS_DomainParticipant_i::create_subscriber_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_subscriber_with_profile");
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber_with_profile - "
+ "Creating Subscriber\n"));
+
+ CCM_DDS_SubscriberListener_i *ccm_dds_sl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_sl,
+ CCM_DDS_SubscriberListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ DDSSubscriber * ccm_dds_sub =
+ this->impl ()->create_subscriber_with_profile (
+ library_name,
+ profile_name,
+ ccm_dds_sl,
+ mask);
+
+ if (!ccm_dds_sub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber_with_profile - "
+ "Error: Unable to create Subscriber\n"));
+ delete ccm_dds_sl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Subscriber_var retval = ::DDS::Subscriber::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Subscriber_i (ccm_dds_sub),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber_with_profile - "
+ "Successfully created a DDSSubscriber\n"));
+
+ ccm_dds_sub->enable ();
+ return retval._retn ();
+ }
+#endif
+
+ ::DDS::Subscriber_ptr
+ CCM_DDS_DomainParticipant_i::create_subscriber (const ::DDS::SubscriberQos & qos,
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_subscriber");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber - "
+ "Creating Subscriber\n"));
+
+ CCM_DDS_SubscriberListener_i *ccm_dds_sl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_sl,
+ CCM_DDS_SubscriberListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ DDS_SubscriberQos ccm_dds_qos = DDS_SUBSCRIBER_QOS_DEFAULT;
+ DDSSubscriber * ccm_dds_sub =
+ this->impl ()->create_subscriber (ccm_dds_qos,
+ ccm_dds_sl,
+ mask);
+
+ if (!ccm_dds_sub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber - "
+ "Error: Unable to create Subscriber\n"));
+ delete ccm_dds_sl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Subscriber_var retval = ::DDS::Subscriber::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Subscriber_i (ccm_dds_sub),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::create_subscriber - "
+ "Successfully created a DDSSubscriber\n"));
+
+ ccm_dds_sub->enable ();
+ return retval._retn ();
+#else
+ return this->impl ()->create_subscriber (qos, a_listener, mask);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_subscriber (::DDS::Subscriber_ptr s)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_Subscriber_i *ccm_dds_sub = dynamic_cast < CCM_DDS_Subscriber_i * > (s);
+
+ if (!ccm_dds_sub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_subscriber - "
+ "Unable to cast provided object reference to servant pointer.\n"));
+ return ::DDS::RETCODE_ERROR;
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::delete_subscriber - "
+ "Successfully casted provided object reference to CCM_DDS_Subscriber_i\n"));
+
+ DDS_ReturnCode_t const retval = this->impl ()->delete_subscriber (ccm_dds_sub->get_impl ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_subscriber - "
+ "Error: RTI delete_subscriber returned non-ok error code %C\n",
+ translate_retcode (retval)));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::delete_subscriber - "
+ "Provided subscriber successfully deleted\n"));
+ }
+
+ return retval;
+#else
+ return this->impl ()->delete_subscriber (s);
+#endif
+ }
+
+ ::DDS::Subscriber_ptr
+ CCM_DDS_DomainParticipant_i::get_builtin_subscriber (void)
+ {
+ ::DDS::Subscriber_var retval = ::DDS::Subscriber::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSSubscriber* sub = this->impl ()->get_builtin_subscriber ();
+ if (sub)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Subscriber_i (sub),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::Subscriber_var sub = this->impl ()->get_builtin_subscriber ();
+ if (! ::CORBA::is_nil (sub.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Subscriber_i (sub.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::Topic_ptr
+ CCM_DDS_DomainParticipant_i::create_topic (const char * impl_name,
+ const char * type_name,
+ const ::DDS::TopicQos & qos,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_topic");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+
+ if (impl_name == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Error: provided nil topic name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER,
+ 0);
+ }
+
+ if (type_name == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Error: provided nil type name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER,
+ 0);
+ }
+
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Attempting to create topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ CCM_DDS_TopicListener_i *ccm_dds_tl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_tl,
+ CCM_DDS_TopicListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ DDS_TopicQos ccm_dds_qos = DDS_TOPIC_QOS_DEFAULT;
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->tps_mutex_, CORBA::INTERNAL ());
+ {
+ CCM_DDS_Topic_i *ccm_dds_tp = this->tps_[impl_name];
+
+ if (!ccm_dds_tp)
+ {
+ DDSTopic *dds_topic = this->impl ()->create_topic (impl_name,
+ type_name,
+ ccm_dds_qos,
+ ccm_dds_tl,
+ mask);
+
+ if (dds_topic == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Error: RTI DDS returned a nil topic\n"));
+ delete ccm_dds_tl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Topic_var retval = ::DDS::Topic::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (dds_topic),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Successfully created topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ ccm_dds_tp = dynamic_cast < CCM_DDS_Topic_i *> (retval.in ());
+ ccm_dds_tp->set_impl (dds_topic);
+
+ this->tps_[impl_name] = ccm_dds_tp;
+
+ return retval._retn ();
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Re-using topic with name %C and type %C.\n",
+ impl_name, type_name));
+
+ return ::DDS::Topic::_duplicate (ccm_dds_tp);
+ }
+ }
+#else
+ return this->impl ()->create_topic (impl_name,
+ type_name,
+ qos,
+ a_listener,
+ mask);
+#endif
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::Topic_ptr
+ CCM_DDS_DomainParticipant_i::create_topic_with_profile (
+ const char *impl_name,
+ const char *type_name,
+ const char *library_name,
+ const char *profile_name,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_topic_with_profile");
+
+ if (impl_name == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Error: provided nil topic name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+
+ if (type_name == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Error: provided nil type name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Attempting to create topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ CCM_DDS_TopicListener_i *ccm_dds_tl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_tl,
+ CCM_DDS_TopicListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->tps_mutex_, CORBA::INTERNAL ());
+ {
+ CCM_DDS_Topic_i *ccm_dds_tp = this->tps_[impl_name];
+
+ if (!ccm_dds_tp)
+ {
+ DDSTopic *dds_topic = this->impl ()->create_topic_with_profile (
+ impl_name,
+ type_name,
+ library_name,
+ profile_name,
+ ccm_dds_tl,
+ mask);
+
+ if (dds_topic == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Error: RTI DDS returned a nil topic\n"));
+ delete ccm_dds_tl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::Topic_var retval = ::DDS::Topic::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (dds_topic),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Successfully created topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ ccm_dds_tp = dynamic_cast < CCM_DDS_Topic_i *> (retval.in ());
+ ccm_dds_tp->set_impl (dds_topic);
+
+ this->tps_[impl_name] = ccm_dds_tp;
+
+ return retval._retn ();
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Re-using topic with name %C and type %C.\n",
+ impl_name, type_name));
+ return ::DDS::Topic::_duplicate (ccm_dds_tp);
+ }
+ }
+ }
+#endif
+
+ bool
+ CCM_DDS_DomainParticipant_i::remove_topic (CCM_DDS_Topic_i * topic)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipant_i::remove_topic");
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->tps_mutex_, CORBA::INTERNAL ());
+
+ if (topic->_refcount_value () == 1)
+ {
+ Topics::iterator pos;
+ for (pos = this->tps_.begin(); pos != this->tps_.end(); ++pos)
+ {
+ if (pos->second == topic)
+ {
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::remove_topic - "
+ "Removing topic for %C from list.\n",
+ pos->first.c_str ()));
+ this->tps_.erase (pos->first);
+ break;
+ }
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::remove_topic - "
+ "Don't delete topic %C since it's still used - ref_count <%d>\n",
+ topic->get_name (),
+ topic->_refcount_value ()));
+ return false;
+ }
+ return true;
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_topic (::DDS::Topic_ptr a_topic)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::delete_topic");
+ const char * topic_name = a_topic->get_name ();
+ CCM_DDS_Topic_i *top = this->tps_[topic_name];
+
+ if (!top)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_topic <%C> - "
+ "Unable to cast provided object reference to servant.\n",
+ topic_name));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipant_i::delete_topic <%C> - "
+ "Successfully casted provided object reference to servant.\n",
+ topic_name));
+
+ ::DDS::ReturnCode_t retval = DDS::RETCODE_OK;
+ if (this->remove_topic (top))
+ {
+ ::DDS::TopicDescription_var td =
+ lookup_topicdescription (ACE_TEXT ("DDS4CCMContentFilteredTopic"));
+ if (! ::CORBA::is_nil (td.in ()))
+ {
+ ::DDS::ContentFilteredTopic_var cft = ::DDS::ContentFilteredTopic::_narrow (td.in ());
+ if (! ::CORBA::is_nil (cft.in ()))
+ {
+ ::DDS::ReturnCode_t const ret = this->delete_contentfilteredtopic (cft.in ());
+ if (ret != ::DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_topic <%C> - "
+ "Unable to delete ContentFilteredTopic. Retval is %C.\n",
+ topic_name,
+ translate_retcode (ret)));
+ }
+ }
+ }
+ retval = this->impl ()->delete_topic (top->get_impl ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_topic <%C> - "
+ "Error: RTI delete_topic returned non-ok error code %C\n",
+ topic_name,
+ translate_retcode (retval)));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipant_i::delete_topic <%C> - "
+ "Provided topic successfully deleted\n",
+ topic_name));
+ }
+ }
+ return retval;
+ }
+
+ ::DDS::Topic_ptr
+ CCM_DDS_DomainParticipant_i::find_topic (const char * impl_name,
+ const ::DDS::Duration_t & timeout)
+ {
+ ::DDS::Topic_var retval = ::DDS::Topic::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_Duration_t ddstimeout;
+ ddstimeout <<= timeout;
+ ::DDSTopic* topic = this->impl ()->find_topic (impl_name, ddstimeout);
+ if (topic)
+ {
+ ACE_NEW_RETURN (retval,
+ CCM_DDS_Topic_i (topic),
+ ::DDS::Topic::_nil ());
+ }
+#else
+ ::DDS::Topic_var topic = this->impl ()->find_topic (impl_name, timeout);
+ if (! ::CORBA::is_nil (topic.in ())
+ {
+ ACE_NEW_RETURN (retval,
+ CCM_DDS_Topic_i (topic.in ()),
+ ::DDS::Topic::_nil ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::TopicDescription_ptr
+ CCM_DDS_DomainParticipant_i::lookup_topicdescription (const char * name)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipant_i::lookup_topicdescription");
+
+ DDS4CCM_DEBUG (7, (LM_DEBUG, CLINFO "Looking up topic: name <%C>\n",
+ name));
+
+ ::DDS::TopicDescription_var retval = ::DDS::TopicDescription::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDSTopicDescription* topic = this->impl ()->lookup_topicdescription (name);
+ if (topic)
+ {
+ // Check the entity: is it a Topic or a ContentFilteredTopic
+ ::DDSTopic * tp = dynamic_cast < ::DDSTopic *> (topic);
+ if (tp)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_Topic_i (tp),
+ CORBA::NO_MEMORY ());
+ }
+ else
+ {
+ ::DDSContentFilteredTopic * cftp =
+ dynamic_cast < ::DDSContentFilteredTopic *>(topic);
+ if (cftp)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_ContentFilteredTopic_i (cftp),
+ CORBA::NO_MEMORY ());
+ }
+ }
+ }
+#else
+ ::DDSTopicDescription_var topic = this->impl ()->lookup_topicdescription (name);
+ if (!CORBA::is_ni (topic.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_TopicDescription_i (topic.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ContentFilteredTopic_ptr
+ CCM_DDS_DomainParticipant_i::create_contentfilteredtopic (const char * name,
+ ::DDS::Topic_ptr related_topic,
+ const char * filter_expression,
+ const ::DDS::StringSeq & expression_parameters)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_contentfilteredtopic");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_Topic_i *top = dynamic_cast< CCM_DDS_Topic_i *> (related_topic);
+ if (!top)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_contentfilteredtopic - "
+ "Unable to cast provided topic.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ const char** parameterlist = 0;
+ ACE_NEW_THROW_EX (parameterlist,
+ const char*[expression_parameters.length ()],
+ CORBA::NO_MEMORY ());
+
+ for (CORBA::ULong i = 0; i < expression_parameters.length (); ++i)
+ {
+ parameterlist[i] = expression_parameters[i].in ();
+ }
+ DDS_StringSeq parameters (expression_parameters.length ());
+ parameters.from_array (parameterlist, expression_parameters.length ());
+
+ DDSContentFilteredTopic * ccm_dds_cft = this->impl ()->create_contentfilteredtopic (
+ name,
+ top->get_impl (),
+ filter_expression,
+ parameters);
+ delete [] parameterlist;
+ if (!ccm_dds_cft)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::create_contentfilteredtopic - "
+ "RTI DDS returned a nil ContentFilteredTopic.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::ContentFilteredTopic_var retval = ::DDS::ContentFilteredTopic::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_ContentFilteredTopic_i (ccm_dds_cft),
+ CORBA::NO_MEMORY ());
+
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "DDS_DomainParticipant_i::create_contentfilteredtopic - "
+ "Successfully created topic with name <%C> and filter expression <%C>\n",
+ name, filter_expression));
+
+ return retval._retn ();
+#else
+ return this->impl ()->create_contentfilteredtopic (
+ name,
+ related_topic,
+ filter_expression,
+ expression_parameters);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_contentfilteredtopic (::DDS::ContentFilteredTopic_ptr a_contentfilteredtopic)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::delete_contentfilteredtopic");
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_ContentFilteredTopic_i *ccm_dds_cft =
+ dynamic_cast < CCM_DDS_ContentFilteredTopic_i *> (a_contentfilteredtopic);
+ if (!ccm_dds_cft)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipant_i::delete_contentfilteredtopic - "
+ "Unable to cast provided ContentFilteredTopic.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+ return this->impl ()->delete_contentfilteredtopic (ccm_dds_cft->get_impl ());
+#else
+ return this->impl ()->delete_contentfilteredtopic (a_contentfilteredtopic);
+#endif
+ }
+
+ ::DDS::MultiTopic_ptr
+ CCM_DDS_DomainParticipant_i::create_multitopic (const char * /*name*/,
+ const char * /*type_name*/,
+ const char * /*subscription_expression*/,
+ const ::DDS::StringSeq & /*expression_parameters*/)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::create_multitopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_multitopic (::DDS::MultiTopic_ptr /*a_multitopic*/)
+ {
+ //this->impl ()->delete_multitopic (
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::delete_multitopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::delete_contained_entities (void)
+ {
+ return this->impl ()->delete_contained_entities ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::set_qos (const ::DDS::DomainParticipantQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::set_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DomainParticipantQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_qos (ccm_dds_qos);
+#else
+ return this->impl()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_qos (::DDS::DomainParticipantQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DomainParticipantQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode = this->impl()-> get_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::set_listener (::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_DomainPublisherListener_i* ccm_dds_impl_list = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_impl_list,
+ CCM_DDS_DomainPublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl_->set_listener (ccm_dds_impl_list, mask);
+#else
+ return this->impl_->set_listener (a_listener, mask);
+#endif
+ }
+
+ ::DDS::DomainParticipantListener_ptr
+ CCM_DDS_DomainParticipant_i::get_listener (void)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipantListener *ccm_dds_dp_list = this->impl ()->get_listener ();
+ CCM_DDS_DomainPublisherListener_i *list_proxy = dynamic_cast <CCM_DDS_DomainPublisherListener_i *> (ccm_dds_dp_list);
+ if (!list_proxy)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_DomainParticipant_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::DomainParticipantListener::_nil ();
+ }
+ return list_proxy->get_domainparticipantlistener ();
+#else
+ return this->impl ()->get_listener ();
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::ignore_participant (DDS_INSTANCE_HANDLE_T_IN handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t ccm_dds_handle;
+ ccm_dds_handle <<= handle;
+ return this->impl ()->ignore_participant (ccm_dds_handle);
+#else
+ return this->impl ()->ignore_participant (handle);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::ignore_topic (DDS_INSTANCE_HANDLE_T_IN handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t ccm_dds_handle;
+ ccm_dds_handle <<= handle;
+ return this->impl ()->ignore_topic (ccm_dds_handle);
+#else
+ return this->impl ()->ignore_topic (handle);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::ignore_publication (DDS_INSTANCE_HANDLE_T_IN handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t ccm_dds_handle;
+ ccm_dds_handle <<= handle;
+ return this->impl ()->ignore_publication (ccm_dds_handle);
+#else
+ return this->impl ()->ignore_publication (handle);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::ignore_subscription (DDS_INSTANCE_HANDLE_T_IN handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t ccm_dds_handle;
+ ccm_dds_handle <<= handle;
+ return this->impl ()->ignore_subscription (ccm_dds_handle);
+#else
+ return this->impl ()->ignore_subscription (handle);
+#endif
+ }
+
+ ::DDS::DomainId_t
+ CCM_DDS_DomainParticipant_i::get_domain_id (void)
+ {
+ return this->impl ()->get_domain_id ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::assert_liveliness (void)
+ {
+ return this->impl ()->assert_liveliness ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::set_default_publisher_qos (const ::DDS::PublisherQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::set_default_publisher_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublisherQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_default_publisher_qos (ccm_dds_qos);
+#else
+ return this->impl()->set_default_publisher_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_default_publisher_qos (::DDS::PublisherQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_default_publisher_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublisherQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode = this->impl()-> get_default_publisher_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->get_default_publisher_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::set_default_subscriber_qos (const ::DDS::SubscriberQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::set_default_subscriber_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriberQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_default_subscriber_qos (ccm_dds_qos);
+#else
+ return this->impl()->set_default_subscriber_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_default_subscriber_qos (::DDS::SubscriberQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_default_subscriber_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriberQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode =
+ this->impl()-> get_default_subscriber_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->get_default_subscriber_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::set_default_topic_qos (const ::DDS::TopicQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::set_default_topic_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_TopicQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_default_topic_qos (ccm_dds_qos);
+#else
+ return this->impl()->set_default_topic_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_default_topic_qos (::DDS::TopicQos & qos)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_default_topic_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_TopicQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode =
+ this->impl()-> get_default_topic_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->get_default_topic_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_discovered_participants (::DDS::InstanceHandleSeq & impl_handles)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_discovered_participants (rtiseq);
+ impl_handles <<= rtiseq;
+ return retval;
+#else
+ return this->impl ()->get_discovered_participants (impl_handles);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_discovered_participant_data (::DDS::ParticipantBuiltinTopicData & /*impl_data*/,
+ DDS_INSTANCE_HANDLE_T_IN /*impl_handle*/)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_discovered_participant_data");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_discovered_topics (::DDS::InstanceHandleSeq & impl_handles)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_discovered_topics (rtiseq);
+ impl_handles <<= rtiseq;
+ return retval;
+#else
+ return this->impl ()->get_discovered_topics (impl_handles);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_discovered_topic_data (::DDS::TopicBuiltinTopicData & /*impl_data*/,
+ DDS_INSTANCE_HANDLE_T_IN /*impl_handle*/)
+ {
+ DDS4CCM_TRACE ("DDS_DomainParticipant_i::get_discovered_topic_data");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::CORBA::Boolean
+ CCM_DDS_DomainParticipant_i::contains_entity (DDS_INSTANCE_HANDLE_T_IN a_handle)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t ccm_dds_handle;
+ ccm_dds_handle <<= a_handle;
+ return this->impl ()->contains_entity (ccm_dds_handle);
+#else
+ return this->impl ()->contains_entity (a_handle);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::get_current_time (::DDS::Time_t & current_time)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_Time_t ccm_dds_time;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_current_time (ccm_dds_time);
+ current_time <<= ccm_dds_time;
+ return retval;
+#else
+ return this->impl ()->get_current_time (current_time);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipant_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_DomainParticipant_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ if (sc)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ if (! ::CORBA::is_nil (sc.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_DomainParticipant_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ DDS_INSTANCE_HANDLE_T_RETN
+ CCM_DDS_DomainParticipant_i::get_instance_handle (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ DDSDomainParticipant *
+ CCM_DDS_DomainParticipant_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_DomainParticipant_i::set_impl (DDSDomainParticipant * dp)
+ {
+ this->impl_ = dp;
+ }
+
+ DDSDomainParticipant *
+ CCM_DDS_DomainParticipant_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.h
new file mode 100644
index 00000000000..b326b2d178e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipant.h
@@ -0,0 +1,220 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_NDDS_PARTICIPANT_H
+#define CIAO_NDDS_PARTICIPANT_H
+
+#include "tao/LocalObject.h"
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include <map>
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DomainParticipant DDSDomainParticipant;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class CCM_DDS_Topic_i;
+
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DomainParticipant_i :
+ public virtual ::DDS::CCM_DomainParticipant,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DomainParticipant_i (DDSDomainParticipant * dp);
+
+ /// Destructor
+ virtual ~CCM_DDS_DomainParticipant_i (void);
+
+ virtual ::DDS::Publisher_ptr create_publisher (
+ const ::DDS::PublisherQos & qos,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual ::DDS::Publisher_ptr create_publisher_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+#endif
+
+ virtual ::DDS::ReturnCode_t delete_publisher (::DDS::Publisher_ptr p);
+
+ virtual ::DDS::Subscriber_ptr create_subscriber (
+ const ::DDS::SubscriberQos & qos,
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual ::DDS::Subscriber_ptr create_subscriber_with_profile(
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+#endif
+
+ virtual ::DDS::ReturnCode_t delete_subscriber (::DDS::Subscriber_ptr s);
+
+ virtual ::DDS::Subscriber_ptr get_builtin_subscriber (void);
+
+ virtual ::DDS::Topic_ptr create_topic (
+ const char * impl_name,
+ const char * type_name,
+ const ::DDS::TopicQos & qos,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual ::DDS::Topic_ptr create_topic_with_profile (
+ const char * impl_name,
+ const char * type_name,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+#endif
+
+ virtual ::DDS::ReturnCode_t delete_topic (::DDS::Topic_ptr a_topic);
+
+ virtual ::DDS::Topic_ptr find_topic (
+ const char * impl_name,
+ const ::DDS::Duration_t & timeout);
+
+ virtual ::DDS::TopicDescription_ptr lookup_topicdescription (
+ const char * name);
+
+ virtual ::DDS::ContentFilteredTopic_ptr create_contentfilteredtopic (
+ const char * name,
+ ::DDS::Topic_ptr related_topic,
+ const char * filter_expression,
+ const ::DDS::StringSeq & expression_parameters);
+
+ virtual ::DDS::ReturnCode_t delete_contentfilteredtopic (
+ ::DDS::ContentFilteredTopic_ptr a_contentfilteredtopic);
+
+ virtual ::DDS::MultiTopic_ptr create_multitopic (
+ const char * name,
+ const char * type_name,
+ const char * subscription_expression,
+ const ::DDS::StringSeq & expression_parameters);
+
+ virtual ::DDS::ReturnCode_t delete_multitopic (
+ ::DDS::MultiTopic_ptr a_multitopic);
+
+ virtual ::DDS::ReturnCode_t delete_contained_entities (void);
+
+ virtual ::DDS::ReturnCode_t set_qos (
+ const ::DDS::DomainParticipantQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_qos (
+ ::DDS::DomainParticipantQos & qos);
+
+ virtual ::DDS::ReturnCode_t set_listener (
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual ::DDS::DomainParticipantListener_ptr get_listener (void);
+
+ virtual ::DDS::ReturnCode_t ignore_participant (
+ DDS_INSTANCE_HANDLE_T_IN handle);
+
+ virtual ::DDS::ReturnCode_t ignore_topic (
+ DDS_INSTANCE_HANDLE_T_IN handle);
+
+ virtual ::DDS::ReturnCode_t ignore_publication (
+ DDS_INSTANCE_HANDLE_T_IN handle);
+
+ virtual ::DDS::ReturnCode_t ignore_subscription (
+ DDS_INSTANCE_HANDLE_T_IN handle);
+
+ virtual ::DDS::DomainId_t get_domain_id (void);
+
+ virtual ::DDS::ReturnCode_t assert_liveliness (void);
+
+ virtual ::DDS::ReturnCode_t set_default_publisher_qos (
+ const ::DDS::PublisherQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_default_publisher_qos (
+ ::DDS::PublisherQos & qos);
+
+ virtual ::DDS::ReturnCode_t set_default_subscriber_qos (
+ const ::DDS::SubscriberQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_default_subscriber_qos (
+ ::DDS::SubscriberQos & qos);
+
+ virtual ::DDS::ReturnCode_t set_default_topic_qos (
+ const ::DDS::TopicQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_default_topic_qos (
+ ::DDS::TopicQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_discovered_participants (
+ ::DDS::InstanceHandleSeq & impl_handles);
+
+ virtual ::DDS::ReturnCode_t get_discovered_participant_data (
+ ::DDS::ParticipantBuiltinTopicData & impl_data,
+ DDS_INSTANCE_HANDLE_T_IN impl_handle);
+
+ virtual ::DDS::ReturnCode_t get_discovered_topics (
+ ::DDS::InstanceHandleSeq & impl_handles);
+
+ virtual ::DDS::ReturnCode_t get_discovered_topic_data (
+ ::DDS::TopicBuiltinTopicData & impl_data,
+ DDS_INSTANCE_HANDLE_T_IN impl_handle);
+
+ virtual ::CORBA::Boolean contains_entity (
+ DDS_INSTANCE_HANDLE_T_IN a_handle);
+
+ virtual ::DDS::ReturnCode_t get_current_time (
+ ::DDS::Time_t & current_time);
+
+ virtual ::DDS::ReturnCode_t enable (void);
+
+ virtual ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual ::DDS::StatusMask get_status_changes (void);
+
+ virtual DDS_INSTANCE_HANDLE_T_RETN get_instance_handle (void);
+
+ DDSDomainParticipant * get_impl (void);
+
+ void set_impl (DDSDomainParticipant * dp);
+
+ protected:
+ DDSDomainParticipant *impl_;
+
+ DDSDomainParticipant * impl (void);
+
+ private:
+ bool remove_topic (CCM_DDS_Topic_i * topic);
+
+ TAO_SYNCH_MUTEX tps_mutex_;
+ typedef std::map<ACE_CString, CCM_DDS_Topic_i *> Topics;
+ Topics tps_;
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.cpp
new file mode 100644
index 00000000000..3b1908901d2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.cpp
@@ -0,0 +1,355 @@
+// $Id$
+
+#include "DomainParticipantFactory.h"
+#include "DomainParticipant.h"
+#include "DomainParticipantListener.h"
+
+#include "ndds/DomainParticipantFactoryQos.h"
+#include "ndds/DomainParticipantQos.h"
+
+#include "Utils.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+ typedef ::DDS::DomainParticipantFactory DDSDomainParticipantFactory;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DomainParticipantFactory_i::CCM_DDS_DomainParticipantFactory_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::CCM_DDS_DomainParticipantFactory_i");
+ }
+
+ CCM_DDS_DomainParticipantFactory_i::~CCM_DDS_DomainParticipantFactory_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::~CCM_DDS_DomainParticipantFactory_i");
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_DomainParticipantFactory_i::create_participant (::DDS::DomainId_t domain_id,
+ const ::DDS::DomainParticipantQos & qos,
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::create_participant");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant - "
+ "Creating domain participant for domain <%d>\n",
+ domain_id));
+
+ CCM_DDS_DomainPublisherListener_i *ccm_dds_dpl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_dpl,
+ CCM_DDS_DomainPublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ ACE_CString qos_profile = ACE_TEXT ("default");
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->dps_mutex_, CORBA::INTERNAL ());
+ {
+ CCM_DDS_DomainParticipant_i *ccm_dds_dp = this->dps_[qos_profile];
+
+ if (!ccm_dds_dp)
+ {
+ DDSDomainParticipant *part = DDSDomainParticipantFactory::get_instance ()->
+ create_participant (domain_id,
+ DDS_PARTICIPANT_QOS_DEFAULT,
+ ccm_dds_dpl,
+ mask);
+
+ if (!part)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant - "
+ "Error: Unable to create DomainParticipant for domain <%d>\n",
+ domain_id));
+ throw CCM_DDS::InternalError (1, 0);
+ }
+
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (part),
+ CORBA::NO_MEMORY ());
+ part->enable ();
+ ccm_dds_dp = dynamic_cast < CCM_DDS_DomainParticipant_i *> (retval.in ());
+ ccm_dds_dp->set_impl (part);
+
+ this->dps_[qos_profile] = ccm_dds_dp;
+
+ return retval._retn ();
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant - "
+ "Re-using participant for QOS profile <%C> and domain <%d>.\n",
+ qos_profile.c_str (),
+ domain_id));
+ return ::DDS::DomainParticipant::_duplicate (ccm_dds_dp);
+ }
+ }
+
+#else
+ return DDSDomainParticipantFactory::get_instance ()->
+ create_participant (domain_id,
+ qos,
+ a_listener,
+ mask);
+#endif
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile (
+ ::DDS::DomainId_t domain_id,
+ const char * library_name,
+ const char * profile_name,
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile");
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile - "
+ "Creating domain participant: profile <%C#%C> - domain <%d>\n",
+ library_name, profile_name, domain_id));
+ CCM_DDS_DomainPublisherListener_i *ccm_dds_dpl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_dpl,
+ CCM_DDS_DomainPublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ ACE_CString qos_profile = library_name;
+ qos_profile += ACE_TEXT ("#");
+ qos_profile += profile_name;
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->dps_mutex_, CORBA::INTERNAL ());
+ {
+ CCM_DDS_DomainParticipant_i *ccm_dds_dp = this->dps_[qos_profile];
+
+ if (!ccm_dds_dp)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile - "
+ "Creating participant: profile <%C> - domain <%d>\n",
+ qos_profile.c_str (),
+ domain_id));
+ DDSDomainParticipant * part = DDSDomainParticipantFactory::get_instance ()->
+ create_participant_with_profile (domain_id,
+ library_name,
+ profile_name,
+ ccm_dds_dpl,
+ mask);
+ if (!part)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile - "
+ "Error: Unable to create DomainParticipant\n"));
+ throw CCM_DDS::InternalError (1, 0);
+ }
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (part),
+ CORBA::NO_MEMORY ());
+
+ part->enable ();
+
+ ccm_dds_dp = dynamic_cast < CCM_DDS_DomainParticipant_i *> (retval.in ());
+ ccm_dds_dp->set_impl (part);
+ this->dps_[qos_profile] = ccm_dds_dp;
+ return retval._retn ();
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_DomainParticipantFactory_i::create_participant_with_profile - "
+ "Re-using participant for QOS profile <%C> and domain <%d>.\n",
+ qos_profile.c_str (),
+ domain_id));
+ return ::DDS::DomainParticipant::_duplicate (ccm_dds_dp);
+ }
+ }
+ }
+#endif
+
+ bool
+ CCM_DDS_DomainParticipantFactory_i::remove_participant (CCM_DDS_DomainParticipant_i * part)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::remove_participant");
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->dps_mutex_, CORBA::INTERNAL ());
+
+ if (part->_refcount_value () == 1)
+ {
+ DomainParticipants::iterator pos;
+ for (pos = this->dps_.begin(); pos != this->dps_.end(); ++pos)
+ {
+ if (pos->second == part)
+ {
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipantFactory_i::remove_participant - "
+ "Removing participant for %C from list.\n",
+ pos->first.c_str ()));
+ this->dps_.erase (pos->first);
+ break;
+ }
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipantFactory_i::remove_participant - "
+ "Don't delete participant since it's still used - ref_count <%d>\n",
+ part->_refcount_value ()));
+ return false;
+ }
+ return true;
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::delete_participant (::DDS::DomainParticipant_ptr a_participant)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::delete_participant");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_DomainParticipant_i *part = dynamic_cast< CCM_DDS_DomainParticipant_i * > (a_participant);
+
+ if (!part)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipantFactory_i::delete_participant - "
+ "Unable to cast provided object reference to servant type, bailing.\n"));
+ return DDS::RETCODE_ERROR;
+ }
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_DomainParticipantFactory_i::delete_participant - "
+ "Successfully casted provided object reference to servant type.\n"));
+
+ ::DDS::ReturnCode_t retval = DDS::RETCODE_OK;
+ if (this->remove_participant (part))
+ {
+ retval = DDSDomainParticipantFactory::get_instance ()->
+ delete_participant (part->get_impl ());
+
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_DomainParticipantFactory_i::delete_participant - "
+ "RTI delete_participant returned non-ok error code %C\n",
+ translate_retcode (retval)));
+ }
+ else DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_DomainParticipantFactory_i::delete_participant - "
+ "Successfully deleted provided participant.\n"));
+ }
+ return retval;
+#else
+ return DDSDomainParticipantFactory::get_instance ()->
+ delete_participant (a_participant);
+#endif
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_DomainParticipantFactory_i::lookup_participant (::DDS::DomainId_t domain_id)
+ {
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDSDomainParticipant* dp = DDSDomainParticipantFactory::get_instance ()->lookup_participant (domain_id);
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (dp),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::DomainParticipant_var dp = DDSDomainParticipantFactory::get_instance ()->lookup_participant (domain_id);
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (dp.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::set_default_participant_qos (const ::DDS::DomainParticipantQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::set_default_participant_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_DomainParticipantQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return DDSDomainParticipantFactory::get_instance ()->set_default_participant_qos (ccm_dds_qos);
+#else
+ return DDSDomainParticipantFactory::get_instance ()->set_default_participant_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::get_default_participant_qos (::DDS::DomainParticipantQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::get_default_participant_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_DomainParticipantQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode =
+ DDSDomainParticipantFactory::get_instance ()->get_default_participant_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return DDSDomainParticipantFactory::get_instance ()->get_default_participant_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::set_qos (const ::DDS::DomainParticipantFactoryQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::set_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_DomainParticipantFactoryQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return DDSDomainParticipantFactory::get_instance ()->set_qos (ccm_dds_qos);
+#else
+ return DDSDomainParticipantFactory::get_instance ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::get_qos (::DDS::DomainParticipantFactoryQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::get_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_DomainParticipantFactoryQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode =
+ DDSDomainParticipantFactory::get_instance ()->get_qos (ccm_dds_qos);
+ ccm_dds_qos <<= qos;
+ return retcode;
+#else
+ return DDSDomainParticipantFactory::get_instance ()->get_qos (qos);
+#endif
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::ReturnCode_t
+ CCM_DDS_DomainParticipantFactory_i::set_default_participant_qos_with_profile (
+ const char * library_name,
+ const char * profile_name)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_DomainParticipantFactory_i::set_default_participant_qos_with_profile");
+
+ return DDSDomainParticipantFactory::get_instance ()->set_default_participant_qos_with_profile (library_name, profile_name);
+ }
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+ ::DDS::DomainParticipantFactory_ptr
+ CCM_DDS_DomainParticipantFactory_i::get_instance (void)
+ {
+ return 0;
+ }
+#endif
+ }
+}
+
+#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+template ACE_Singleton<CIAO::DDS4CCM::CCM_DDS_DomainParticipantFactory_i, TAO_SYNCH_MUTEX> *
+ ACE_Singleton<CIAO::DDS4CCM::CCM_DDS_DomainParticipantFactory_i, TAO_SYNCH_MUTEX>::singleton_;
+#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.h
new file mode 100644
index 00000000000..4a1439ecba1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantFactory.h
@@ -0,0 +1,112 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS_RTI_PARTICIPANTFACTORY_H
+#define DDS_RTI_PARTICIPANTFACTORY_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "tao/LocalObject.h"
+
+#include "ace/Singleton.h"
+
+#include <map>
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class CCM_DDS_DomainParticipant_i;
+
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DomainParticipantFactory_i :
+ public virtual ::DDS::CCM_DomainParticipantFactory,
+ public virtual ::CORBA::LocalObject
+ {
+ friend class ACE_Singleton<CCM_DDS_DomainParticipantFactory_i, TAO_SYNCH_MUTEX>;
+
+ private:
+ // Construtor
+ CCM_DDS_DomainParticipantFactory_i (void);
+
+ /// Destructor
+ virtual ~CCM_DDS_DomainParticipantFactory_i (void);
+
+ public:
+#if (CIAO_DDS4CCM_OPENDDS==1)
+ virtual ::DDS::DomainParticipantFactory_ptr get_instance (void);
+#endif
+
+ virtual
+ ::DDS::DomainParticipant_ptr create_participant (::DDS::DomainId_t domain_id,
+ const ::DDS::DomainParticipantQos & qos,
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual
+ ::DDS::DomainParticipant_ptr create_participant_with_profile (::DDS::DomainId_t domain_id,
+ const char * library_name,
+ const char * profile_name,
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+#endif
+
+ virtual
+ ::DDS::ReturnCode_t delete_participant (::DDS::DomainParticipant_ptr a_participant);
+
+ virtual
+ ::DDS::DomainParticipant_ptr lookup_participant (::DDS::DomainId_t domain_id);
+
+ virtual
+ ::DDS::ReturnCode_t set_default_participant_qos (const ::DDS::DomainParticipantQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t get_default_participant_qos (::DDS::DomainParticipantQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t set_qos (const ::DDS::DomainParticipantFactoryQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t get_qos (::DDS::DomainParticipantFactoryQos & qos);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual ::DDS::ReturnCode_t set_default_participant_qos_with_profile(
+ const char * library_name,
+ const char * profile_name);
+#endif
+
+ private:
+ bool remove_participant (CCM_DDS_DomainParticipant_i * part);
+
+ TAO_SYNCH_MUTEX dps_mutex_;
+ typedef std::map<ACE_CString, CCM_DDS_DomainParticipant_i *> DomainParticipants;
+ DomainParticipants dps_;
+ private:
+ ACE_UNIMPLEMENTED_FUNC (void operator= (const CCM_DDS_DomainParticipantFactory_i &))
+ ACE_UNIMPLEMENTED_FUNC (CCM_DDS_DomainParticipantFactory_i (const CCM_DDS_DomainParticipantFactory_i &))
+ };
+
+ typedef ACE_Singleton<CCM_DDS_DomainParticipantFactory_i,
+ TAO_SYNCH_MUTEX> Domain_Participant_Factory;
+ }
+}
+
+#define DPFACTORY ::CIAO::DDS4CCM::Domain_Participant_Factory::instance ()
+
+/// Declare a process wide singleton
+DDS4CCM_DDS_IMPL_SINGLETON_DECLARE (ACE_Singleton,
+ ::CIAO::DDS4CCM::CCM_DDS_DomainParticipantFactory_i,
+ TAO_SYNCH_MUTEX)
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.cpp
new file mode 100644
index 00000000000..90d81e1a7cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.cpp
@@ -0,0 +1,127 @@
+// $Id$
+
+#include "DomainParticipantListener.h"
+#include "DomainParticipant.h"
+
+#include "ndds/SampleLostStatus.h"
+#include "ndds/SubscriptionMatchedStatus.h"
+#include "ndds/RequestedDeadlineMissedStatus.h"
+#include "ndds/SampleRejectedStatus.h"
+#include "ndds/LivelinessChangedStatus.h"
+#include "ndds/RequestedIncompatibleQosStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_DomainPublisherListener_i::CCM_DDS_DomainPublisherListener_i (
+ ::DDS::DomainParticipantListener_ptr p)
+ : impl_ (::DDS::DomainParticipantListener::_duplicate (p))
+ {
+ }
+
+ CCM_DDS_DomainPublisherListener_i::~CCM_DDS_DomainPublisherListener_i (void)
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr,
+ const ::DDS::InconsistentTopicStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedDeadlineMissedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_data_available (
+ ::DDS::DataReader_ptr )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_sample_lost (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleLostStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus & )
+ {
+ }
+
+ void
+ CCM_DDS_DomainPublisherListener_i::on_data_on_readers (
+ ::DDS::Subscriber_ptr )
+ {
+ }
+
+ ::DDS::DomainParticipantListener_ptr
+ CCM_DDS_DomainPublisherListener_i::get_domainparticipantlistener (void)
+ {
+ return ::DDS::DomainParticipantListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.h
new file mode 100644
index 00000000000..93d2163dfdc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener.h
@@ -0,0 +1,112 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DOMAINPARTICIPANTLISTENER_H
+#define DDS4CCM_DOMAINPARTICIPANTLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DomainParticipantListener DDSDomainParticipantListener;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_DomainPublisherListener_i :
+ public virtual ::DDSDomainParticipantListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_DomainPublisherListener_i (::DDS::DomainParticipantListener_ptr p);
+
+ /// Destructor
+ virtual ~CCM_DDS_DomainPublisherListener_i (void);
+
+ ::DDS::DomainParticipantListener_ptr get_domainparticipantlistener (void);
+
+ virtual void
+ on_inconsistent_topic (
+ ::DDS::Topic_ptr,
+ const ::DDS::InconsistentTopicStatus & );
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedDeadlineMissedStatus & );
+
+ virtual void
+ on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & );
+
+ virtual void
+ on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & );
+
+ virtual void
+ on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & );
+
+ virtual void
+ on_data_available (
+ ::DDS::DataReader_ptr );
+
+ virtual void
+ on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & );
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleLostStatus & );
+
+ virtual void
+ on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus & );
+
+ virtual void
+ on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus & );
+
+ virtual void
+ on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus & );
+
+ virtual void
+ on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus & );
+
+ virtual void
+ on_data_on_readers (
+ ::DDS::Subscriber_ptr );
+
+ private:
+ ::DDS::DomainParticipantListener_var impl_;
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.cpp
new file mode 100644
index 00000000000..3649ff9fce7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.cpp
@@ -0,0 +1,152 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DataReaderHandler_T.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "tao/ORB_Core.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::DomainParticipantListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener)
+ : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener))
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::DomainParticipantListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::~DomainParticipantListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::~DomainParticipantListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_inconsistent_topic (
+ ::DDS::Topic_ptr,
+ const ::DDS::InconsistentTopicStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedDeadlineMissedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_data_available (
+ ::DDS::DataReader_ptr )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_sample_lost (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleLostStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_data_on_readers (
+ ::DDS::Subscriber_ptr )
+{
+}
+
+#if (CIAO_DDS4CCM_NDDS==1)
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableWriterCacheChangedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableReaderActivityChangedStatus & )
+{
+}
+#endif
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::DomainParticipantListener_T<DDS_TYPE, CCM_TYPE>::get_mask (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DomainParticipantListener_T::get_mask");
+ return 0;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.h
new file mode 100644
index 00000000000..119e223086e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/DomainParticipantListener_T.h
@@ -0,0 +1,114 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "ace/Copy_Disabled.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class DomainParticipantListener_T :
+ public virtual ::DDS::CCM_DomainParticipantListener,
+ public virtual ::CORBA::LocalObject,
+ private virtual ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ DomainParticipantListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener);
+
+ /// Destructor
+ virtual ~DomainParticipantListener_T (void);
+
+ static ::DDS::StatusMask get_mask (void);
+
+ virtual void
+ on_inconsistent_topic (
+ ::DDS::Topic_ptr,
+ const ::DDS::InconsistentTopicStatus & );
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedDeadlineMissedStatus & );
+
+ virtual void
+ on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & );
+
+ virtual void
+ on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & );
+
+ virtual void
+ on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & );
+
+ virtual void
+ on_data_available (
+ ::DDS::DataReader_ptr );
+
+ virtual void
+ on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & );
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleLostStatus & );
+
+ virtual void
+ on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedDeadlineMissedStatus & );
+
+ virtual void
+ on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::OfferedIncompatibleQosStatus & );
+
+ virtual void
+ on_liveliness_lost (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::LivelinessLostStatus & );
+
+ virtual void
+ on_publication_matched (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::PublicationMatchedStatus & );
+
+ virtual void
+ on_data_on_readers (
+ ::DDS::Subscriber_ptr );
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual void on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableWriterCacheChangedStatus & );
+
+ virtual void on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr ,
+ const ::DDS::ReliableReaderActivityChangedStatus & );
+#endif
+
+ private:
+ ::CCM_DDS::ConnectorStatusListener_var error_listener_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/DomainParticipantListener_T.cpp"
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp
new file mode 100644
index 00000000000..3debef97c3e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp
@@ -0,0 +1,556 @@
+// $Id$
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/ndds/Duration_t.h"
+#include "dds4ccm/impl/dds/ndds/SampleInfo.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::Getter_Base_T (void)
+ : reader_ (0),
+ condition_(0),
+ time_out_ (),
+ max_delivered_data_ (0),
+ ws_ (0),
+ rd_condition_ (0),
+ q_condition_ (0)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_Base_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::~Getter_Base_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::~Getter_Base_T");
+ delete this->ws_;
+ this->ws_ = 0;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+typename DDS_TYPE::data_reader *
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::impl (void)
+{
+ if (this->reader_)
+ {
+ return DDS_TYPE::data_reader::narrow (this->reader_->get_impl ());
+ }
+ else
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::wait (
+ DDSConditionSeq& active_conditions)
+{
+ DDS_Duration_t timeout;
+ timeout <<= this->time_out_;
+ DDS_ReturnCode_t const retcode = this->ws_->wait (active_conditions, timeout);
+ if (retcode == DDS_RETCODE_TIMEOUT)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("Getter: No data available after timeout.\n")));
+ return false;
+ }
+ return true;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::get_many (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ instances = 0;
+ ACE_NEW_THROW_EX (instances,
+ typename CCM_TYPE::seq_type,
+ CORBA::NO_MEMORY ());
+ infos = 0;
+ ACE_NEW_THROW_EX (infos,
+ ::CCM_DDS::ReadInfoSeq,
+ CORBA::NO_MEMORY ());
+
+ DDSConditionSeq active_conditions;
+ if (!this->wait (active_conditions))
+ {
+ return false;
+ }
+
+ ::DDS_Long max_samples = this->max_delivered_data_;
+ if (max_samples == 0)
+ {
+ max_samples = DDS_LENGTH_UNLIMITED;
+ }
+
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+ for (::DDS_Long i = 0; i < active_conditions.length(); i++)
+ {
+ if (active_conditions[i] == this->rd_condition_ ||
+ active_conditions[i] == this->q_condition_)
+ {
+ // Check trigger
+ active_conditions[i]->get_trigger_value ();
+
+ // Take read condition
+ DDS_ReturnCode_t retcode = DDS_RETCODE_OK;
+ if (this->q_condition_)
+ {
+ retcode = this->impl ()->read_w_condition (
+ data,
+ sample_info,
+ max_samples,
+ this->q_condition_);
+ }
+ else
+ {
+ retcode = this->impl ()->read_w_condition (
+ data,
+ sample_info,
+ max_samples,
+ this->rd_condition_);
+ }
+
+ if (retcode == DDS_RETCODE_OK && data.length () >= 1)
+ {
+ ::CORBA::ULong number_read = 0;
+ for (::DDS_Long index = 0; index < sample_info.length (); index ++)
+ {
+ if (sample_info[index].valid_data)
+ {
+ ++number_read;
+ }
+ }
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("Getter_Base_T::get_many: ")
+ ACE_TEXT ("read <%d> - valid <%d>\n"),
+ sample_info.length (),
+ number_read));
+ infos->length (number_read);
+ instances->length (number_read);
+ number_read = 0;
+ for (::DDS_Long j = 0; j < data.length (); j ++)
+ {
+ if (sample_info[j].valid_data)
+ {
+ infos->operator[](number_read) <<= sample_info[j];
+ instances->operator[](number_read) = data[j];
+ ++number_read;
+ }
+ }
+ }
+ else
+ {
+ // RETCODE_NO_DATA should be an error
+ // because after a timeout there should be
+ // data.
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_Base_T::get_many - "
+ "Error while reading from DDS: <%C>\n",
+ translate_retcode (retcode)));
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_Base_T::get_many - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ throw CCM_DDS::InternalError (retcode, 1);
+ }
+
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_Base_T::get_many - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ }
+ }
+ return true;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::Duration_t
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::time_out (void)
+{
+ return this->time_out_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::time_out (
+ const ::DDS::Duration_t & time_out)
+{
+ this->time_out_ = time_out;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::CCM_DDS::DataNumber_t
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::max_delivered_data (void)
+{
+ return this->max_delivered_data_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::max_delivered_data (
+ ::CCM_DDS::DataNumber_t max_delivered_data)
+{
+ this->max_delivered_data_ = max_delivered_data;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_ReturnCode_t
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::remove_conditions ()
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::remove_conditions");
+
+ DDS_ReturnCode_t retcode = DDS_RETCODE_OK;
+ if (this->q_condition_)
+ {
+ retcode = this->ws_->detach_condition (this->q_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::remove_conditions - "
+ "Unable to detach query condition from waitset.\n"));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "Getter_Base_T::remove_conditions - "
+ "Query condition successfully detached from waitset.\n"));
+
+ retcode = this->impl ()->delete_readcondition (this->q_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::remove_conditions - "
+ "Unable to delete query condition from DDSDataReader.\n"));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "Getter_Base_T::remove_conditions - "
+ "Query condition successfully deleted from DDSDataReader.\n"));
+ }
+ }
+ }
+ else
+ {
+ retcode = this->ws_->detach_condition (this->rd_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::remove_conditions - "
+ "Unable to detach read condition from waitset.\n"));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "Getter_Base_T::remove_conditions - "
+ "Read condition successfully detached from waitset.\n"));
+ }
+ }
+ retcode = this->impl ()->delete_readcondition (this->rd_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::remove_conditions - "
+ "Unable to delete read condition from DDSDataReader.\n"));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "Getter_Base_T::remove_conditions - "
+ "Read condition successfully deleted from DDSDataReader.\n"));
+ }
+ delete this->ws_;
+ this->ws_ = 0;
+
+ return retcode;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+DDS_ReturnCode_t
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::passivate ()
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::passivate");
+ return this->remove_conditions ();
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::create_conditions ()
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::create_conditions");
+
+ // Now create the waitset conditions
+ ACE_NEW_THROW_EX (this->ws_,
+ DDSWaitSet (),
+ CORBA::NO_MEMORY ());
+ this->rd_condition_ = this->impl ()->create_readcondition (DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ALIVE_INSTANCE_STATE | DDS_NOT_ALIVE_INSTANCE_STATE);
+ DDS_ReturnCode_t retcode = this->ws_->attach_condition (this->rd_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "GETTER: Unable to attach read condition to waitset.\n"));
+ throw CCM_DDS::InternalError (retcode, 1);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::create_querycondition (
+ const char * query,
+ const ::DDS_StringSeq & qp)
+{
+ this->q_condition_ = this->impl ()->create_querycondition (
+ DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ALIVE_INSTANCE_STATE,
+ query,
+ qp);
+ if (!this->q_condition_)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Getter_T::create_querycondition - "
+ "Error creating query condition."));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+ DDS_ReturnCode_t retcode = this->ws_->detach_condition (this->rd_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::create_querycondition - "
+ "Unable to detach read condition from waitset.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+ retcode = this->ws_->attach_condition (this->q_condition_);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "Getter_Base_T::create_querycondition - "
+ "Unable to attach query condition to waitset.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::set_queryparameters (
+ const ::DDS_StringSeq & qp)
+{
+ ::DDS::ReturnCode_t retval = this->q_condition_->set_query_parameters (qp);
+ if (retval != ::DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Getter_T::set_queryparameters - "
+ "Error setting expression_parameters. "
+ "Retval is %C\n",
+ translate_retcode(retval)));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, retval);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::set_impl (
+ CCM_DDS_DataReader_i *reader)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::set_impl");
+
+ if (!reader)
+ {
+ delete this->ws_;
+ this->ws_ = 0;
+ this->reader_ = 0;
+ }
+ else
+ {
+ this->reader_ = reader;
+ this->create_conditions ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one (
+ typename DDS_TYPE::value_type::_out_type an_instance,
+ ::CCM_DDS::ReadInfo_out info)
+{
+ DDSConditionSeq active_conditions;
+ if (!this->wait (active_conditions))
+ {
+ return false;
+ }
+
+ for (::DDS_Long i = 0; i < active_conditions.length(); i++)
+ {
+ if (active_conditions[i] == this->rd_condition_ ||
+ active_conditions[i] == this->q_condition_)
+ {
+ bool valid_data_read = false;
+
+ while (!valid_data_read)
+ {
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+ DDS_ReturnCode_t retcode = DDS_RETCODE_OK;
+ if (this->q_condition_)
+ {
+ retcode = this->impl ()->read_w_condition (data,
+ sample_info,
+ 1,
+ this->q_condition_);
+ }
+ else
+ {
+ retcode = this->impl ()->read_w_condition (data,
+ sample_info,
+ 1,
+ this->rd_condition_);
+ }
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one - "
+ "DDS returned DDS_RETCODE_NO_DATA. No data available in DDS.\n"));
+ return false;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one - "
+ "Error while reading from DDS: <%C>\n",
+ translate_retcode (retcode)));
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+
+ throw CCM_DDS::InternalError (retcode, 1);
+ }
+ else if (data.length () == 1 &&
+ sample_info[0].valid_data)
+ {
+ info <<= sample_info[0];
+ an_instance = data[0];
+ valid_data_read = true;
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one - "
+ "No valid available in DDS.\n"));
+ }
+ //return the loan of each read.
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_T<DDS_TYPE, CCM_TYPE, true>::get_one - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ }
+ }
+ }
+
+ return true;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one (
+ typename DDS_TYPE::value_type::_out_type an_instance,
+ ::CCM_DDS::ReadInfo_out info)
+{
+ an_instance = 0;
+ ACE_NEW_THROW_EX (an_instance,
+ typename DDS_TYPE::value_type,
+ CORBA::NO_MEMORY ());
+ DDSConditionSeq active_conditions;
+ if (!this->wait (active_conditions))
+ {
+ return false;
+ }
+
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+ for (::DDS_Long i = 0; i < active_conditions.length(); i++)
+ {
+ if (active_conditions[i] == this->rd_condition_ ||
+ active_conditions[i] == this->q_condition_)
+ {
+ bool valid_data_read = false;
+
+ while (!valid_data_read)
+ {
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+ DDS_ReturnCode_t retcode = DDS_RETCODE_OK;
+ if (this->q_condition_)
+ {
+ retcode = this->impl ()->read_w_condition (data,
+ sample_info,
+ 1,
+ this->q_condition_);
+ }
+ else
+ {
+ retcode = this->impl ()->read_w_condition (data,
+ sample_info,
+ 1,
+ this->rd_condition_);
+ }
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one - "
+ "DDS returned DDS_RETCODE_NO_DATA. No data available in DDS.\n"));
+ return false;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one - "
+ "Error while reading from DDS: <%C>\n",
+ translate_retcode (retcode)));
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ throw CCM_DDS::InternalError (retcode, 1);
+ }
+ else if (data.length () == 1 &&
+ sample_info[0].valid_data)
+ {
+ info <<= sample_info[0];
+ *an_instance = data[0];
+ valid_data_read = true;
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one - "
+ "No valid available in DDS.\n"));
+ }
+ // Return the loan of each read.
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Getter_Base_T::Getter_T<DDS_TYPE, CCM_TYPE, false>::get_one - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ }
+ }
+ }
+
+ return true;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h
new file mode 100644
index 00000000000..dcea39a902b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h
@@ -0,0 +1,149 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef GETTER_T_H
+#define GETTER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::GuardCondition DDSGuardCondition;
+typedef ::DDS::WaitSet DDSWaitSet;
+typedef ::DDS::ReadCondition DDSReadCondition;
+typedef ::DDS::ConditionSeq DDSConditionSeq;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace DDS_CCM
+ {
+ /**
+ * @class Getter_Base_T<DDS_TYPE,CCM_TYPE>
+ *
+ * @brief Templated base class for the Getter port.
+ *
+ * Spec: Get operations are performed with the following parameters
+ * · SampleStateMask: NO_READ,
+ * · ViewStateMask: NEW or NOT_NEW,
+ * · InstanceStateMask: ALIVE or NOT_ALIVE,
+ * · Through the query (if any) of the Reader associated to the port,
+ * · Within the time limit specified in time_out.
+ *
+ * All methods return a boolean as result indicating whether actual data
+ * are provided (TRUE) or if the time-out occurred (FALSE).
+ */
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class Getter_Base_T :
+ public virtual CCM_TYPE::getter_type,
+ public virtual ::CORBA::LocalObject,
+ private virtual ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ Getter_Base_T (void);
+
+ /// Destructor
+ virtual ~Getter_Base_T (void);
+
+ /**
+ * Spec : get_many returns all the available samples
+ * in the limits set by the attribute max_delivered_data.
+ * In case there are more available samples, the first
+ * max_delivered_data are returned. The default value for
+ * that attribute is UNLIMITED (0)
+ */
+ virtual bool get_many (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+ virtual ::DDS::Duration_t time_out (void);
+ virtual void time_out (const ::DDS::Duration_t & time_out);
+
+ virtual ::CCM_DDS::DataNumber_t max_delivered_data (void);
+ virtual void max_delivered_data (
+ ::CCM_DDS::DataNumber_t max_delivered_data);
+
+ /**
+ * Set the actual pointer to DDS Datareader
+ */
+ void set_impl (CCM_DDS_DataReader_i *reader);
+
+ DDS_ReturnCode_t passivate (void);
+
+ DDS_ReturnCode_t remove_conditions (void);
+
+ void create_querycondition (const char * query,
+ const ::DDS_StringSeq & qp);
+ void set_queryparameters (const ::DDS_StringSeq & qp);
+
+ protected:
+ CCM_DDS_DataReader_i * reader_;
+ DDSQueryCondition * condition_;
+ ::DDS::Duration_t time_out_;
+ ::CCM_DDS::DataNumber_t max_delivered_data_;
+ DDSWaitSet * ws_;
+ DDSReadCondition * rd_condition_;
+ DDSQueryCondition * q_condition_;
+
+ void create_conditions ();
+
+ bool wait (DDSConditionSeq& active_conditions);
+
+ typename DDS_TYPE::data_reader * impl (void);
+ };
+
+ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+ class Getter_T;
+
+ /**
+ * @brief Implementation of the Getter port for variable sized data types.
+ *
+ */
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class Getter_T <DDS_TYPE, CCM_TYPE, false> :
+ public Getter_Base_T <DDS_TYPE, CCM_TYPE>
+ {
+ public:
+ /**
+ *
+ * @brief get_one implementation for variable sized datatypes.
+ *
+ * Spec : get_one returns the next sample to be gotten.
+ */
+ virtual bool get_one (
+ typename DDS_TYPE::value_type::_out_type an_instance,
+ ::CCM_DDS::ReadInfo_out info);
+ };
+
+ /**
+ * @brief Implementation of the Getter port for fixed sized data types.
+ *
+ */
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class Getter_T <DDS_TYPE, CCM_TYPE, true> :
+ public Getter_Base_T <DDS_TYPE, CCM_TYPE>
+ {
+ public:
+ /**
+ * @brief get_one implementation for fixed sized datatypes.
+ *
+ * Spec : get_one returns the next sample to be gotten.
+ */
+ virtual bool get_one (
+ typename DDS_TYPE::value_type::_out_type an_instance,
+ ::CCM_DDS::ReadInfo_out info);
+ };
+ }
+ }
+}
+
+#include "dds4ccm/impl/dds/Getter_T.cpp"
+
+#endif /* GETTER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.cpp
new file mode 100644
index 00000000000..cbcd0859bcc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.cpp
@@ -0,0 +1,73 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::InstanceHandleManager_T (void)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::~InstanceHandleManager_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::InstanceHandleManager_T::~InstanceHandleManager_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+typename DDS_TYPE::data_writer *
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::impl (void)
+{
+ if (this->writer_)
+ {
+ return DDS_TYPE::data_writer::narrow (this->writer_->get_impl ());
+ }
+ else
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+::DDS::InstanceHandle_t
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::
+ register_instance (const typename DDS_TYPE::value_type & datum)
+{
+ ::DDS::InstanceHandle_t dds_handle;
+ ::DDS_InstanceHandle_t const handle = this->impl ()->register_instance (datum);
+ dds_handle <<= handle;
+ return dds_handle;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+void
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::unregister_instance (
+ const typename DDS_TYPE::value_type & datum,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ ::DDS_InstanceHandle_t handle = ::DDS_HANDLE_NIL;
+ handle <<= instance_handle;
+ this->impl ()->unregister_instance (datum, handle);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+void
+CIAO::DDS4CCM::InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, BASE_TYPE>::set_impl (
+ CCM_DDS_DataWriter_i *writer)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::InstanceHandleManager_T::set_impl");
+
+ if (!writer)
+ {
+ this->writer_ = 0;
+ }
+ else
+ {
+ this->writer_ = writer;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.h
new file mode 100644
index 00000000000..5a12a7b7a82
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/InstanceHandleManager_T.h
@@ -0,0 +1,51 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef INSTANCE_HANDLEMANGER_T_H
+#define INSTANCE_HANDLEMANGER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE, typename BASE_TYPE>
+ class InstanceHandleManager_T :
+ public virtual BASE_TYPE,
+ public virtual ::CORBA::LocalObject,
+ private virtual ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ InstanceHandleManager_T (void);
+
+ /// Destructor
+ virtual ~InstanceHandleManager_T (void);
+
+ virtual ::DDS::InstanceHandle_t register_instance (
+ const typename DDS_TYPE::value_type & datum);
+
+ virtual void unregister_instance (
+ const typename DDS_TYPE::value_type & datum,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ void set_impl (CCM_DDS_DataWriter_i *writer);
+
+ typename DDS_TYPE::data_writer * impl (void);
+
+ private:
+ CCM_DDS_DataWriter_i *writer_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/InstanceHandleManager_T.cpp"
+
+#endif /* INSTANCE_HANDLEMANGER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.cpp
new file mode 100644
index 00000000000..d2f6c3d9a4e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.cpp
@@ -0,0 +1,182 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DataReaderHandler_T.h"
+#include "tao/ORB_Core.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::PortStatusListener_T (
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ACE_Reactor* reactor)
+ : port_status_listener_ (::CCM_DDS::PortStatusListener::_duplicate (port_status_listener)),
+ reactor_ (reactor)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PortStatusListener_T::PortStatusListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::~PortStatusListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PortStatusListener_T::~PortStatusListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PortStatusListener_T::on_requested_deadline_missed");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("total count <%d> - total change <%d> - ")
+ ACE_TEXT ("last instance handle <length <%l> - isValid <%l>\n"),
+ status.total_count, status.total_count_change,
+ status.last_instance_handle.length, status.last_instance_handle.isValid));
+
+ if (! ::CORBA::is_nil (this->port_status_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnRequestedDeadlineMissedHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnRequestedDeadlineMissedHandler (
+ this->port_status_listener_, the_reader, status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->port_status_listener_->on_requested_deadline_missed (the_reader, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("PortStatusListener_T::on_requested_deadline_missed: ")
+ ACE_TEXT ("No portstatus listener installed\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PortStatusListener_T::on_sample_lost");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("total count <%d> - total change <%d>\n"),
+ status.total_count, status.total_count_change));
+
+ if (! ::CORBA::is_nil (this->port_status_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnSampleLostHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnSampleLostHandler (
+ this->port_status_listener_,
+ the_reader,
+ status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->port_status_listener_->on_sample_lost (the_reader, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("PortStatusListener_T::on_sample_lost: ")
+ ACE_TEXT ("No portstatus listener installed\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_data_available (
+ ::DDS::DataReader_ptr )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & )
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::PortStatusListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ ::CCM_DDS::PortStatusListener_ptr psl)
+{
+ if (! ::CORBA::is_nil (psl) || CIAO_debug_level >= 10)
+ {
+ return DDS_REQUESTED_DEADLINE_MISSED_STATUS |
+ DDS_SAMPLE_LOST_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.h
new file mode 100644
index 00000000000..14cbecb1e5a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PortStatusListener_T.h
@@ -0,0 +1,84 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PORTSTATUSLISTENER_T_H
+#define DDS4CCM_PORTSTATUSLISTENER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class PortStatusListener_T :
+ public ::DDS::DataReaderListener,
+ private ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ PortStatusListener_T (
+ ::CCM_DDS::PortStatusListener_ptr port_status_listener,
+ ACE_Reactor* reactor);
+
+ /// Destructor
+ virtual ~PortStatusListener_T (void);
+
+ virtual void on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+
+ virtual void
+ on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedIncompatibleQosStatus & );
+
+ virtual void
+ on_sample_rejected (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleRejectedStatus & );
+
+ virtual void
+ on_liveliness_changed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::LivelinessChangedStatus & );
+
+ virtual void
+ on_data_available (
+ ::DDS::DataReader_ptr );
+
+ virtual void
+ on_subscription_matched (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SubscriptionMatchedStatus & );
+
+ static ::DDS::StatusMask get_mask (
+ ::CCM_DDS::PortStatusListener_ptr psl);
+
+ private:
+ ::CCM_DDS::PortStatusListener_var port_status_listener_;
+ protected:
+ ACE_Reactor* reactor_;
+
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/PortStatusListener_T.cpp"
+
+#endif /* DDS4CCM_PORTSTATUSLISTENER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.cpp
new file mode 100644
index 00000000000..6b18f7b07f4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.cpp
@@ -0,0 +1,456 @@
+// $Id$
+
+#include "Publisher.h"
+#include "PublisherListener.h"
+#include "Topic.h"
+#include "DataWriter.h"
+#include "StatusCondition.h"
+#include "Utils.h"
+#include "DataWriterListener.h"
+
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/Duration_t.h"
+#include "ndds/DataWriterQos.h"
+#include "ndds/PublisherQos.h"
+#include "ndds/TopicQos.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_Publisher_i::CCM_DDS_Publisher_i (DDSPublisher * dw)
+ : impl_ (dw)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::CCM_DDS_Publisher_i");
+ }
+
+ CCM_DDS_Publisher_i::~CCM_DDS_Publisher_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::~CCM_DDS_Publisher_i");
+ }
+
+ ::DDS::DataWriter_ptr
+ CCM_DDS_Publisher_i::create_datawriter (::DDS::Topic_ptr a_topic,
+ const ::DDS::DataWriterQos & qos,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::create_datawriter");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+
+ CCM_DDS_Topic_i * topic = dynamic_cast < CCM_DDS_Topic_i * > (a_topic);
+
+ if (!topic)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::create_datawriter - "
+ "Error: Unable to cast provided topic to its servant.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+
+ DDSDataWriterListener *ccm_dds_drl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_drl,
+ CCM_DDS_DataWriterListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ DDS_DataWriterQos ccm_dds_qos = DDS_DATAWRITER_QOS_DEFAULT;
+ DDSDataWriter *ccm_dds_dw = this->impl ()->create_datawriter (
+ topic->get_impl (),
+ ccm_dds_qos,
+ ccm_dds_drl,
+ mask);
+
+ if (!ccm_dds_dw)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::create_datawriter - "
+ "Error: RTI Topic returned a nil datawriter.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::DataWriter_var retval = ::DDS::DataWriter::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataWriter_i (ccm_dds_dw),
+ CORBA::NO_MEMORY ());
+
+ ccm_dds_dw->enable ();
+ CCM_DDS_DataWriter_i *dw = dynamic_cast< CCM_DDS_DataWriter_i * > (retval.in ());
+ dw->set_impl (ccm_dds_dw);
+
+ return retval._retn ();
+#else
+ return this->impl ()->create_datawriter (
+ a_topic,
+ qos,
+ a_listener,
+ mask);
+#endif
+ }
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::DataWriter_ptr
+ CCM_DDS_Publisher_i::create_datawriter_with_profile (::DDS::Topic_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::create_datawriter");
+
+ CCM_DDS_Topic_i * topic = dynamic_cast < CCM_DDS_Topic_i * > (a_topic);
+
+ if (!topic)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::create_datawriter_with_profile - "
+ "Error: Unable to cast provided topic to its servant.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+
+ DDSDataWriterListener *ccm_dds_drl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_drl,
+ CCM_DDS_DataWriterListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ DDSDataWriter *ccm_dds_dw = this->impl ()->create_datawriter_with_profile (
+ topic->get_impl (),
+ library_name,
+ profile_name,
+ ccm_dds_drl,
+ mask);
+
+ if (!ccm_dds_dw)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::create_datawriter_with_profile - "
+ "Error: RTI Topic returned a nil datawriter.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_Publisher_i::create_datareader_with_profile - "
+ "Successfully created datawriter with profile <%C#%C>.\n",
+ library_name,
+ profile_name));
+ }
+
+ ::DDS::DataWriter_var retval = ::DDS::DataWriter::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataWriter_i (ccm_dds_dw),
+ CORBA::NO_MEMORY ());
+
+ ccm_dds_dw->enable ();
+
+ return retval._retn ();
+ }
+#endif
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::delete_datawriter (::DDS::DataWriter_ptr a_datawriter)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::delete_datawriter");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_DataWriter_i *top = dynamic_cast< CCM_DDS_DataWriter_i *> (a_datawriter);
+
+ if (top == 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::delete_datawriter - "
+ "Unable to cast provided object reference to servant.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_Publisher_i::delete_datawriter - "
+ "Successfully casted provided object reference to servant.\n"));
+
+ DDS_ReturnCode_t const retval = this->impl ()->delete_datawriter (top->get_impl ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Publisher_i::delete_datawriter - "
+ "Error: RTI delete_datawriter returned non-ok error code %C\n",
+ translate_retcode (retval)));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_Publisher_i::delete_datawriter - "
+ "Provided datawriter successfully deleted\n"));
+ }
+
+ return retval;
+#else
+ return this->impl ()->delete_datawriter (a_datawriter);
+#endif
+ }
+
+ ::DDS::DataWriter_ptr
+ CCM_DDS_Publisher_i::lookup_datawriter (const char * impl_name)
+ {
+ ::DDS::DataWriter_var retval = ::DDS::DataWriter::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDataWriter* dw = this->impl ()->lookup_datawriter (impl_name);
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataWriter_i (dw),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::DataWriter_var dw = this->impl ()->lookup_datawriter (impl_name);
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataWriter_i (dw.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::delete_contained_entities (void)
+ {
+ return this->impl ()->delete_contained_entities ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::set_qos (const ::DDS::PublisherQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::set_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublisherQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl ()->set_qos (ccm_dds_qos);
+#else
+ return this->impl ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::get_qos (::DDS::PublisherQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::get_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_PublisherQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ ::DDS::ReturnCode_t retcode = this->impl()->
+ get_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl ()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::set_listener (::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::set_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_PublisherListener_i *ccm_dds_impl_list = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_impl_list,
+ CCM_DDS_PublisherListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl ()->set_listener (ccm_dds_impl_list, mask);
+#else
+ return this->impl ()->set_listener (a_listener, mask);
+#endif
+ }
+
+ ::DDS::PublisherListener_ptr
+ CCM_DDS_Publisher_i::get_listener (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::get_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSPublisherListener *ccm_dds_pub_list = this->impl ()->get_listener ();
+ CCM_DDS_PublisherListener_i *list_proxy = dynamic_cast <CCM_DDS_PublisherListener_i *> (ccm_dds_pub_list);
+ if (!list_proxy)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_Publisher_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::PublisherListener::_nil ();
+ }
+ return list_proxy->get_publisher_listener ();
+#else
+ return this->impl ()->get_listener ();
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::suspend_publications (void)
+ {
+ return this->impl ()->suspend_publications ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::resume_publications (void)
+ {
+ return this->impl ()->resume_publications ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::begin_coherent_changes (void)
+ {
+ return this->impl ()->begin_coherent_changes ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::end_coherent_changes (void)
+ {
+ return this->impl ()->end_coherent_changes ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_Duration_t ccm_dds_dds_duration;
+ ccm_dds_dds_duration <<= max_wait;
+ return this->impl ()->wait_for_acknowledgments (ccm_dds_dds_duration);
+#else
+ return this->impl ()->wait_for_acknowledgments (max_wait);
+#endif
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_Publisher_i::get_participant (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::get_participant");
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipant* p = this->impl ()->get_participant ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::DomainParticipant_var p = this->impl ()->get_participant ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::set_default_datawriter_qos (const ::DDS::DataWriterQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::set_default_datawriter_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataWriterQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl()->set_default_datawriter_qos (ccm_dds_qos);
+#else
+ return this->impl()->set_default_datawriter_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::get_default_datawriter_qos (::DDS::DataWriterQos & qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::get_default_datawriter_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataWriterQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode =
+ this->impl()->get_default_datawriter_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->get_default_datawriter_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::copy_from_topic_qos (::DDS::DataWriterQos & a_dataimpl_qos,
+ const ::DDS::TopicQos & a_impl_qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Publisher_i::copy_from_topic_qos");
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataWriterQos ccm_dds_qos;
+ ::DDS_TopicQos ccm_dds_topic_qos;
+
+ ccm_dds_qos <<= a_dataimpl_qos;
+ ccm_dds_topic_qos <<= a_impl_qos;
+ ::DDS::ReturnCode_t const retcode =
+ this->impl()->copy_from_topic_qos (ccm_dds_qos, ccm_dds_topic_qos);
+ a_dataimpl_qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->copy_from_topic_qos (a_dataimpl_qos, a_impl_qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Publisher_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_Publisher_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_Publisher_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ CCM_DDS_Publisher_i::get_instance_handle (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ DDSPublisher *
+ CCM_DDS_Publisher_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_Publisher_i::set_impl (DDSPublisher * dw)
+ {
+ this->impl_ = dw;
+ }
+
+ DDSPublisher *
+ CCM_DDS_Publisher_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.h
new file mode 100644
index 00000000000..46705e0f284
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Publisher.h
@@ -0,0 +1,133 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PUBLISHER_H
+#define DDS4CCM_PUBLISHER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::Publisher DDSPublisher;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_Publisher_i :
+ public virtual ::DDS::CCM_Publisher,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_Publisher_i (DDSPublisher * dw);
+
+ /// Destructor
+ virtual ~CCM_DDS_Publisher_i (void);
+
+ virtual
+ ::DDS::DataWriter_ptr create_datawriter (::DDS::Topic_ptr a_topic,
+ const ::DDS::DataWriterQos & qos,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual
+ ::DDS::DataWriter_ptr create_datawriter_with_profile (::DDS::Topic_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual
+ ::DDS::ReturnCode_t delete_datawriter (::DDS::DataWriter_ptr a_datawriter);
+
+ virtual
+ ::DDS::DataWriter_ptr lookup_datawriter (const char * impl_name);
+
+ virtual
+ ::DDS::ReturnCode_t delete_contained_entities (void);
+
+ virtual
+ ::DDS::ReturnCode_t set_qos (const ::DDS::PublisherQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t get_qos (::DDS::PublisherQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t set_listener (::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual
+ ::DDS::PublisherListener_ptr get_listener (void);
+
+ virtual
+ ::DDS::ReturnCode_t suspend_publications (void);
+
+ virtual
+ ::DDS::ReturnCode_t resume_publications (void);
+
+ virtual
+ ::DDS::ReturnCode_t begin_coherent_changes (void);
+
+ virtual
+ ::DDS::ReturnCode_t end_coherent_changes (void);
+
+ virtual
+ ::DDS::ReturnCode_t wait_for_acknowledgments (const ::DDS::Duration_t & max_wait);
+
+ virtual
+ ::DDS::DomainParticipant_ptr get_participant (void);
+
+ virtual
+ ::DDS::ReturnCode_t set_default_datawriter_qos (const ::DDS::DataWriterQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t get_default_datawriter_qos (::DDS::DataWriterQos & qos);
+
+ virtual
+ ::DDS::ReturnCode_t copy_from_topic_qos (::DDS::DataWriterQos & a_dataimpl_qos,
+ const ::DDS::TopicQos & a_impl_qos);
+
+ virtual
+ ::DDS::ReturnCode_t enable (void);
+
+ virtual
+ ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual
+ ::DDS::StatusMask get_status_changes (void);
+
+ virtual
+ ::DDS::InstanceHandle_t get_instance_handle (void);
+
+ DDSPublisher * get_impl (void);
+
+ void set_impl (DDSPublisher *p);
+
+ private:
+ DDSPublisher *impl_;
+
+ DDSPublisher *impl (void);
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.cpp
new file mode 100644
index 00000000000..0749c455e56
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.cpp
@@ -0,0 +1,156 @@
+// $Id$
+
+#include "PublisherListener.h"
+#include "Publisher.h"
+#include "DataWriter.h"
+
+#include "ndds/PublicationMatchedStatus.h"
+#include "ndds/LivelinessLostStatus.h"
+#include "ndds/OfferedIncompatibleQosStatus.h"
+#include "ndds/OfferedDeadlineMissedStatus.h"
+#include "ndds/ReliableReaderActivityChangedStatus.h"
+#include "ndds/ReliableWriterCacheChangedStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_PublisherListener_i::CCM_DDS_PublisherListener_i ( ::DDS::PublisherListener_ptr p)
+ : impl_ (::DDS::PublisherListener::_duplicate (p))
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::CCM_DDS_PublisherListener_i");
+ }
+
+ CCM_DDS_PublisherListener_i::~CCM_DDS_PublisherListener_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::~CCM_DDS_PublisherListener_i");
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_offered_deadline_missed (
+ ::DDSDataWriter* writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_offered_deadline_missed");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::OfferedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_offered_incompatible_qos (
+ ::DDSDataWriter* writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_offered_incompatible_qos");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::OfferedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_liveliness_lost (
+ ::DDSDataWriter* writer,
+ const ::DDS_LivelinessLostStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_liveliness_lost");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::LivelinessLostStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_liveliness_lost (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_publication_matched (
+ ::DDSDataWriter* writer,
+ const ::DDS_PublicationMatchedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_publication_matched");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::PublicationMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_publication_matched (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_publication_matched (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_reliable_reader_activity_changed (
+ ::DDSDataWriter *writer,
+ const ::DDS_ReliableReaderActivityChangedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_reliable_reader_activity_changed");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::ReliableReaderActivityChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_reliable_reader_activity_changed (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_reliable_reader_activity_changed (dds_writer.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_PublisherListener_i::on_reliable_writer_cache_changed (
+ ::DDSDataWriter* writer,
+ const ::DDS_ReliableWriterCacheChangedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_PublisherListener_i::on_reliable_writer_cache_changed");
+
+ ::DDS::DataWriter_var dds_writer = ::DDS::DataWriter::_nil ();
+ ACE_NEW (dds_writer,
+ CCM_DDS_DataWriter_i (writer));
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::ReliableWriterCacheChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_reliable_writer_cache_changed (dds_writer.in (), ddsstatus);
+#else
+ this->impl_->on_reliable_writer_cache_changed (dds_writer.in (), status);
+#endif
+ }
+
+ ::DDS::PublisherListener_ptr
+ CCM_DDS_PublisherListener_i::get_publisher_listener (void)
+ {
+ return ::DDS::PublisherListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.h
new file mode 100644
index 00000000000..9f26a421124
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener.h
@@ -0,0 +1,90 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PUBLISHERLISTENER_H
+#define DDS4CCM_PUBLISHERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::PublisherListener DDSPublisherListener;
+typedef ::DDS::DataWriter DDSDataWriter;
+typedef ::DDS::OfferedDeadlineMissedStatus DDS_OfferedDeadlineMissedStatus;
+typedef ::DDS::OfferedIncompatibleQosStatus DDS_OfferedIncompatibleQosStatus;
+typedef ::DDS::LivelinessLostStatus DDS_LivelinessLostStatus;
+typedef ::DDS::PublicationMatchedStatus DDS_PublicationMatchedStatus;
+typedef ::DDS::ReliableWriterCacheChangedStatus DDS_ReliableWriterCacheChangedStatus;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_PublisherListener_i :
+ public virtual ::DDSPublisherListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_PublisherListener_i (::DDS::PublisherListener_ptr p);
+
+ /// Destructor
+ virtual ~CCM_DDS_PublisherListener_i (void);
+
+ virtual void
+ on_offered_deadline_missed (
+ ::DDSDataWriter *writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status);
+
+ virtual void
+ on_offered_incompatible_qos (
+ ::DDSDataWriter *writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status);
+
+ virtual void
+ on_liveliness_lost (
+ ::DDSDataWriter *writer,
+ const ::DDS_LivelinessLostStatus & status);
+
+ virtual void
+ on_publication_matched (
+ ::DDSDataWriter *writer,
+ const ::DDS_PublicationMatchedStatus & status);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual void
+ on_reliable_reader_activity_changed (
+ ::DDSDataWriter *writer,
+ const ::DDS_ReliableReaderActivityChangedStatus & status);
+
+ virtual void
+ on_reliable_writer_cache_changed (
+ ::DDSDataWriter *writer,
+ const ::DDS_ReliableWriterCacheChangedStatus & status);
+#endif
+
+ ::DDS::PublisherListener_ptr get_publisher_listener (void);
+ private:
+ ::DDS::PublisherListener_var impl_;
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.cpp
new file mode 100644
index 00000000000..fd298923e7f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.cpp
@@ -0,0 +1,294 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DataReaderHandler_T.h"
+#include "dds4ccm/impl/dds/DDSCallbackStatusHandler.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+#include "tao/ORB_Core.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::PublisherListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor)
+ : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)),
+ reactor_ (reactor)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::PublisherListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::~PublisherListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::~PublisherListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_unexpected_status (
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_unexpected_status");
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnUnexpectedStatusHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnUnexpectedStatusHandler (
+ this->error_listener_, entity, status_kind));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("PublisherListener_T::failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_unexpected_status (entity, status_kind);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("PublisherListener_T::on_unexpected_status: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::OfferedDeadlineMissedStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_offered_deadline_missed");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ")
+ ACE_TEXT ("total count <%d> - count change <%d> - ")
+ ACE_TEXT ("last instance handle <length <%d> - isValid <%d>\n"),
+ status.total_count, status.total_count_change,
+ status.last_instance_handle.length,
+ status.last_instance_handle.isValid));
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnOfferedDeadlineMissedHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnOfferedDeadlineMissedHandler (
+ this->error_listener_, the_Writer, status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("PublisherListener_T::failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_offered_deadline_missed (the_Writer, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_offered_deadline_missed: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::OfferedIncompatibleQosStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_offered_incompatible_qos");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_offered_incompatible_qos: ")
+ ACE_TEXT ("total count <%d> - total change <%d> - ")
+ ACE_TEXT ("last policy id <%d> - policies "),
+ status.total_count, status.total_count_change,
+ status.last_policy_id));
+ for (CORBA::ULong i = 0; i < status.policies.length (); ++i)
+ {
+ DDS4CCM_DEBUG (10, (LM_DEBUG,
+ ACE_TEXT ("\t\tid <%d> - count <%d>\n"),
+ status.policies[i].policy_id,
+ status.policies[i].count));
+ }
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnOfferedIncompatibleQoSHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnOfferedIncompatibleQoSHandler (
+ this->error_listener_, the_Writer, status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("PublisherListener_T::failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_offered_incompatible_qos (the_Writer, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("PublisherListener_T::on_offered_incompatible_qos: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_offered_incompatible_qos: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_lost (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::LivelinessLostStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_liveliness_lost");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_liveliness_lost: ")
+ ACE_TEXT ("total count <%d> - count change <%d>\n"),
+ status.total_count, status.total_count_change));
+
+ this->on_unexpected_status (the_Writer, ::DDS::LIVELINESS_LOST_STATUS);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_publication_matched (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::PublicationMatchedStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_publication_matched");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_publication_matched: ")
+ ACE_TEXT ("total count <%d> - count change <%d> - ")
+ ACE_TEXT ("current count <%d> - current count change <%d> ")
+ ACE_TEXT ("last publication handle <length <%d> - isValid <%d>\n"),
+ status.total_count, status.total_count_change,
+ status.current_count, status.current_count_change,
+ status.last_subscription_handle.length,
+ status.last_subscription_handle.isValid));
+
+ this->on_unexpected_status (the_Writer, ::DDS::PUBLICATION_MATCHED_STATUS);
+}
+
+#if (CIAO_DDS4CCM_NDDS==1)
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::ReliableWriterCacheChangedStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_reliable_writer_cache_changed");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_reliable_writer_cache_changed: ")
+ ACE_TEXT ("empty_reliable_writer_cache.total_count <%d> - ")
+ ACE_TEXT ("empty_reliable_writer_cache.total_count_change <%d> - ")
+ ACE_TEXT ("full_reliable_writer_cache.total_count <%d> - ")
+ ACE_TEXT ("full_reliable_writer_cache.total_count_change <%d> - ")
+ ACE_TEXT ("low_watermark_reliable_writer_cache.total_count <%d> - ")
+ ACE_TEXT ("low_watermark_reliable_writer_cache.total_count_change <%d> - ")
+ ACE_TEXT ("high_watermark_reliable_writer_cache.total_count <%d> - ")
+ ACE_TEXT ("high_watermark_reliable_writer_cache.total_count_change <%d> - ")
+ ACE_TEXT ("unacknowledged_sample_count <%d> - ")
+ ACE_TEXT ("unacknowledged_sample_count_peak <%d>\n"),
+ status.empty_reliable_writer_cache.total_count,
+ status.empty_reliable_writer_cache.total_count_change,
+ status.full_reliable_writer_cache.total_count,
+ status.full_reliable_writer_cache.total_count_change,
+ status.low_watermark_reliable_writer_cache.total_count,
+ status.low_watermark_reliable_writer_cache.total_count_change,
+ status.high_watermark_reliable_writer_cache.total_count,
+ status.high_watermark_reliable_writer_cache.total_count_change,
+ status.unacknowledged_sample_count,
+ status.unacknowledged_sample_count_peak));
+
+ this->on_unexpected_status (the_Writer, ::DDS::RELIABLE_WRITER_CACHE_CHANGED_STATUS);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::ReliableReaderActivityChangedStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::PublisherListener_T::on_reliable_reader_activity_changed");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("PublisherListener_T::on_reliable_reader_activity_changed: ")
+ ACE_TEXT ("active count <%d> - active change <%d> - ")
+ ACE_TEXT ("not active count <%d> - inactive count change <%d>")
+ ACE_TEXT ("last instance handle <length <%d> - isValid <%d>\n"),
+ status.active_count, status.active_count_change,
+ status.inactive_count, status.inactive_count_change,
+ status.last_instance_handle.length,
+ status.last_instance_handle.isValid));
+
+ this->on_unexpected_status (the_Writer, ::DDS::RELIABLE_READER_ACTIVITY_CHANGED_STATUS);
+}
+#endif
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::PublisherListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener)
+{
+ if (! ::CORBA::is_nil (error_listener) || CIAO_debug_level >= 10)
+ {
+ return ::DDS::OFFERED_DEADLINE_MISSED_STATUS |
+ ::DDS::OFFERED_INCOMPATIBLE_QOS_STATUS |
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::RELIABLE_WRITER_CACHE_CHANGED_STATUS |
+ ::DDS::RELIABLE_READER_ACTIVITY_CHANGED_STATUS |
+#endif
+ ::DDS::LIVELINESS_LOST_STATUS |
+ ::DDS::PUBLICATION_MATCHED_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.h
new file mode 100644
index 00000000000..e352c86084c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/PublisherListener_T.h
@@ -0,0 +1,83 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS_PUBLISHERLISTENER_T_H_
+#define DDS_PUBLISHERLISTENER_T_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+#include "ace/Copy_Disabled.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class PublisherListener_T :
+ public ::DDS::PublisherListener,
+ private ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ PublisherListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor);
+
+ virtual void on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::OfferedDeadlineMissedStatus & status);
+
+ virtual void on_liveliness_lost (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::LivelinessLostStatus & status);
+
+ virtual void on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::OfferedIncompatibleQosStatus & status);
+
+ virtual void on_publication_matched (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::PublicationMatchedStatus & status);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual void on_reliable_writer_cache_changed (
+ ::DDS::DataWriter_ptr the_writer,
+ const ::DDS::ReliableWriterCacheChangedStatus & status);
+
+ virtual void on_reliable_reader_activity_changed (
+ ::DDS::DataWriter_ptr the_Writer,
+ const ::DDS::ReliableReaderActivityChangedStatus & status);
+#endif
+
+ /// Destructor
+ virtual ~PublisherListener_T (void);
+
+ static ::DDS::StatusMask get_mask (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener);
+
+ private:
+ virtual void on_unexpected_status (
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind);
+
+ ::CCM_DDS::ConnectorStatusListener_var error_listener_;
+
+ ACE_Reactor* reactor_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/PublisherListener_T.cpp"
+
+#endif /* DDS_PUBLISHERLISTENER_T_H_ */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.cpp
new file mode 100644
index 00000000000..3209ccc6149
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.cpp
@@ -0,0 +1,134 @@
+// $Id$
+
+#include "QueryCondition.h"
+#include "Subscriber.h"
+#include "DataReader.h"
+
+#include "ndds/StringSeq.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_QueryCondition_i::CCM_DDS_QueryCondition_i (DDSQueryCondition * qc)
+ : impl_ (qc)
+ {
+ }
+
+ CCM_DDS_QueryCondition_i::~CCM_DDS_QueryCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ CCM_DDS_QueryCondition_i::get_trigger_value (void)
+ {
+ return this->impl ()->get_trigger_value ();
+ }
+
+ ::DDS::SampleStateMask
+ CCM_DDS_QueryCondition_i::get_sample_state_mask (void)
+ {
+ return this->impl ()->get_sample_state_mask ();
+ }
+
+ ::DDS::ViewStateMask
+ CCM_DDS_QueryCondition_i::get_view_state_mask (void)
+ {
+ return this->impl ()->get_view_state_mask ();
+ }
+
+ ::DDS::InstanceStateMask
+ CCM_DDS_QueryCondition_i::get_instance_state_mask (void)
+ {
+ return this->impl ()->get_instance_state_mask ();
+ }
+
+ ::DDS::DataReader_ptr
+ CCM_DDS_QueryCondition_i::get_datareader (void)
+ {
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDSDataReader* reader = this->impl ()->get_datareader ();
+ if (reader)
+ {
+ ACE_NEW_THROW_EX (dds_reader,
+ CCM_DDS_DataReader_i (reader),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::DataReader_var reader = this->impl ()->get_datareader ();
+ if (! ::CORBA::is_nil (reader.in ()))
+ {
+ ACE_NEW_THROW_EX (dds_reader,
+ CCM_DDS_DataReader_i (reader.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return dds_reader._retn ();
+ }
+
+ char *
+ CCM_DDS_QueryCondition_i::get_query_expression (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return ::CORBA::string_dup (this->impl ()->get_query_expression ());
+#else
+ return this->impl ()->get_query_expression ();
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_QueryCondition_i::get_query_parameters (
+ ::DDS::StringSeq & query_parameters)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_StringSeq parameters;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_query_parameters (parameters);
+ query_parameters <<= parameters;
+ return retval;
+#else
+ return this->impl ()->get_query_parameters (query_parameters);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_QueryCondition_i::set_query_parameters (
+ const ::DDS::StringSeq & query_parameters)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_StringSeq parameters;
+ parameters <<= query_parameters;
+ return this->impl ()->set_query_parameters (parameters);
+#else
+ return this->impl ()->set_query_parameters (query_parameters);
+#endif
+ }
+
+ DDSQueryCondition *
+ CCM_DDS_QueryCondition_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_QueryCondition_i::set_impl (DDSQueryCondition * dw)
+ {
+ this->impl_ = dw;
+ }
+
+ DDSQueryCondition *
+ CCM_DDS_QueryCondition_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.h b/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.h
new file mode 100644
index 00000000000..959101a3d6e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/QueryCondition.h
@@ -0,0 +1,76 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_QUERYCONDITION_H
+#define DDS4CCM_QUERYCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::QueryCondition DDSQueryCondition;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_QueryCondition_i :
+ public virtual ::DDS::CCM_QueryCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_QueryCondition_i (DDSQueryCondition * qc);
+
+ /// Destructor
+ virtual ~CCM_DDS_QueryCondition_i (void);
+
+ virtual ::CORBA::Boolean get_trigger_value (void);
+
+ virtual ::DDS::SampleStateMask get_sample_state_mask (void);
+
+ virtual ::DDS::ViewStateMask get_view_state_mask (void);
+
+ virtual ::DDS::InstanceStateMask get_instance_state_mask (void);
+
+ virtual ::DDS::DataReader_ptr get_datareader (void);
+
+ virtual char *get_query_expression (void);
+
+ virtual ::DDS::ReturnCode_t
+ get_query_parameters (::DDS::StringSeq & query_parameters);
+
+ virtual ::DDS::ReturnCode_t
+ set_query_parameters (const ::DDS::StringSeq & query_parameters);
+
+ DDSQueryCondition * get_impl (void);
+
+ void set_impl (DDSQueryCondition * qc);
+
+ private:
+ DDSQueryCondition * impl_;
+
+ DDSQueryCondition * impl ();
+ };
+ }
+}
+
+#endif /* DDS4CCM_QUERYCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.cpp
new file mode 100644
index 00000000000..e8459b51e0a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.cpp
@@ -0,0 +1,80 @@
+// $Id$
+
+#include "ReadCondition.h"
+#include "DataReader.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_ReadCondition_i::CCM_DDS_ReadCondition_i (DDSReadCondition * rc)
+ : impl_ (rc)
+ {
+ }
+
+ CCM_DDS_ReadCondition_i::~CCM_DDS_ReadCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ CCM_DDS_ReadCondition_i::get_trigger_value (void)
+ {
+ return this->impl ()->get_trigger_value ();
+ }
+
+ ::DDS::SampleStateMask
+ CCM_DDS_ReadCondition_i::get_sample_state_mask (void)
+ {
+ return this->impl ()->get_sample_state_mask ();
+ }
+
+ ::DDS::ViewStateMask
+ CCM_DDS_ReadCondition_i::get_view_state_mask (void)
+ {
+ return this->impl ()->get_view_state_mask ();
+ }
+
+ ::DDS::InstanceStateMask
+ CCM_DDS_ReadCondition_i::get_instance_state_mask (void)
+ {
+ return this->impl ()->get_instance_state_mask ();
+ }
+
+ ::DDS::DataReader_ptr
+ CCM_DDS_ReadCondition_i::get_datareader (void)
+ {
+ ::DDS::DataReader_var retval = ::DDS::DataReader::_nil ();
+ ::DDSDataReader* rd = this->impl ()->get_datareader ();
+ if (rd)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataReader_i (rd),
+ CORBA::NO_MEMORY ());
+ }
+ return retval._retn ();
+ }
+
+ DDSReadCondition *
+ CCM_DDS_ReadCondition_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_ReadCondition_i::set_impl (DDSReadCondition * rc)
+ {
+ this->impl_ = rc;
+ }
+
+ DDSReadCondition *
+ CCM_DDS_ReadCondition_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.h
new file mode 100644
index 00000000000..de289f58c05
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ReadCondition.h
@@ -0,0 +1,68 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_READCONDITION_H
+#define DDS4CCM_READCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ReadCondition DDSReadCondition;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_ReadCondition_i :
+ public virtual ::DDS::CCM_ReadCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_ReadCondition_i (DDSReadCondition * rc);
+
+ /// Destructor
+ virtual ~CCM_DDS_ReadCondition_i (void);
+
+ virtual ::CORBA::Boolean get_trigger_value (void);
+
+ virtual ::DDS::SampleStateMask get_sample_state_mask (void);
+
+ virtual ::DDS::ViewStateMask get_view_state_mask (void);
+
+ virtual ::DDS::InstanceStateMask get_instance_state_mask (void);
+
+ virtual ::DDS::DataReader_ptr get_datareader (void);
+
+ DDSReadCondition * get_impl (void);
+
+ void set_impl (DDSReadCondition * rc);
+
+ private:
+ DDSReadCondition *impl_;
+
+ DDSReadCondition * impl (void);
+ };
+ }
+}
+
+#endif /* DDS4CCM_READCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp
new file mode 100644
index 00000000000..ecfc048b600
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp
@@ -0,0 +1,682 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/dds/DataReaderListener_T.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/Subscriber.h"
+#include "dds4ccm/impl/dds/QueryCondition.h"
+
+#include "dds4ccm/impl/dds/ndds/SampleInfo.h"
+#include "dds4ccm/impl/dds/ndds/StringSeq.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::Reader_T (void)
+ : reader_ (0),
+ dds_get_ (0),
+ library_name_ (""),
+ profile_name_ ("")
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::Reader_T");
+ #if (DDS4CCM_USES_QUERY_CONDITION==1)
+ this->qc_ = 0;
+ #else
+ this->cft_ = 0;
+ #endif
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::~Reader_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::~Reader_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+typename DDS_TYPE::data_reader *
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::impl (void)
+{
+ if (this->reader_)
+ {
+ return DDS_TYPE::data_reader::narrow (this->reader_->get_impl ());
+ }
+ else
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+}
+
+// For the requirement : 'samples ordered by instances' the following settings are necessary:
+// ordered_access -> true and DDS_INSTANCE_PRESENTATION_QOS (default) .
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+CORBA::ULong
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::get_nr_valid_samples (
+ const DDS_SampleInfoSeq& sample_info,
+ bool determine_last)
+{
+ CORBA::ULong nr_of_samples = 0;
+ for (::DDS_Long i = 0 ; i < sample_info.length(); ++i)
+ {
+ if (determine_last)
+ {
+ if (sample_info[i].sample_rank == 0 && sample_info[i].valid_data)
+ {
+ ++nr_of_samples;
+ }
+ }
+ else if (sample_info[i].valid_data)
+ {
+ ++nr_of_samples;
+ }
+ }
+ return nr_of_samples;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_without_instance (
+ typename DDS_TYPE::dds_seq_type & data,
+ DDS_SampleInfoSeq & sample_info)
+{
+ DDS_ReturnCode_t retval = DDS_RETCODE_ERROR;
+#if (DDS4CCM_USES_QUERY_CONDITION==1)
+ if (this->qc_)
+ {
+ retval = this->impl ()->read_w_condition (data,
+ sample_info,
+ DDS_LENGTH_UNLIMITED,
+ this->qc_);
+ }
+ else
+ {
+#endif
+ retval = this->impl ()->read (data,
+ sample_info,
+ DDS_LENGTH_UNLIMITED,
+ DDS_READ_SAMPLE_STATE | DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ALIVE_INSTANCE_STATE);
+#if (DDS4CCM_USES_QUERY_CONDITION==1)
+ }
+#endif
+ if (retval != DDS_RETCODE_OK && retval != DDS_RETCODE_NO_DATA)
+ {
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_without_instance - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_without_instance - ")
+ ACE_TEXT ("retval is %C\n"), translate_retcode(retval)));
+ throw ::CCM_DDS::InternalError (retval, 0);
+ }
+}
+
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_last (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ // This function has to return the last sample of all instances
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+
+ this->read_without_instance (data, sample_info);
+
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW_THROW_EX (inst_seq,
+ typename CCM_TYPE::seq_type,
+ CORBA::NO_MEMORY ());
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW_THROW_EX (infoseq,
+ ::CCM_DDS::ReadInfoSeq,
+ CORBA::NO_MEMORY ());
+
+ CORBA::ULong const nr_of_last_samples = this->get_nr_valid_samples (sample_info, true);
+
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_last - ")
+ ACE_TEXT ("total number of samples <%u> - ")
+ ACE_TEXT ("last number of samples <%u>\n"),
+ data.length(),
+ nr_of_last_samples));
+ CORBA::ULong ix = 0;
+
+ infoseq->length (nr_of_last_samples);
+ inst_seq->length (nr_of_last_samples);
+
+ // We need only the last sample of each instance
+ for (::DDS_Long i = 0 ; i < sample_info.length(); ++i)
+ {
+ if((sample_info[i].sample_rank == 0) && (sample_info[i].valid_data))
+ {
+ (*infoseq)[ix] <<= sample_info[i];
+ (*inst_seq)[ix] = data[i];
+ ++ix;
+ }
+ }
+
+ // Return the loan
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_last - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ infos = infoseq;
+ instances = inst_seq;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_all (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ // This function has to return all samples of all instances
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+
+ this->read_without_instance (data, sample_info);
+
+ CORBA::ULong const nr_of_valid_samples = this->get_nr_valid_samples (sample_info);
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_all - ")
+ ACE_TEXT ("total number of samples <%u> - ")
+ ACE_TEXT ("valid number of samples <%u>\n"),
+ data.length (),
+ nr_of_valid_samples));
+
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW_THROW_EX (inst_seq,
+ typename CCM_TYPE::seq_type,
+ CORBA::NO_MEMORY ());
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW_THROW_EX (infoseq,
+ ::CCM_DDS::ReadInfoSeq,
+ CORBA::NO_MEMORY ());
+
+ infoseq->length (nr_of_valid_samples);
+ inst_seq->length (nr_of_valid_samples);
+
+ CORBA::ULong ix = 0;
+
+ for (::DDS_Long i = 0 ; i < sample_info.length(); ++i)
+ {
+ if(sample_info[i].valid_data)
+ {
+ (*infoseq)[ix] <<= sample_info[i];
+ (*inst_seq)[ix] = data[i];
+ ++ix;
+ }
+ }
+
+ // Return the loan
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_all - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+
+ infos = infoseq;
+ instances = inst_seq;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_InstanceHandle_t
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::check_handle (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL;
+ hnd <<= instance_handle;
+
+ DDS_InstanceHandle_t const lookup_hnd =
+ this->impl ()->lookup_instance (an_instance);
+ if (!DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL) &&
+ !DDS_InstanceHandle_equals (&hnd, &lookup_hnd))
+ {
+ throw ::CCM_DDS::InternalError (0, 0);
+ }
+ if (DDS_InstanceHandle_equals (&lookup_hnd, &::DDS_HANDLE_NIL))
+ {
+ throw ::CCM_DDS::NonExistent ();
+ }
+ return lookup_hnd;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_with_instance (
+ typename DDS_TYPE::dds_seq_type & data,
+ const ::DDS_InstanceHandle_t & lookup_hnd,
+ DDS_SampleInfoSeq & sample_info)
+{
+ DDS4CCM_DEBUG (6, (LM_INFO, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_with_instance - ")
+ ACE_TEXT ("Reading with instance.\n")));
+ DDS_ReturnCode_t const retval = this->impl ()->read_instance (
+ data,
+ sample_info,
+ DDS_LENGTH_UNLIMITED,
+ lookup_hnd,
+ DDS_READ_SAMPLE_STATE | DDS_NOT_READ_SAMPLE_STATE ,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ALIVE_INSTANCE_STATE);
+ if (retval != DDS_RETCODE_OK && retval != DDS_RETCODE_NO_DATA)
+ {
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_with_instance - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+ DDS4CCM_ERROR (1, (LM_ERROR, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_with_instance - ")
+ ACE_TEXT ("retval is %C\n"), translate_retcode(retval)));
+ throw ::CCM_DDS::InternalError (retval, 0);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_one_last (
+ typename DDS_TYPE::value_type& an_instance,
+ ::CCM_DDS::ReadInfo_out info,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS_InstanceHandle_t const lookup_hnd = this->check_handle (an_instance, instance_handle);
+
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+
+ // For now, only read with instance...
+ this->read_with_instance (data, lookup_hnd, sample_info);
+
+ ::DDS_Long sample = data.length();
+ DDS4CCM_DEBUG (6, (LM_INFO,
+ ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_one_last - ")
+ ACE_TEXT ("total number of samples <%u>\n"),
+ sample));
+ while (sample >= 0 && !sample_info[sample-1].valid_data)
+ {
+ --sample;
+ }
+ if (sample >= 0)
+ {
+ if(sample_info[sample-1].valid_data)
+ {
+ an_instance = data[sample-1];
+ info <<= sample_info[sample-1];
+ }
+ }
+ // Return the loan
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_one_last - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::read_one_all (
+ const typename DDS_TYPE::value_type& an_instance,
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS_InstanceHandle_t const lookup_hnd =
+ this->check_handle (an_instance, instance_handle);
+
+ DDS_SampleInfoSeq sample_info;
+ typename DDS_TYPE::dds_seq_type data;
+
+ this->read_with_instance (data, lookup_hnd, sample_info);
+
+ // Count the number of valid samples
+ CORBA::ULong const nr_of_valid_samples = this->get_nr_valid_samples (sample_info);
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("CIAO::DDS4CCM::DDS_CCM::Reader_T::read_all - ")
+ ACE_TEXT ("total number of samples <%u> - ")
+ ACE_TEXT ("valid number of samples <%u>\n"),
+ data.length (),
+ nr_of_valid_samples));
+
+ typename CCM_TYPE::seq_type * inst_seq = 0;
+ ACE_NEW_THROW_EX (inst_seq,
+ typename CCM_TYPE::seq_type (nr_of_valid_samples),
+ CORBA::NO_MEMORY ());
+ ::CCM_DDS::ReadInfoSeq * infoseq = 0;
+ ACE_NEW_THROW_EX (infoseq,
+ ::CCM_DDS::ReadInfoSeq (nr_of_valid_samples),
+ CORBA::NO_MEMORY ());
+
+ infoseq->length (nr_of_valid_samples);
+ inst_seq->length (nr_of_valid_samples);
+
+ // Copy the valid samples
+ CORBA::ULong ix = 0;
+ for (::DDS_Long i = 0 ; i < sample_info.length(); ++i)
+ {
+ if(sample_info[i].valid_data)
+ {
+ (*infoseq)[ix] <<= sample_info[i];
+ (*inst_seq)[ix] = data[i];
+ ++ix;
+ }
+ }
+
+ // Return the loan
+ DDS_ReturnCode_t const retval = this->impl ()->return_loan (data, sample_info);
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ "CIAO::DDS4CCM::DDS_CCM::Reader_T::read_one_all - "
+ "Error returning loan to DDS - <%C>\n",
+ translate_retcode (retval)));
+ }
+
+ infos = infoseq;
+ instances = inst_seq;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::create_contentfilteredtopic (
+ const ::CCM_DDS::QueryFilter & filter,
+ ::DDSSubscriber * sub)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic");
+
+ // To create a ContentFilteredTopic we need a DDSTopic.
+ // Since a ContentFilteredTopic is created on the DomainParticipant,
+ // we need to obtain the DomainParticipant through the
+ // Subscriber.
+ ::DDSDomainParticipant * dp = sub->get_participant ();
+ if (!dp)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic - "
+ "Unable to get the Participant from the DDS Subscriber\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+ // Now, get the topic.
+ ::DDSTopicDescription * td = this->reader_->get_impl ()->get_topicdescription ();
+ if (!td)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic - "
+ "Unable to get the TopicDescription from the DDS DomainParticipant\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 2);
+ }
+ ::DDSTopic * tp = ::DDSTopic::narrow (td);
+ if (!tp)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic - "
+ "Unable to narrow the DDS TopicDescription to a DDS Topic\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 3);
+ }
+ // Now create the ContentFilteredTopic
+ DDS_StringSeq params;
+ params <<= filter.query_parameters;
+ this->cft_ = dp->create_contentfilteredtopic (
+ "DDS4CCMContentFilteredTopic",
+ tp,
+ filter.query,
+ params);
+ if (!this->cft_)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic - "
+ "Error: Unable to create ContentFilteredTopic.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 4);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::delete_datareader (
+ ::DDSSubscriber * sub)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::delete_datareader");
+ DDS_ReturnCode_t const retval = sub->delete_datareader (this->impl ());
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::delete_datareader - "
+ "Unable to delete original DataReader. "
+ "Retval is %C\n",
+ translate_retcode(retval)));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::create_filter (
+ const ::CCM_DDS::QueryFilter & filter)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::create_filter");
+
+ // we need to use the DDS entities direct since we're not allowed
+ // to change the CORBA interfaces. These are known to component
+ // the end user has created.
+
+ // To set a ContentFilteredTopic on a DataReader, the DataReader
+ // should be recreated. Since the Getter uses the same DataReader,
+ // the original DataReader should not be destroyed.
+ ::DDSSubscriber * sub = this->impl ()->get_subscriber ();
+ if (!sub)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_filter - "
+ "Unable to get the Subscriber from the type specific DDS DataReader\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ this->create_contentfilteredtopic (filter, sub);
+
+ // Now recreate the DataReader, using the ContentFilteredTopic.
+ // After recreation, connect the original DataReaderListener to it.
+ ::DDSDataReaderListener *drl = this->impl ()->get_listener ();
+
+ ::DDSDataReader * dr = 0;
+ if (this->library_name_.length () > 0 &&
+ this->profile_name_.length () > 0)
+ {
+ dr = sub->create_datareader_with_profile (this->cft_,
+ this->library_name_.c_str (),
+ this->profile_name_.c_str (),
+ drl,
+ ::DDS::DATA_AVAILABLE_STATUS |
+ ::DDS::REQUESTED_DEADLINE_MISSED_STATUS |
+ ::DDS::SAMPLE_LOST_STATUS);
+ }
+ else
+ {
+ DDS_DataReaderQos const qos = DDS_DATAREADER_QOS_DEFAULT;
+ dr = sub->create_datareader (this->cft_,
+ qos,
+ drl,
+ ::DDS::DATA_AVAILABLE_STATUS |
+ ::DDS::REQUESTED_DEADLINE_MISSED_STATUS |
+ ::DDS::SAMPLE_LOST_STATUS);
+ }
+ if (!dr)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_filter - "
+ "Error: Unable to create a new DataReader.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+ // Inform the Getter that there's a new DataReader created
+ if (this->dds_get_)
+ {
+ this->dds_get_->remove_conditions ();
+ this->delete_datareader (sub);
+ // Now we need to set the new created DataReader in our proxy classes.
+ this->reader_->set_impl (dr);
+ this->dds_get_->set_impl (this->reader_);
+ }
+ else
+ {
+ this->delete_datareader (sub);
+ this->reader_->set_impl (dr);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+ ::CCM_DDS::QueryFilter *
+ CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::filter (void)
+{
+ #if (DDS4CCM_USES_QUERY_CONDITION==1)
+ if (!this->qc_)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error: No QueryCondition set yet. First set a filter.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ ::CCM_DDS::QueryFilter_var filter = 0;
+ ACE_NEW_THROW_EX (filter,
+ ::CCM_DDS::QueryFilter(),
+ CORBA::NO_MEMORY ());
+ filter->query = this->qc_->get_query_expression ();
+ ::DDS_StringSeq dds_qp;
+ this->qc_->get_query_parameters (dds_qp);
+ filter->query_parameters <<= dds_qp;
+ return filter._retn ();
+ #else
+ if (!this->cft_)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error: No ContentFilter set yet. First set a filter.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ ::CCM_DDS::QueryFilter_var filter = 0;
+ ACE_NEW_THROW_EX (filter,
+ ::CCM_DDS::QueryFilter(),
+ CORBA::NO_MEMORY ());
+ filter->query = this->cft_->get_filter_expression ();
+ DDS_StringSeq params;
+ ::DDS::ReturnCode_t const retval = this->cft_->get_expression_parameters (
+ params);
+ filter->query_parameters <<= params;
+ if (retval != DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error getting expression_parameters. "
+ "Retval is %C\n",
+ translate_retcode(retval)));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, retval);
+ }
+ return filter._retn ();
+ #endif
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::filter (
+ const ::CCM_DDS::QueryFilter & filter)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::filter");
+ #if (DDS4CCM_USES_QUERY_CONDITION==1)
+ if (!this->qc_)
+ {
+ ::DDS_StringSeq dds_qp;
+ dds_qp <<= filter.query_parameters;
+ this->qc_ = this->impl ()->create_querycondition (
+ DDS_READ_SAMPLE_STATE | DDS_NOT_READ_SAMPLE_STATE,
+ DDS_NEW_VIEW_STATE | DDS_NOT_NEW_VIEW_STATE,
+ DDS_ALIVE_INSTANCE_STATE,
+ filter.query,
+ dds_qp);
+ if (!this->qc_)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error creating query condition."));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1);
+ }
+ if (this->dds_get_)
+ {
+ this->dds_get_->create_querycondition (filter.query, dds_qp);
+ }
+ }
+ else
+ {
+ ::DDS_StringSeq dds_qp;
+ dds_qp <<= filter.query_parameters;
+ ::DDS::ReturnCode_t retval = this->qc_->set_query_parameters (
+ dds_qp);
+ if (retval != ::DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error setting expression_parameters. "
+ "Retval is %C\n",
+ translate_retcode(retval)));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, retval);
+ }
+ if (this->dds_get_)
+ {
+ this->dds_get_->set_queryparameters (dds_qp);
+ }
+ }
+ #else
+ if (!this->cft_)
+ {
+ this->create_filter (filter);
+ }
+ else
+ {
+ DDS_StringSeq params;
+ params <<= filter.query_parameters;
+ ::DDS::ReturnCode_t retval = this->cft_->set_expression_parameters (
+ params);
+ if (retval != ::DDS::RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::filter - "
+ "Error setting expression_parameters. "
+ "Retval is %C\n",
+ translate_retcode(retval)));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, retval);
+ }
+ }
+ #endif
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::set_contentfilteredtopic_data (
+ const char * library_name,
+ const char * profile_name,
+ Getter_T<DDS_TYPE, CCM_TYPE, FIXED> * dds_get)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::set_contentfilteredtopic_data");
+ this->library_name_ = library_name;
+ this->profile_name_ = profile_name;
+ this->dds_get_ = dds_get;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+DDS_ReturnCode_t
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::passivate ()
+{
+ #if (DDS4CCM_USES_QUERY_CONDITION==1)
+ if (this->qc_)
+ {
+ return this->impl ()->delete_readcondition (this->qc_);
+ }
+ #endif
+ return DDS_RETCODE_OK;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+void
+CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::set_impl (
+ CCM_DDS_DataReader_i *reader)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::set_impl");
+ this->reader_ = reader;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h
new file mode 100644
index 00000000000..20c6f49ef47
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h
@@ -0,0 +1,123 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+#ifndef DDS_READER_T
+#define DDS_READER_T
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+#include "dds4ccm/impl/dds/Getter_T.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::InstanceHandle_t DDS_InstanceHandle_t;
+typedef ::DDS::SampleInfoSeq DDS_SampleInfoSeq;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace DDS_CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED>
+ class Reader_T :
+ public virtual CCM_TYPE::reader_type,
+ public virtual ::CORBA::LocalObject,
+ private virtual ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ Reader_T (void);
+
+ /// Destructor
+ virtual ~Reader_T (void);
+
+ virtual void read_last (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ virtual void read_all (
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ virtual void read_one_last (
+ typename DDS_TYPE::value_type& an_instance,
+ ::CCM_DDS::ReadInfo_out info,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ virtual void read_one_all (
+ const typename DDS_TYPE::value_type& an_instance,
+ typename CCM_TYPE::seq_type::_out_type instances,
+ ::CCM_DDS::ReadInfoSeq_out infos,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ virtual ::CCM_DDS::QueryFilter *filter (void);
+
+ virtual void filter (const ::CCM_DDS::QueryFilter & filter);
+
+ void set_contentfilteredtopic_data (
+ const char * libary_name,
+ const char * profile_name,
+ Getter_T<DDS_TYPE, CCM_TYPE, FIXED> * dds_get=0);
+
+ void set_impl (CCM_DDS_DataReader_i *reader);
+
+ DDS_ReturnCode_t passivate (void);
+
+ private:
+ CCM_DDS_DataReader_i *reader_;
+
+ Getter_T<DDS_TYPE, CCM_TYPE, FIXED> * dds_get_;
+
+ ACE_CString library_name_;
+ ACE_CString profile_name_;
+
+ #if (DDS4CCM_USES_QUERY_CONDITION==1)
+ ::DDSQueryCondition * qc_;
+ #else
+ ::DDSContentFilteredTopic * cft_;
+ #endif
+
+ typename DDS_TYPE::data_reader * impl (void);
+
+ DDS_InstanceHandle_t check_handle (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ void read_with_instance (
+ typename DDS_TYPE::dds_seq_type & data,
+ const ::DDS_InstanceHandle_t & lookup_hnd,
+ DDS_SampleInfoSeq & sample_info);
+
+ void read_without_instance (
+ typename DDS_TYPE::dds_seq_type & data,
+ DDS_SampleInfoSeq & sample_info);
+
+ CORBA::ULong get_nr_valid_samples (
+ const DDS_SampleInfoSeq & sample_info,
+ bool determine_last = false);
+
+ void delete_datareader (
+ ::DDSSubscriber * sub);
+
+ void create_filter (
+ const ::CCM_DDS::QueryFilter & filter);
+
+ void create_contentfilteredtopic (
+ const ::CCM_DDS::QueryFilter & filter,
+ ::DDSSubscriber * sub);
+ };
+ }
+ }
+}
+
+#include "dds4ccm/impl/dds/Reader_T.cpp"
+
+#endif /* DDS_READER_T */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.cpp
new file mode 100644
index 00000000000..197e999eae8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.cpp
@@ -0,0 +1,35 @@
+// -*- C++ -*-
+// $Id$
+
+template <typename BASE_TYPE>
+CCM_DDS_StateListenerControl_T<BASE_TYPE>::CCM_DDS_StateListenerControl_T (void)
+ : is_filter_interpreted_ (false)
+{
+ DDS4CCM_TRACE ("CCM_DDS_StateListenerControl_T::CCM_DDS_StateListenerControl_T");
+}
+
+template <typename BASE_TYPE>
+CCM_DDS_StateListenerControl_T<BASE_TYPE>::~CCM_DDS_StateListenerControl_T (void)
+{
+ DDS4CCM_TRACE ("CCM_DDS_StateListenerControl_T::~CCM_DDS_StateListenerControl_T");
+}
+
+template <typename BASE_TYPE>
+::CORBA::Boolean
+CCM_DDS_StateListenerControl_T<BASE_TYPE>::is_filter_interpreted (void)
+{
+ DDS4CCM_TRACE ("CCM_DDS_StateListenerControl_T::is_filter_interpreted");
+
+ return this->is_filter_interpreted_.value ();
+}
+
+template <typename BASE_TYPE>
+void
+CCM_DDS_StateListenerControl_T<BASE_TYPE>::is_filter_interpreted (
+ ::CORBA::Boolean is_filter_interpreted)
+{
+ DDS4CCM_TRACE ("CCM_DDS_StateListenerControl_T::is_filter_interpreted");
+
+ this->is_filter_interpreted_ = is_filter_interpreted;
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.h
new file mode 100644
index 00000000000..bbee0e73a71
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/StateListenerControl_T.h
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef DDS4CCM_STATELISTENERCONTROLI_H_
+#define DDS4CCM_STATELISTENERCONTROLI_H_
+
+#include "dds4ccm/impl/dds/DataListenerControl_T.h"
+#include "dds4ccm/idl/dds4ccm_StateListenerControlEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+template <typename BASE_TYPE>
+class CCM_DDS_StateListenerControl_T
+ : public virtual CCM_DDS_DataListenerControl_T<BASE_TYPE>
+{
+public:
+ /// Constructor
+ CCM_DDS_StateListenerControl_T (void);
+
+ /// Destructor
+ virtual ~CCM_DDS_StateListenerControl_T (void);
+
+ /// Set the is_filter_interpreted
+ virtual ::CORBA::Boolean is_filter_interpreted (void);
+
+ /// Get the is_filter_interpreted
+ virtual void is_filter_interpreted (::CORBA::Boolean is_filter_interpreted);
+
+private:
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, ::CORBA::Boolean> is_filter_interpreted_;
+};
+
+#include "dds4ccm/impl/dds/StateListenerControl_T.cpp"
+
+#endif /* DDS4CCM_STATELISTENERCONTROLI_H_ */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.cpp
new file mode 100644
index 00000000000..37baef77d72
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.cpp
@@ -0,0 +1,72 @@
+// $Id$
+
+#include "StatusCondition.h"
+#include "Subscriber.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_StatusCondition_i::CCM_DDS_StatusCondition_i (
+ DDSStatusCondition * sc) :
+ impl_ (sc)
+ {
+ }
+
+ CCM_DDS_StatusCondition_i::~CCM_DDS_StatusCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ CCM_DDS_StatusCondition_i::get_trigger_value (void)
+ {
+ return this->impl ()->get_trigger_value ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_StatusCondition_i::get_enabled_statuses (void)
+ {
+ return this->impl ()->get_enabled_statuses ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_StatusCondition_i::set_enabled_statuses (
+ ::DDS::StatusMask mask)
+ {
+ return this->impl ()->set_enabled_statuses (mask);
+ }
+
+ ::DDS::Entity_ptr
+ CCM_DDS_StatusCondition_i::get_entity (void)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ DDSStatusCondition *
+ CCM_DDS_StatusCondition_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_StatusCondition_i::set_impl (DDSStatusCondition * sc)
+ {
+ this->impl_ = sc;
+ }
+
+ DDSStatusCondition *
+ CCM_DDS_StatusCondition_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.h b/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.h
new file mode 100644
index 00000000000..f3caf0d4c97
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/StatusCondition.h
@@ -0,0 +1,65 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_STATUSCONDITION_H
+#define DDS4CCM_STATUSCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::StatusCondition DDSStatusCondition;
+#endif
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_StatusCondition_i :
+ public virtual ::DDS::CCM_StatusCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_StatusCondition_i (DDSStatusCondition *sc);
+
+ /// Destructor
+ virtual ~CCM_DDS_StatusCondition_i (void);
+
+ virtual ::CORBA::Boolean get_trigger_value (void);
+
+ virtual ::DDS::StatusMask get_enabled_statuses (void);
+
+ virtual ::DDS::ReturnCode_t set_enabled_statuses (::DDS::StatusMask mask);
+
+ virtual ::DDS::Entity_ptr get_entity (void);
+
+ DDSStatusCondition * get_impl (void);
+
+ void set_impl (DDSStatusCondition * sc);
+
+ private:
+ DDSStatusCondition * impl_;
+ DDSStatusCondition * impl (void);
+ };
+ }
+}
+
+#endif /* DDS4CCM_STATUSCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.cpp
new file mode 100644
index 00000000000..ea334641528
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.cpp
@@ -0,0 +1,537 @@
+// $Id$
+
+#include "Subscriber.h"
+#include "SubscriberListener.h"
+#include "Topic.h"
+#include "ContentFilteredTopic.h"
+#include "DataReader.h"
+#include "DataReaderListener.h"
+#include "Utils.h"
+#include "StatusCondition.h"
+
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/DataReaderQos.h"
+#include "ndds/SubscriberQos.h"
+#include "ndds/TopicQos.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_Subscriber_i::CCM_DDS_Subscriber_i (DDSSubscriber * sub)
+ : impl_ (sub)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::CCM_DDS_Subscriber_i");
+ }
+
+ CCM_DDS_Subscriber_i::~CCM_DDS_Subscriber_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::~CCM_DDS_Subscriber_i");
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_Subscriber_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ if (sc)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ if (! ::CORBA::is_nil (sc.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_Subscriber_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ CCM_DDS_Subscriber_i::get_instance_handle (void)
+ {
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ DDSDataReader *
+ CCM_DDS_Subscriber_i::create_datareader (
+ DDSContentFilteredTopic * topic,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask,
+ const ::DDS::DataReaderQos & qos)
+ {
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+ DDS_DataReaderQos ccm_dds_qos = DDS_DATAREADER_QOS_DEFAULT;
+ return this->impl ()->create_datareader (topic,
+ ccm_dds_qos,
+ ccm_dds_drl,
+ mask);
+#else
+ return this->impl ()->create_datareader (topic,
+ qos,
+ ccm_dds_drl,
+ mask);
+#endif
+ }
+
+ DDSDataReader *
+ CCM_DDS_Subscriber_i::create_datareader (
+ DDSTopic * topic,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask,
+ const ::DDS::DataReaderQos & qos)
+ {
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ACE_UNUSED_ARG (qos);
+ DDS_DataReaderQos ccm_dds_qos = DDS_DATAREADER_QOS_DEFAULT;
+ return this->impl ()->create_datareader (topic,
+ ccm_dds_qos,
+ ccm_dds_drl,
+ mask);
+#else
+ return this->impl ()->create_datareader (topic,
+ qos,
+ ccm_dds_drl,
+ mask);
+#endif
+ }
+
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ DDSDataReader *
+ CCM_DDS_Subscriber_i::create_datareader_with_profile (
+ DDSContentFilteredTopic * topic,
+ const char * library_name,
+ const char * profile_name,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask)
+ {
+ return this->impl ()->create_datareader_with_profile (topic,
+ library_name,
+ profile_name,
+ ccm_dds_drl,
+ mask);
+ }
+#endif
+
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ DDSDataReader *
+ CCM_DDS_Subscriber_i::create_datareader_with_profile (
+ DDSTopic * topic,
+ const char * library_name,
+ const char * profile_name,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask)
+ {
+ return this->impl ()->create_datareader_with_profile (topic,
+ library_name,
+ profile_name,
+ ccm_dds_drl,
+ mask);
+ }
+#endif
+
+ ::DDS::DataReader_ptr
+ CCM_DDS_Subscriber_i::create_datareader (
+ ::DDS::TopicDescription_ptr a_topic,
+ const ::DDS::DataReaderQos & qos,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::create_datareader");
+ ::DDS::DataReader_var retval = ::DDS::DataReader::_nil ();
+ DDSDataReaderListener *ccm_dds_drl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_drl,
+ CCM_DDS_DataReaderListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ DDSDataReader * ccm_dds_dr = 0;
+ CCM_DDS_Topic_i * topic = dynamic_cast < CCM_DDS_Topic_i * > (a_topic);
+
+ if (!topic)
+ {
+ CCM_DDS_ContentFilteredTopic_i * cf_topic =
+ dynamic_cast < CCM_DDS_ContentFilteredTopic_i * > (a_topic);
+ if (!cf_topic)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::create_datareader - "
+ "Error: Unable to cast provided topic to one of its servant.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+ else
+ ccm_dds_dr = this->create_datareader (cf_topic->get_impl (), ccm_dds_drl, mask, qos);
+ }
+ else
+ ccm_dds_dr = this->create_datareader (topic->get_impl (), ccm_dds_drl, mask, qos);
+
+ if (!ccm_dds_dr)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::create_datareader - "
+ "Error: RTI Topic returned a nil datareader.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_Subscriber_i::create_datareader_with_profile - "
+ "Successfully created datareader.\n"));
+ }
+
+ ccm_dds_dr->enable ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataReader_i (ccm_dds_dr),
+ CORBA::NO_MEMORY ());
+ return retval._retn ();
+ }
+
+ ::DDS::DataReader_ptr
+ CCM_DDS_Subscriber_i::create_datareader_with_profile (
+ ::DDS::TopicDescription_ptr a_topic,
+ const char * library_name,
+ const char * profile_name,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::create_datareader_with_profile");
+ DDSDataReaderListener *ccm_dds_drl = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_drl,
+ CCM_DDS_DataReaderListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+
+ DDSDataReader * ccm_dds_dr = 0;
+ CCM_DDS_Topic_i * topic = dynamic_cast < CCM_DDS_Topic_i * > (a_topic);
+
+ if (!topic)
+ {
+ CCM_DDS_ContentFilteredTopic_i * cf_topic =
+ dynamic_cast < CCM_DDS_ContentFilteredTopic_i * > (a_topic);
+ if (!cf_topic)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::create_datareader_with_profile - "
+ "Error: Unable to cast provided topic to one of its servant.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+ else
+ {
+ ccm_dds_dr = this->create_datareader_with_profile (cf_topic->get_impl (),
+ library_name,
+ profile_name,
+ ccm_dds_drl,
+ mask);
+ }
+ }
+ else
+ {
+ ccm_dds_dr = this->create_datareader_with_profile (topic->get_impl (),
+ library_name,
+ profile_name,
+ ccm_dds_drl,
+ mask);
+ }
+
+ if (!ccm_dds_dr)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::create_datareader_with_profile - "
+ "Error: RTI Topic returned a nil datareader.\n"));
+ delete ccm_dds_drl;
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO "CCM_DDS_Subscriber_i::create_datareader_with_profile - "
+ "Successfully created datareader with profile <%C#%C>.\n",
+ library_name,
+ profile_name));
+ }
+
+ ::DDS::DataReader_var retval = ::DDS::DataReader::_nil ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataReader_i (ccm_dds_dr),
+ CORBA::NO_MEMORY ());
+
+ ccm_dds_dr->enable ();
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::delete_datareader (
+ ::DDS::DataReader_ptr a_datareader)
+ {
+ CCM_DDS_DataReader_i *dr = dynamic_cast< CCM_DDS_DataReader_i *> (a_datareader);
+ if (!dr)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::delete_datareader - "
+ "Unable to cast provided object reference to servant.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CCM_DDS_Subscriber_i::delete_datareader - "
+ "Successfully casted provided object reference to servant.\n"));
+
+ DDS_ReturnCode_t const retval = this->impl ()->delete_datareader (dr->get_impl ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CCM_DDS_Subscriber_i::delete_datareader - "
+ "Error: Returned non-ok error code %C\n",
+ translate_retcode (retval)));
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_INFO, CLINFO "CCM_DDS_Subscriber_i::delete_datareader - "
+ "Datareader successfully deleted\n"));
+ }
+
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::delete_contained_entities (void)
+ {
+ return this->impl ()->delete_contained_entities ();
+ }
+
+ ::DDS::DataReader_ptr
+ CCM_DDS_Subscriber_i::lookup_datareader (
+ const char * impl_name)
+ {
+ ::DDS::DataReader_var retval = ::DDS::DataReader::_nil ();
+ DDSDataReader* dr = this->impl ()->lookup_datareader (impl_name);
+ if (dr)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DataReader_i (dr),
+ CORBA::NO_MEMORY ());
+ }
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::get_datareaders (
+ ::DDS::DataReaderSeq & /*readers*/,
+ ::DDS::SampleStateMask /*sample_states*/,
+ ::DDS::ViewStateMask /*view_states*/,
+ ::DDS::InstanceStateMask /*instance_states*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::notify_datareaders (void)
+ {
+ return this->impl ()->notify_datareaders ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::set_qos (
+ const ::DDS::SubscriberQos & qos)
+ {
+ CIAO_TRACE ("CCM_DDS_Subscriber_i::set_qos");
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriberQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl ()->get_qos (ccm_dds_qos);
+#else
+ return this->impl ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::get_qos (
+ ::DDS::SubscriberQos & qos)
+ {
+ CIAO_TRACE ("CCM_DDS_Subscriber_i::get_qos");
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_SubscriberQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode = this->impl ()->get_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl ()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::set_listener (
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::set_listener");
+
+ CCM_DDS_SubscriberListener_i* ccm_dds_impl_list = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_impl_list,
+ CCM_DDS_SubscriberListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl ()->set_listener (ccm_dds_impl_list, mask);
+ }
+
+ ::DDS::SubscriberListener_ptr
+ CCM_DDS_Subscriber_i::get_listener (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::get_listener");
+
+ DDSSubscriberListener *ccm_dds_impl_list = this->impl ()->get_listener ();
+ CCM_DDS_SubscriberListener_i *list_proxy = dynamic_cast <CCM_DDS_SubscriberListener_i *> (ccm_dds_impl_list);
+ if (!list_proxy)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_Subscriber_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::SubscriberListener::_nil ();
+ }
+ return list_proxy->get_subscriber_listener ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::begin_access (void)
+ {
+ return this->impl ()->begin_access ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::end_access (void)
+ {
+ return this->impl ()->end_access ();
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_Subscriber_i::get_participant (void)
+ {
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipant* p = this->impl ()->get_participant ();
+ if (p)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::DomainParticipant_var p = this->impl ()->get_participant ();
+ if (! ::CORBA::is_nil (p.in))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::set_default_datareader_qos (
+ const ::DDS::DataReaderQos & qos)
+ {
+ CIAO_TRACE ("CCM_DDS_Subscriber_i::set_default_datareader_qos");
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataReaderQos ccm_dds_qos;
+ ccm_dds_qos <<= qos;
+ return this->impl ()->set_default_datareader_qos (ccm_dds_qos);
+#else
+ return this->impl ()->set_default_datareader_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::get_default_datareader_qos (
+ ::DDS::DataReaderQos & qos)
+ {
+ CIAO_TRACE ("CCM_DDS_Subscriber_i::get_default_datareader_qos");
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataReaderQos ccm_dds_qos;
+ ::DDS::ReturnCode_t retcode = this->impl ()->get_default_datareader_qos (ccm_dds_qos);
+ qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl ()->get_default_datareader_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Subscriber_i::copy_from_topic_qos (
+ ::DDS::DataReaderQos & a_datareader_qos,
+ const ::DDS::TopicQos & a_impl_qos)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Subscriber_i::copy_from_topic_qos");
+#if defined (CIAO_DDS4CCM_NDDS) && (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_DataReaderQos ccm_dds_qos;
+ ::DDS_TopicQos ccm_dds_topic_qos;
+
+ ccm_dds_qos <<= a_datareader_qos;
+ ccm_dds_topic_qos <<= a_impl_qos;
+ ::DDS::ReturnCode_t retcode =
+ this->impl()->copy_from_topic_qos (ccm_dds_qos,
+ ccm_dds_topic_qos);
+ a_datareader_qos <<= ccm_dds_qos;
+ return retcode;
+#else
+ return this->impl()->copy_from_topic_qos (a_datareader_qos,
+ a_impl_qos);
+#endif
+ }
+
+ DDSSubscriber *
+ CCM_DDS_Subscriber_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_Subscriber_i::set_impl (DDSSubscriber * sub)
+ {
+ this->impl_ = sub;
+ }
+
+ DDSSubscriber *
+ CCM_DDS_Subscriber_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.h
new file mode 100644
index 00000000000..76dc06ef111
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Subscriber.h
@@ -0,0 +1,177 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SUBSCRIBER_H
+#define DDS4CCM_SUBSCRIBER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::Subscriber DDSSubscriber;
+typedef ::DDS::DataReaderListener DDSDataReaderListener;
+typedef ::DDS::DataReader DDSDataReader;
+typedef ::DDS::ContentFilteredTopic DDSContentFilteredTopic;
+typedef ::DDS::Topic DDSTopic;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_Subscriber_i :
+ public virtual ::DDS::CCM_Subscriber,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_Subscriber_i (DDSSubscriber * sub);
+
+ /// Destructor
+ virtual ~CCM_DDS_Subscriber_i (void);
+
+ virtual ::DDS::ReturnCode_t enable (void);
+
+ virtual ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual ::DDS::StatusMask get_status_changes (void);
+
+ virtual ::DDS::InstanceHandle_t get_instance_handle (void);
+
+ virtual ::DDS::DataReader_ptr create_datareader (
+ ::DDS::TopicDescription_ptr a_topic,
+ const ::DDS::DataReaderQos & qos,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ virtual ::DDS::DataReader_ptr
+ create_datareader_with_profile (
+ ::DDS::TopicDescription_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+#endif
+
+ virtual ::DDS::ReturnCode_t
+ delete_datareader (
+ ::DDS::DataReader_ptr a_datareader);
+
+ virtual ::DDS::ReturnCode_t delete_contained_entities (void);
+
+ virtual ::DDS::DataReader_ptr lookup_datareader (
+ const char * impl_name);
+
+ virtual ::DDS::ReturnCode_t
+ get_datareaders (
+ ::DDS::DataReaderSeq & readers,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states);
+
+ virtual ::DDS::ReturnCode_t
+ notify_datareaders (void);
+
+ virtual ::DDS::ReturnCode_t
+ set_qos (
+ const ::DDS::SubscriberQos & qos);
+
+ virtual ::DDS::ReturnCode_t
+ get_qos (
+ ::DDS::SubscriberQos & qos);
+
+ virtual ::DDS::ReturnCode_t
+ set_listener (
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual ::DDS::SubscriberListener_ptr
+ get_listener (void);
+
+ virtual ::DDS::ReturnCode_t
+ begin_access (void);
+
+ virtual ::DDS::ReturnCode_t
+ end_access (void);
+
+ virtual ::DDS::DomainParticipant_ptr
+ get_participant (void);
+
+ virtual ::DDS::ReturnCode_t
+ set_default_datareader_qos (
+ const ::DDS::DataReaderQos & qos);
+
+ virtual ::DDS::ReturnCode_t
+ get_default_datareader_qos (
+ ::DDS::DataReaderQos & qos);
+
+ virtual ::DDS::ReturnCode_t
+ copy_from_topic_qos (
+ ::DDS::DataReaderQos & a_datareader_qos,
+ const ::DDS::TopicQos & a_impl_qos);
+
+ DDSSubscriber * get_impl (void);
+
+ void set_impl (DDSSubscriber * sub);
+
+ private:
+ DDSSubscriber *impl_;
+
+ DDSSubscriber *impl (void);
+
+ DDSDataReader *
+ create_datareader (
+ DDSTopic * topic,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask,
+ const ::DDS::DataReaderQos & qos);
+
+ DDSDataReader *
+ create_datareader (
+ DDSContentFilteredTopic * topic,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask,
+ const ::DDS::DataReaderQos & qos);
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDataReader *
+ create_datareader_with_profile (
+ DDSContentFilteredTopic * topic,
+ const char* library_name,
+ const char *profile_name,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask);
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDataReader *
+ create_datareader_with_profile (
+ DDSTopic * topic,
+ const char* library_name,
+ const char *profile_name,
+ DDSDataReaderListener * ccm_dds_drl,
+ ::DDS::StatusMask mask);
+#endif
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.cpp
new file mode 100644
index 00000000000..43acb3e5757
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.cpp
@@ -0,0 +1,178 @@
+// $Id$
+
+#include "SubscriberListener.h"
+#include "Subscriber.h"
+#include "DataReader.h"
+
+#include "ndds/SampleLostStatus.h"
+#include "ndds/SubscriptionMatchedStatus.h"
+#include "ndds/RequestedDeadlineMissedStatus.h"
+#include "ndds/SampleRejectedStatus.h"
+#include "ndds/LivelinessChangedStatus.h"
+#include "ndds/RequestedIncompatibleQosStatus.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_SubscriberListener_i::CCM_DDS_SubscriberListener_i (::DDS::SubscriberListener_ptr p)
+ : impl_ ( ::DDS::SubscriberListener::_duplicate (p))
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::CCM_DDS_SubscriberListener_i");
+ }
+
+ CCM_DDS_SubscriberListener_i::~CCM_DDS_SubscriberListener_i (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::~CCM_DDS_SubscriberListener_i");
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_data_on_readers (
+ ::DDSSubscriber* the_subscriber)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_data_on_readers");
+
+ ::DDS::Subscriber_var sub = ::DDS::Subscriber::_nil ();
+ ACE_NEW (sub,
+ CCM_DDS_Subscriber_i (the_subscriber));
+ this->impl_->on_data_on_readers (sub.in ());
+ the_subscriber->notify_datareaders ();
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_requested_deadline_missed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedDeadlineMissedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_requested_deadline_missed");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::RequestedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_requested_incompatible_qos (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedIncompatibleQosStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_requested_incompatible_qos");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::RequestedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_sample_rejected (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleRejectedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_sample_rejected");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SampleRejectedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_sample_rejected (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_liveliness_changed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_LivelinessChangedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_liveliness_changed");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::LivelinessChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_liveliness_changed (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_data_available (
+ ::DDSDataReader* the_reader)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_data_available");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+ this->impl_->on_data_available (dds_reader.in ());
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_subscription_matched (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SubscriptionMatchedStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_subscription_matched");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SubscriptionMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_subscription_matched (dds_reader.in (), status);
+#endif
+ }
+
+ void
+ CCM_DDS_SubscriberListener_i::on_sample_lost (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleLostStatus & status)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_SubscriberListener_i::on_sample_lost");
+
+ ::DDS::DataReader_var dds_reader = ::DDS::DataReader::_nil ();
+ ACE_NEW (dds_reader,
+ CCM_DDS_DataReader_i (the_reader));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::SampleLostStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_sample_lost (dds_reader.in (), ddsstatus);
+#else
+ this->impl_->on_sample_lost (dds_reader.in (), status);
+#endif
+ }
+
+ ::DDS::SubscriberListener_ptr
+ CCM_DDS_SubscriberListener_i::get_subscriber_listener (void)
+ {
+ return ::DDS::SubscriberListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.h
new file mode 100644
index 00000000000..e8c624d4e7c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener.h
@@ -0,0 +1,95 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SUBSCRIBERLISTENER_H
+#define DDS4CCM_SUBSCRIBERLISTENER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SubscriberListener DDSSubscriberListener;
+typedef ::DDS::DataReader DDSDataReader;
+typedef ::DDS::Subscriber DDSSubscriber;
+typedef ::DDS::RequestedDeadlineMissedStatus DDS_RequestedDeadlineMissedStatus;
+typedef ::DDS::LivelinessChangedStatus DDS_LivelinessChangedStatus;
+typedef ::DDS::RequestedIncompatibleQosStatus DDS_RequestedIncompatibleQosStatus;
+typedef ::DDS::SampleRejectedStatus DDS_SampleRejectedStatus;
+typedef ::DDS::SubscriptionMatchedStatus DDS_SubscriptionMatchedStatus;
+typedef ::DDS::SampleLostStatus DDS_SampleLostStatus;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_SubscriberListener_i :
+ public virtual ::DDSSubscriberListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_SubscriberListener_i ( ::DDS::SubscriberListener_ptr s);
+
+ /// Destructor
+ virtual ~CCM_DDS_SubscriberListener_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_requested_incompatible_qos (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedIncompatibleQosStatus & status);
+
+ virtual void
+ on_sample_rejected (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleRejectedStatus & status);
+
+ virtual void
+ on_liveliness_changed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_LivelinessChangedStatus & status);
+
+ virtual void
+ on_data_available (
+ ::DDSDataReader* the_reader);
+
+ virtual void
+ on_subscription_matched (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SubscriptionMatchedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleLostStatus & status);
+
+ virtual void
+ on_data_on_readers (
+ ::DDSSubscriber* the_subscriber);
+
+ ::DDS::SubscriberListener_ptr get_subscriber_listener (void);
+ private:
+ ::DDS::SubscriberListener_var impl_;
+ };
+ }
+}
+
+#endif
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.cpp
new file mode 100644
index 00000000000..2ce57d7afcc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.cpp
@@ -0,0 +1,277 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/DataReader.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/DDSCallbackStatusHandler.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "tao/ORB_Core.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::SubscriberListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor)
+ : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)),
+ reactor_ (reactor)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::SubscriberListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::~SubscriberListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::~SubscriberListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr reader,
+ const ::DDS::RequestedIncompatibleQosStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_requested_incompatible_qos");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ")
+ ACE_TEXT ("total count <%d> - total change <%d> - ")
+ ACE_TEXT ("last policy id <%d> - policies\n"),
+ status.total_count, status.total_count_change,
+ status.last_policy_id));
+ for (CORBA::ULong i = 0; i < status.policies.length (); ++i)
+ {
+ DDS4CCM_DEBUG (10, (LM_DEBUG,
+ ACE_TEXT ("\t\tid <%d> - count <%d>\n"),
+ status.policies[i].policy_id,
+ status.policies[i].count));
+ }
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnRequestedOncompatibleQosHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnRequestedOncompatibleQosHandler (
+ this->error_listener_, reader, status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_requested_incompatible_qos (reader, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_unexpected_status (
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_unexpected_status");
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnUnexpectedStatusHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnUnexpectedStatusHandler (
+ this->error_listener_, entity, status_kind));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_unexpected_status: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_unexpected_status (entity, status_kind);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG,
+ ACE_TEXT ("SubscriberListener_T::on_unexpected_status: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_requested_incompatible_qos: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_liveliness_changed (
+ ::DDS::DataReader* reader,
+ const ::DDS::LivelinessChangedStatus& status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_liveliness_changed");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_liveliness_changed: ")
+ ACE_TEXT ("alive count <%d> - not alive count <%d> - ")
+ ACE_TEXT ("alive count change <%d> - not alive count change <%d> ")
+ ACE_TEXT ("last publication handle length <%d> - isValid <%d>\n"),
+ status.alive_count, status.not_alive_count,
+ status.alive_count_change, status.not_alive_count_change,
+ status.last_publication_handle.length,
+ status.last_publication_handle.isValid));
+
+ this->on_unexpected_status (reader, ::DDS::LIVELINESS_CHANGED_STATUS);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_sample_rejected (
+ ::DDS::DataReader_ptr reader,
+ const ::DDS::SampleRejectedStatus& status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_sample_rejected");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ")
+ ACE_TEXT ("total count <%d> - count change <%d> - ")
+ ACE_TEXT ("last reason <%C> - last instance handle ")
+ ACE_TEXT ("<length <%d> - isValid <%d>\n"),
+ status.total_count, status.total_count_change,
+ translate_rejectedstatuskind (status.last_reason),
+ status.last_instance_handle.length,
+ status.last_instance_handle.isValid));
+
+ if (! ::CORBA::is_nil (this->error_listener_))
+ {
+ try
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnSampleRejectedHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnSampleRejectedHandler (
+ this->error_listener_, reader, status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_sample_rejected (reader, status);
+ }
+ }
+ catch (...)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ")
+ ACE_TEXT ("DDS Exception caught\n")));
+ }
+ }
+ else
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_sample_rejected: ")
+ ACE_TEXT ("No error listener connected\n")));
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_subscription_matched(
+ ::DDS::DataReader* reader,
+ const ::DDS::SubscriptionMatchedStatus& status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_subscription_matched");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("SubscriberListener_T::on_subscription_matched: ")
+ ACE_TEXT ("total count <%d> - count change <%d> - ")
+ ACE_TEXT ("current count <%d> - current count change <%d> ")
+ ACE_TEXT ("last publication handle length <%d> - isValid <%d>\n"),
+ status.total_count, status.total_count_change,
+ status.current_count, status.current_count_change,
+ status.last_publication_handle.length,
+ status.last_publication_handle.isValid));
+
+ this->on_unexpected_status (reader, ::DDS::SUBSCRIPTION_MATCHED_STATUS);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_data_on_readers(
+ ::DDS::Subscriber *)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::SubscriberListener_T::on_data_on_readers");
+ //do nothing by design
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr,
+ const ::DDS::RequestedDeadlineMissedStatus &)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_data_available (
+ ::DDS::DataReader_ptr)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::on_sample_lost (
+ ::DDS::DataReader_ptr,
+ const ::DDS::SampleLostStatus &)
+{
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::SubscriberListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl)
+{
+ if (! ::CORBA::is_nil (csl) || CIAO_debug_level >= 10)
+ {
+ return ::DDS::REQUESTED_INCOMPATIBLE_QOS_STATUS |
+ ::DDS::SAMPLE_REJECTED_STATUS |
+ ::DDS::LIVELINESS_CHANGED_STATUS |
+ ::DDS::SUBSCRIPTION_MATCHED_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.h
new file mode 100644
index 00000000000..7cdf42eb1a5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/SubscriberListener_T.h
@@ -0,0 +1,87 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS_SUBSCRIBERLISTENER_T_H_
+#define DDS_SUBSCRIBERLISTENER_T_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class SubscriberListener_T :
+ public ::DDS::CCM_SubscriberListener,
+ private ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ SubscriberListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor);
+
+ /// Destructor
+ virtual ~SubscriberListener_T (void);
+
+ virtual void on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr reader,
+ const ::DDS::RequestedIncompatibleQosStatus & status);
+
+ virtual void on_liveliness_changed(
+ ::DDS::DataReader* reader,
+ const ::DDS::LivelinessChangedStatus& status);
+
+ virtual void on_sample_rejected(
+ ::DDS::DataReader* reader,
+ const ::DDS::SampleRejectedStatus& status);
+
+ virtual void on_subscription_matched(
+ ::DDS::DataReader* reader,
+ const ::DDS::SubscriptionMatchedStatus& status);
+
+ virtual void on_data_on_readers(
+ ::DDS::Subscriber* subscriber);
+
+ virtual void on_requested_deadline_missed (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::RequestedDeadlineMissedStatus & );
+
+ virtual void on_data_available (
+ ::DDS::DataReader_ptr );
+
+ virtual void on_sample_lost (
+ ::DDS::DataReader_ptr ,
+ const ::DDS::SampleLostStatus & );
+
+ static ::DDS::StatusMask get_mask (
+ ::CCM_DDS::ConnectorStatusListener_ptr csl);
+
+ private:
+ typename CCM_TYPE::context_type::_var_type context_;
+
+ virtual void on_unexpected_status(
+ ::DDS::Entity_ptr entity,
+ ::DDS::StatusKind status_kind);
+
+ ::CCM_DDS::ConnectorStatusListener_var error_listener_;
+
+ ACE_Reactor* reactor_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/SubscriberListener_T.cpp"
+
+#endif /* DDS_SUBSCRIBERLISTENER_T_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TimeUtilities.h b/modules/CIAO/connectors/dds4ccm/impl/dds/TimeUtilities.h
new file mode 100644
index 00000000000..e6f1050e518
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TimeUtilities.h
@@ -0,0 +1,34 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file TimeUtilities.h
+ *
+ * $Id$
+ *
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+//=============================================================================
+
+
+#ifndef DDS4CCM_TIME_UTILITIES_H
+#define DDS4CCM_TIME_UTILITIES_H
+
+#include "ace/Time_Value.h"
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+inline void
+operator<<= (::DDS::Time_t & dds_time, const ::ACE_Time_Value & ace_time)
+{
+ dds_time.sec = static_cast < ::CORBA::Long> (ace_time.sec ());
+ dds_time.nanosec = ace_time.usec () * 1000;
+}
+
+inline void
+operator<<= (::ACE_Time_Value & ace_time, const ::DDS::Time_t &dds_time)
+{
+ ace_time.sec (dds_time.sec);
+ ace_time.usec (dds_time.nanosec/1000);
+}
+
+#endif /* DDS4CCM_TIME_UTILITIES_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.cpp
new file mode 100644
index 00000000000..d0ce219972a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.cpp
@@ -0,0 +1,217 @@
+// $Id$
+
+#include "Topic.h"
+#include "ContentFilteredTopic.h"
+#include "StatusCondition.h"
+#include "TopicListener.h"
+
+#include "ndds/InstanceHandle_t.h"
+#include "ndds/InconsistentTopicStatus.h"
+#include "ndds/TopicQos.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_Topic_i::CCM_DDS_Topic_i (DDSTopic* topic)
+ : impl_ (topic)
+ {
+ }
+
+ CCM_DDS_Topic_i::~CCM_DDS_Topic_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Topic_i::set_qos (const ::DDS::TopicQos &qos)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_TopicQos ddsqos;
+ ddsqos <<= qos;
+ return this->impl ()->set_qos (ddsqos);
+#else
+ return this->impl ()->set_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Topic_i::get_qos (::DDS::TopicQos &qos)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_TopicQos ddsqos;
+ ::DDS_ReturnCode_t const retval = this->impl ()->get_qos (ddsqos);
+ qos <<= ddsqos;
+ return retval;
+#else
+ return this->impl ()->get_qos (qos);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Topic_i::set_listener (
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Topic_i::set_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ CCM_DDS_TopicListener_i *ccm_dds_impl_list = 0;
+ if (! ::CORBA::is_nil (a_listener))
+ {
+ ACE_NEW_THROW_EX (ccm_dds_impl_list,
+ CCM_DDS_TopicListener_i (a_listener),
+ CORBA::NO_MEMORY ());
+ }
+ return this->impl ()->set_listener (ccm_dds_impl_list, mask);
+#else
+ return this->impl ()->set_listener (a_listener, mask);
+#endif
+ }
+
+ ::DDS::TopicListener_ptr
+ CCM_DDS_Topic_i::get_listener (void)
+ {
+ DDS4CCM_TRACE ("CCM_DDS_Topic_i::get_listener");
+
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSTopicListener *ccm_dds_topic_list = this->impl ()->get_listener ();
+ CCM_DDS_TopicListener_i *list_proxy = dynamic_cast <CCM_DDS_TopicListener_i *> (ccm_dds_topic_list);
+ if (!list_proxy)
+ {
+ DDS4CCM_DEBUG (6, (LM_DEBUG, "CCM_DDS_Topic_i::get_listener - "
+ "DDS returned a NIL listener.\n"));
+ return ::DDS::TopicListener::_nil ();
+ }
+ return list_proxy->get_topiclistener ();
+#else
+ return this->impl ()->get_listener ();
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Topic_i::get_inconsistent_topic_status (
+ ::DDS::InconsistentTopicStatus & a_status)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDS_InconsistentTopicStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl ()->get_inconsistent_topic_status (ddsstatus);
+ a_status <<= ddsstatus;;
+ return retval;
+#else
+ return this->impl ()->get_inconsistent_topic_status (a_status);
+#endif
+ }
+
+ ::DDS::ReturnCode_t
+ CCM_DDS_Topic_i::enable (void)
+ {
+ return this->impl ()->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ CCM_DDS_Topic_i::get_statuscondition (void)
+ {
+ ::DDS::StatusCondition_var retval = ::DDS::StatusCondition::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSStatusCondition* sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc),
+ CORBA::NO_MEMORY ());
+#else
+ ::DDS::StatusCondition_var sc = this->impl ()->get_statuscondition ();
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_StatusCondition_i (sc.in ()),
+ CORBA::NO_MEMORY ());
+#endif
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ CCM_DDS_Topic_i::get_status_changes (void)
+ {
+ return this->impl ()->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ CCM_DDS_Topic_i::get_instance_handle (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS_InstanceHandle_t const rtihandle = this->impl ()->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+#else
+ return this->impl ()->get_instance_handle ();
+#endif
+ }
+
+ char *
+ CCM_DDS_Topic_i::get_type_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_type_name ());
+#else
+ return this->impl ()->get_type_name ();
+#endif
+ }
+
+ char *
+ CCM_DDS_Topic_i::get_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_name ());
+#else
+ return this->impl ()->get_name ();
+#endif
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_Topic_i::get_participant (void)
+ {
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipant* p = this->impl ()->get_participant ();
+ if (p)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::DomainParticipant_var p = this->impl ()->get_participant ();
+ if (! ::CORBA::is_nil (p.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ DDSTopic *
+ CCM_DDS_Topic_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_Topic_i::set_impl (DDSTopic * topic)
+ {
+ this->impl_ = topic;
+ }
+
+ DDSTopic *
+ CCM_DDS_Topic_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.h
new file mode 100644
index 00000000000..981835d8e91
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Topic.h
@@ -0,0 +1,83 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_NDDS_TOPIC_H
+#define CIAO_NDDS_TOPIC_H
+
+#include "DomainParticipant.h"
+
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::Topic DDSTopic;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_Topic_i :
+ public virtual ::DDS::CCM_Topic,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_Topic_i (DDSTopic* topic);
+
+ /// Destructor
+ virtual ~CCM_DDS_Topic_i (void);
+
+ virtual ::DDS::ReturnCode_t set_qos (const ::DDS::TopicQos & qos);
+
+ virtual ::DDS::ReturnCode_t get_qos (::DDS::TopicQos & qos);
+
+ virtual ::DDS::ReturnCode_t set_listener (
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual ::DDS::TopicListener_ptr get_listener (void);
+
+ virtual ::DDS::ReturnCode_t get_inconsistent_topic_status (
+ ::DDS::InconsistentTopicStatus & a_status);
+
+ virtual
+ ::DDS::ReturnCode_t enable (void);
+
+ virtual
+ ::DDS::StatusCondition_ptr get_statuscondition (void);
+
+ virtual
+ ::DDS::StatusMask get_status_changes (void);
+
+ virtual
+ ::DDS::InstanceHandle_t get_instance_handle (void);
+
+ virtual
+ char * get_type_name (void);
+
+ virtual
+ char * get_name (void);
+
+ virtual
+ ::DDS::DomainParticipant_ptr get_participant (void);
+
+ DDSTopic * get_impl (void);
+
+ void set_impl (DDSTopic* topic);
+
+ private:
+ DDSTopic * impl_;
+
+ DDSTopic * impl (void);
+ };
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.cpp
new file mode 100644
index 00000000000..298c3b5c567
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.cpp
@@ -0,0 +1,90 @@
+// $Id$
+
+#include "TopicDescription.h"
+#include "DomainParticipant.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_TopicDescription_i::CCM_DDS_TopicDescription_i (
+ DDSTopicDescription * rc) : impl_ (rc)
+ {
+ }
+
+ CCM_DDS_TopicDescription_i::~CCM_DDS_TopicDescription_i (void)
+ {
+ }
+
+ char *
+ CCM_DDS_TopicDescription_i::get_type_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_type_name ());
+#else
+ return this->impl ()->get_type_name ();
+#endif
+ }
+
+ char *
+ CCM_DDS_TopicDescription_i::get_name (void)
+ {
+#if (CIAO_DDS4CCM_NDDS==1)
+ return CORBA::string_dup (this->impl ()->get_name ());
+#else
+ return this->impl ()->get_name ();
+#endif
+ }
+
+ ::DDS::DomainParticipant_ptr
+ CCM_DDS_TopicDescription_i::get_participant (void)
+ {
+ ::DDS::DomainParticipant_var retval = ::DDS::DomainParticipant::_nil ();
+#if (CIAO_DDS4CCM_NDDS==1)
+ DDSDomainParticipant* p = this->impl ()->get_participant ();
+ if (p)
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p),
+ CORBA::NO_MEMORY ());
+ }
+#else
+ ::DDS::DomainParticipant_var p = this->impl ()->get_participant ();
+ if (! ::CORBA::is_nil (p.in ()))
+ {
+ ACE_NEW_THROW_EX (retval,
+ CCM_DDS_DomainParticipant_i (p.in ()),
+ CORBA::NO_MEMORY ());
+ }
+#endif
+ return retval._retn ();
+ }
+
+ DDSTopicDescription *
+ CCM_DDS_TopicDescription_i::get_impl (void)
+ {
+ return this->impl_;
+ }
+
+ void
+ CCM_DDS_TopicDescription_i::set_impl (DDSTopicDescription * rc)
+ {
+ this->impl_ = rc;
+ }
+
+ DDSTopicDescription *
+ CCM_DDS_TopicDescription_i::impl (void)
+ {
+ if (!this->impl_)
+ {
+ throw ::CORBA::BAD_INV_ORDER ();
+ }
+ return this->impl_;
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.h b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.h
new file mode 100644
index 00000000000..b107d4c75ac
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicDescription.h
@@ -0,0 +1,64 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_DDS4CCM_TOPICDESCRIPTION_H
+#define CIAO_DDS4CCM_TOPICDESCRIPTION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds/dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#endif
+
+#include "tao/LocalObject.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TopicDescription DDSTopicDescription;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_TopicDescription_i :
+ public virtual ::DDS::CCM_TopicDescription,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ /// Constructor
+ CCM_DDS_TopicDescription_i (DDSTopicDescription * rc);
+
+ /// Destructor
+ virtual ~CCM_DDS_TopicDescription_i (void);
+
+ virtual char * get_type_name (void);
+
+ virtual char * get_name (void);
+
+ virtual ::DDS::DomainParticipant_ptr get_participant (void);
+
+ DDSTopicDescription * get_impl (void);
+
+ void set_impl (DDSTopicDescription * rc);
+
+ private:
+ DDSTopicDescription * impl_;
+
+ DDSTopicDescription * impl (void);
+ };
+ }
+}
+
+#endif /* CIAO_DDS4CCM_TOPICDESCRIPTION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.cpp
new file mode 100644
index 00000000000..e2fcd574ce5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.cpp
@@ -0,0 +1,49 @@
+// $Id$
+
+#include "TopicListener.h"
+#include "Topic.h"
+
+#include "ndds/InconsistentTopicStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ CCM_DDS_TopicListener_i::CCM_DDS_TopicListener_i (::DDS::TopicListener_ptr p)
+ : impl_ (::DDS::TopicListener::_duplicate (p))
+ {
+ }
+
+ CCM_DDS_TopicListener_i::~CCM_DDS_TopicListener_i (void)
+ {
+ }
+
+ void
+ CCM_DDS_TopicListener_i::on_inconsistent_topic (
+ ::DDSTopic* the_topic,
+ const ::DDS_InconsistentTopicStatus & status)
+ {
+ ::DDS::Topic_var dds_topic = ::DDS::Topic::_nil ();
+ ACE_NEW (dds_topic,
+ CCM_DDS_Topic_i (the_topic));
+#if (CIAO_DDS4CCM_NDDS==1)
+ ::DDS::InconsistentTopicStatus ddsstatus;
+ ddsstatus <<= status;
+ this->impl_->on_inconsistent_topic (dds_topic.in (), ddsstatus);
+#else
+ this->impl_->on_inconsistent_topic (dds_topic.in (), status);
+#endif
+ }
+
+ ::DDS::TopicListener_ptr
+ CCM_DDS_TopicListener_i::get_topiclistener (void)
+ {
+ return ::DDS::TopicListener::_duplicate (this->impl_.in ());
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.h b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.h
new file mode 100644
index 00000000000..553131e0070
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener.h
@@ -0,0 +1,53 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TOPICLISTENER_H
+#define DDS4CCM_TOPICLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm_dds_impl_export.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+# include "ndds/ndds_cpp.h"
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TopicListener DDSTopicListener;
+typedef ::DDS::Topic DDSTopic;
+typedef ::DDS::InconsistentTopicStatus DDS_InconsistentTopicStatus;
+#endif
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ class DDS4CCM_DDS_IMPL_Export CCM_DDS_TopicListener_i :
+ public virtual ::DDSTopicListener
+ {
+ public:
+ /// Constructor
+ CCM_DDS_TopicListener_i (::DDS::TopicListener_ptr p);
+
+ /// Destructor
+ virtual ~CCM_DDS_TopicListener_i (void);
+
+ virtual void on_inconsistent_topic(
+ ::DDSTopic* topic,
+ const ::DDS_InconsistentTopicStatus& status);
+
+ ::DDS::TopicListener_ptr get_topiclistener (void);
+ private:
+ ::DDS::TopicListener_var impl_;
+ };
+ }
+}
+
+#endif /* DDS4CCM_TOPICLISTENER_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.cpp
new file mode 100644
index 00000000000..b9d60532edb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.cpp
@@ -0,0 +1,78 @@
+// $Id$
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds/Topic.h"
+#include "dds4ccm/impl/dds/DDSCallbackStatusHandler.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::TopicListener_T<DDS_TYPE, CCM_TYPE>::TopicListener_T (
+ ::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor) :
+ error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)),
+ reactor_ (reactor)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::TopicListener_T::TopicListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::TopicListener_T<DDS_TYPE, CCM_TYPE>::~TopicListener_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::TopicListener_T::~TopicListener_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::TopicListener_T<DDS_TYPE, CCM_TYPE>::on_inconsistent_topic (
+ ::DDS::Topic_ptr the_topic,
+ const ::DDS::InconsistentTopicStatus & status)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::TopicListener_T::on_inconsistent_topic");
+
+ DDS4CCM_DEBUG (10, (LM_DEBUG, CLINFO
+ ACE_TEXT ("TopicListener_T::on_inconsistent_topic: ")
+ ACE_TEXT ("total count <%d> - total change <%d> - "),
+ status.total_count, status.total_count_change));
+
+ if (! ::CORBA::is_nil (this->error_listener_.in ()))
+ {
+ if (this->reactor_)
+ {
+ ::CIAO::DDS4CCM::OnInconsistentTopicHandler* rh = 0;
+ ACE_NEW (rh,
+ ::CIAO::DDS4CCM::OnInconsistentTopicHandler (
+ this->error_listener_,
+ the_topic,
+ status));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO
+ ACE_TEXT ("TopicListener_T::on_inconsistent_topic: ")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->error_listener_->on_inconsistent_topic (the_topic, status);
+ }
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+::DDS::StatusMask
+CIAO::DDS4CCM::TopicListener_T<DDS_TYPE, CCM_TYPE>::get_mask (
+ CCM_DDS::ConnectorStatusListener_ptr error_listener)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::TopicListener_T::get_mask");
+
+ if (! ::CORBA::is_nil (error_listener) || CIAO_debug_level >= 10)
+ {
+ return ::DDS::INCONSISTENT_TOPIC_STATUS;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.h
new file mode 100644
index 00000000000..609978767e8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/TopicListener_T.h
@@ -0,0 +1,47 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+class ACE_Reactor;
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class TopicListener_T :
+ public ::DDS::TopicListener,
+ private ACE_Copy_Disabled
+ {
+ public:
+ /// Constructor
+ TopicListener_T (::CCM_DDS::ConnectorStatusListener_ptr error_listener,
+ ACE_Reactor* reactor);
+
+ /// Destructor
+ virtual ~TopicListener_T (void);
+
+ virtual void on_inconsistent_topic (
+ ::DDS::Topic_ptr the_topic,
+ const ::DDS::InconsistentTopicStatus & status);
+
+ static ::DDS::StatusMask get_mask (
+ CCM_DDS::ConnectorStatusListener_ptr error_listener);
+
+ private:
+ CCM_DDS::ConnectorStatusListener_var error_listener_;
+ ACE_Reactor* reactor_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/TopicListener_T.cpp"
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.cpp
new file mode 100644
index 00000000000..ee905982084
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.cpp
@@ -0,0 +1,304 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/Coherent_Changes_Guard.h"
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::Updater_T (void)
+ : InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, typename CCM_TYPE::updater_type> (),
+ is_global_scope_ (false),
+ is_coherent_write_ (false)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::Updater_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::~Updater_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::~Updater_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::is_global_scope ()
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::is_global_scope");
+ return this->is_global_scope_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+bool
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::is_coherent_write ()
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::is_coherent_write");
+ return this->is_coherent_write_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::is_coherent_write (bool value)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::is_coherent_write");
+ this->is_coherent_write_ = value;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::create_i (
+ const typename DDS_TYPE::value_type & an_instance,
+ ::CCM_DDS::DataNumber_t index)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::create_i");
+ DDS_InstanceHandle_t const hnd = this->impl ()->register_instance (an_instance);
+ if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR,
+ ACE_TEXT ("CIAO::DDS4CCM::Updater_T::create_i: ")
+ ACE_TEXT ("Unable to unregister instance, nil handle.\n")));
+ throw CCM_DDS::InternalError (::DDS_RETCODE_ERROR, index);
+ }
+ ::DDS_ReturnCode_t const result = this->impl ()->write (an_instance, hnd);
+ if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR,
+ ACE_TEXT ("CIAO::DDS4CCM::Updater_T::create_i: ")
+ ACE_TEXT ("Unable to update data, error %C.\n"),
+ translate_retcode (result)));
+ throw CCM_DDS::InternalError (result, index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::create_one (
+ const typename DDS_TYPE::value_type & an_instance)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::create_one");
+ DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (an_instance);
+ if (!DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ throw CCM_DDS::AlreadyCreated (0);
+ }
+
+ this->create_i (an_instance, 0);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::update_i (
+ const typename DDS_TYPE::value_type & an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle,
+ ::CCM_DDS::DataNumber_t index)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::update_i");
+ DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL;
+ hnd <<= instance_handle;
+ ::DDS_ReturnCode_t const result = this->impl ()->write (an_instance, hnd);
+ if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR,
+ ACE_TEXT ("CIAO::DDS4CCM::Updater_T::update_i: ")
+ ACE_TEXT ("Unable to update data, error %C.\n"),
+ translate_retcode (result)));
+ throw CCM_DDS::InternalError (result, index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::update_one (
+ const typename DDS_TYPE::value_type & an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::update_one");
+ DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL;
+ hnd <<= instance_handle;
+ if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ hnd = this->impl ()->lookup_instance (an_instance);
+ }
+ else
+ {
+ // Check explicitly if the instance handle matches the instance, this
+ // is not checked by RTI DDS
+ DDS_InstanceHandle_t const instance_handle =
+ this->impl ()->lookup_instance (an_instance);
+
+ if (!DDS_InstanceHandle_equals (&hnd, &instance_handle))
+ {
+ throw CCM_DDS::InternalError (::DDS_RETCODE_BAD_PARAMETER, 0);
+ }
+ }
+ if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ throw CCM_DDS::NonExistent (0);
+ }
+ this->update_i (an_instance, instance_handle, 0);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::delete_i (
+ const typename DDS_TYPE::value_type & an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle,
+ ::CCM_DDS::DataNumber_t index)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::delete_i");
+ DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL;
+ hnd <<= instance_handle;
+ ::DDS_ReturnCode_t result = this->impl ()->dispose (an_instance, hnd);
+ if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR,
+ ACE_TEXT ("CIAO::DDS4CCM::Updater_T::delete_i: ")
+ ACE_TEXT ("Unable to dispose instance, error %C.\n"),
+ translate_retcode (result)));
+ throw CCM_DDS::InternalError (result, index);
+ }
+ result =
+ this->impl ()->unregister_instance (an_instance, hnd);
+ if (result != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR,
+ ACE_TEXT ("CIAO::DDS4CCM::Updater_T::delete_i: ")
+ ACE_TEXT ("Unable to unregister instance, error %C.\n"),
+ translate_retcode (result)));
+ throw CCM_DDS::InternalError (result, index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::delete_one (
+ const typename DDS_TYPE::value_type & an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::delete_one");
+ DDS_InstanceHandle_t hnd = ::DDS_HANDLE_NIL;
+ hnd <<= instance_handle;
+ if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ hnd = this->impl ()->lookup_instance (an_instance);
+ }
+ else
+ {
+ // Check explicitly if the instance handle matches the instance, this
+ // is not checked by RTI DDS
+ DDS_InstanceHandle_t const instance_handle =
+ this->impl ()->lookup_instance (an_instance);
+
+ if (!DDS_InstanceHandle_equals (&hnd, &instance_handle))
+ {
+ throw CCM_DDS::InternalError (::DDS_RETCODE_BAD_PARAMETER, 0);
+ }
+ }
+ if (DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ throw CCM_DDS::NonExistent (0);
+ }
+ this->delete_i (an_instance, instance_handle, 0);
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::create_many (
+ const typename CCM_TYPE::seq_type& data)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::create_many");
+
+ // Check for existance of instances
+ this->check_already_created (data);
+
+ Coherent_Changes_Guard guard (this->impl ()->get_publisher(),
+ this->is_coherent_write_);
+
+ for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++)
+ {
+ this->create_i (data[index], index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::check_existent (
+ const typename CCM_TYPE::seq_type& data)
+{
+ ::CCM_DDS::NonExistent exception;
+ for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++)
+ {
+ DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (data[index]);
+ if (::DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ CORBA::ULong const length = exception.indexes.length ();
+ exception.indexes.length (length + 1);
+ exception.indexes[length] = index;
+ }
+ }
+
+ if (exception.indexes.length () > 0)
+ {
+ throw exception;
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::check_already_created (
+ const typename CCM_TYPE::seq_type& data)
+{
+ ::CCM_DDS::AlreadyCreated exception;
+ for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++)
+ {
+ DDS_InstanceHandle_t const hnd = this->impl ()->lookup_instance (data[index]);
+ if (!::DDS_InstanceHandle_equals (&hnd, &::DDS_HANDLE_NIL))
+ {
+ CORBA::ULong const length = exception.indexes.length ();
+ exception.indexes.length (length + 1);
+ exception.indexes[length] = index;
+ }
+ }
+
+ if (exception.indexes.length () > 0)
+ {
+ throw exception;
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::update_many (
+ const typename CCM_TYPE::seq_type& data)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::update_many");
+
+ // Check for existance of instances
+ this->check_existent (data);
+
+ Coherent_Changes_Guard guard (this->impl ()->get_publisher(), this->is_coherent_write_);
+
+ for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++)
+ {
+ this->update_i (data[index], ::DDS::HANDLE_NIL, index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+CIAO::DDS4CCM::Updater_T<DDS_TYPE, CCM_TYPE>::delete_many (
+ const typename CCM_TYPE::seq_type& data)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Updater_T::delete_many");
+
+ // Check for existance of instances
+ this->check_existent (data);
+
+ Coherent_Changes_Guard guard (this->impl ()->get_publisher(), this->is_coherent_write_);
+
+ for (typename CCM_TYPE::seq_type::size_type index = 0; index < data.length (); index++)
+ {
+ this->delete_i (data[index], ::DDS::HANDLE_NIL, index);
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.h
new file mode 100644
index 00000000000..376e333005e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Updater_T.h
@@ -0,0 +1,86 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_UPDATER_H
+#define DDS4CCM_UPDATER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+#include "InstanceHandleManager_T.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class Updater_T :
+ public InstanceHandleManager_T <DDS_TYPE, CCM_TYPE, typename CCM_TYPE::updater_type>
+ {
+ public:
+ /// Constructor
+ Updater_T (void);
+
+ /// Destructor
+ virtual ~Updater_T (void);
+
+ virtual void create_one (
+ const typename DDS_TYPE::value_type& an_instance);
+
+ virtual void update_one (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ virtual void delete_one (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ virtual void create_many (
+ const typename CCM_TYPE::seq_type& data);
+
+ virtual void update_many (
+ const typename CCM_TYPE::seq_type& data);
+
+ virtual void delete_many (
+ const typename CCM_TYPE::seq_type& data);
+
+ virtual bool is_global_scope ();
+
+ virtual bool is_coherent_write ();
+
+ virtual void is_coherent_write (bool value_);
+
+ private:
+ void create_i (
+ const typename DDS_TYPE::value_type& an_instance,
+ ::CCM_DDS::DataNumber_t index);
+
+ void update_i (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle,
+ ::CCM_DDS::DataNumber_t index);
+
+ void delete_i (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle,
+ ::CCM_DDS::DataNumber_t index);
+
+ void check_existent (
+ const typename CCM_TYPE::seq_type& data);
+
+ void check_already_created (
+ const typename CCM_TYPE::seq_type& data);
+
+ bool is_global_scope_;
+ bool is_coherent_write_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/Updater_T.cpp"
+
+#endif /* DDS4CCM_UPDATER_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.cpp
new file mode 100644
index 00000000000..0f270083afb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.cpp
@@ -0,0 +1,10 @@
+// $Id$
+
+#include "Utils.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.h
new file mode 100644
index 00000000000..a4d2c1a5f1a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Utils.h
@@ -0,0 +1,91 @@
+/**
+ * @file Utils.h
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ *
+ * Misc utility classes for NDDS.
+ */
+
+#ifndef NDDS_UTILS_H
+#define NDDS_UTILS_H
+
+#include "dds4ccm_dds_impl_export.h"
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ inline const char * translate_retcode (::DDS::ReturnCode_t ret)
+ {
+#define RTI_DDS_RETCODE(X) case X: return #X
+ switch (ret)
+ {
+ RTI_DDS_RETCODE (DDS::RETCODE_OK);
+ RTI_DDS_RETCODE (DDS::RETCODE_ERROR);
+ RTI_DDS_RETCODE (DDS::RETCODE_UNSUPPORTED);
+ RTI_DDS_RETCODE (DDS::RETCODE_BAD_PARAMETER);
+ RTI_DDS_RETCODE (DDS::RETCODE_PRECONDITION_NOT_MET);
+ RTI_DDS_RETCODE (DDS::RETCODE_OUT_OF_RESOURCES);
+ RTI_DDS_RETCODE (DDS::RETCODE_NOT_ENABLED);
+ RTI_DDS_RETCODE (DDS::RETCODE_IMMUTABLE_POLICY);
+ RTI_DDS_RETCODE (DDS::RETCODE_INCONSISTENT_POLICY);
+ RTI_DDS_RETCODE (DDS::RETCODE_ALREADY_DELETED);
+ RTI_DDS_RETCODE (DDS::RETCODE_TIMEOUT);
+ RTI_DDS_RETCODE (DDS::RETCODE_NO_DATA);
+ RTI_DDS_RETCODE (DDS::RETCODE_ILLEGAL_OPERATION);
+ }
+ return "***Unknown enum value, update RTI::translate_retcode()";
+#undef RTI_DDS_RETCODE
+ }
+
+ inline const char * translate_statuskind (DDS::StatusKind ret)
+ {
+#define RTI_DDS_RETCODE(X) case X: return #X
+ switch (ret)
+ {
+ RTI_DDS_RETCODE (DDS::INCONSISTENT_TOPIC_STATUS);
+ RTI_DDS_RETCODE (DDS::OFFERED_DEADLINE_MISSED_STATUS);
+ RTI_DDS_RETCODE (DDS::REQUESTED_DEADLINE_MISSED_STATUS);
+ RTI_DDS_RETCODE (DDS::OFFERED_INCOMPATIBLE_QOS_STATUS);
+ RTI_DDS_RETCODE (DDS::REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ RTI_DDS_RETCODE (DDS::SAMPLE_LOST_STATUS);
+ RTI_DDS_RETCODE (DDS::SAMPLE_REJECTED_STATUS);
+ RTI_DDS_RETCODE (DDS::DATA_ON_READERS_STATUS);
+ RTI_DDS_RETCODE (DDS::DATA_AVAILABLE_STATUS);
+ RTI_DDS_RETCODE (DDS::LIVELINESS_LOST_STATUS);
+ RTI_DDS_RETCODE (DDS::LIVELINESS_CHANGED_STATUS);
+ RTI_DDS_RETCODE (DDS::PUBLICATION_MATCHED_STATUS);
+ RTI_DDS_RETCODE (DDS::SUBSCRIPTION_MATCHED_STATUS);
+#if (CIAO_DDS4CCM_NDDS==1)
+ RTI_DDS_RETCODE (DDS::RELIABLE_WRITER_CACHE_CHANGED_STATUS);
+ RTI_DDS_RETCODE (DDS::RELIABLE_READER_ACTIVITY_CHANGED_STATUS);
+#endif
+ //RTI_DDS_RETCODE (DDS::DATA_WRITER_CACHE_STATUS);
+ //RTI_DDS_RETCODE (DDS::DATA_WRITER_PROTOCOL_STATUS);
+ //RTI_DDS_RETCODE (DDS::DATA_READER_CACHE_STATUS);
+ //RTI_DDS_RETCODE (DDS::DATA_READER_PROTOCOL_STATUS);
+ }
+ return "***Unknown enum value, update RTI::translate_statuskind()";
+#undef RTI_DDS_RETCODE
+ }
+
+ inline const char * translate_rejectedstatuskind (DDS::SampleRejectedStatusKind ret)
+ {
+#define RTI_DDS_RETCODE(X) case X: return #X
+ switch (ret)
+ {
+ RTI_DDS_RETCODE (DDS::NOT_REJECTED);
+ RTI_DDS_RETCODE (DDS::REJECTED_BY_INSTANCES_LIMIT);
+ RTI_DDS_RETCODE (DDS::REJECTED_BY_SAMPLES_LIMIT);
+ RTI_DDS_RETCODE (DDS::REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT);
+ }
+ return "***Unknown enum value, update RTI::translate_rejectedstatuskind()";
+#undef RTI_DDS_RETCODE
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.cpp b/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.cpp
new file mode 100644
index 00000000000..f7837a19975
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.cpp
@@ -0,0 +1,98 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/Coherent_Changes_Guard.h"
+
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+
+#include "dds4ccm/impl/logger/Log_Macros.h"
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::Writer_T (void)
+ : InstanceHandleManager_T<DDS_TYPE, CCM_TYPE, typename CCM_TYPE::writer_type> (),
+ is_coherent_write_ (false)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Writer_T::Writer_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::~Writer_T (void)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Writer_T::~Writer_T");
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+void
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::write_i (
+ const typename DDS_TYPE::value_type& datum,
+ const ::DDS::InstanceHandle_t& instance_handle,
+ ::CCM_DDS::DataNumber_t index)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Writer_T::write_i");
+
+ ::DDS_InstanceHandle_t handle = ::DDS_HANDLE_NIL;
+ handle <<= instance_handle;
+ DDS_ReturnCode_t const retval = this->impl ()->write (datum, handle);
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::Writer_T::write_i - "
+ "Write unsuccessful, received error code %C\n",
+ translate_retcode (retval)));
+ throw CCM_DDS::InternalError (retval, index);
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+void
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::write_one (
+ const typename DDS_TYPE::value_type & an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Writer_T::write_one");
+
+ this->write_i (an_instance, instance_handle, 0);
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::Writer_T::write_one - "
+ "Write successful\n"));
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+void
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::write_many (
+ const typename CCM_TYPE::seq_type& instances)
+{
+ DDS4CCM_TRACE ("CIAO::DDS4CCM::Writer_T::write_many");
+
+ Coherent_Changes_Guard guard (this->impl ()->get_publisher(),
+ this->is_coherent_write_);
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::Writer_T::write_many - "
+ "Preparing to write to DDS\n"));
+
+ for (typename CCM_TYPE::seq_type::size_type index = 0;
+ index < instances.length();
+ index++)
+ {
+ this->write_i (instances[index], ::DDS::HANDLE_NIL, index);
+ }
+
+ DDS4CCM_DEBUG (9, (LM_TRACE, CLINFO "CIAO::DDS4CCM::Writer_T::write_many - "
+ "Write successful\n"));
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+::CORBA::Boolean
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::is_coherent_write (void)
+{
+ return this->is_coherent_write_;
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE >
+void
+CIAO::DDS4CCM::Writer_T<DDS_TYPE, CCM_TYPE>::is_coherent_write (
+ ::CORBA::Boolean value)
+{
+ this->is_coherent_write_ = value;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.h b/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.h
new file mode 100644
index 00000000000..d38887768c5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/Writer_T.h
@@ -0,0 +1,55 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef WRITER_T_H
+#define WRITER_T_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ace/Copy_Disabled.h"
+#include "InstanceHandleManager_T.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ template <typename DDS_TYPE, typename CCM_TYPE>
+ class Writer_T :
+ public InstanceHandleManager_T <DDS_TYPE, CCM_TYPE, typename CCM_TYPE::writer_type>
+ {
+ public:
+ /// Constructor
+ Writer_T (void);
+
+ /// Destructor
+ virtual ~Writer_T (void);
+
+ virtual void write_one (
+ const typename DDS_TYPE::value_type& an_instance,
+ const ::DDS::InstanceHandle_t & instance_handle);
+
+ virtual void write_many (
+ const typename CCM_TYPE::seq_type& instances);
+
+ virtual ::CORBA::Boolean is_coherent_write (void);
+
+ virtual void is_coherent_write ( ::CORBA::Boolean value);
+
+ private:
+ void write_i (const typename DDS_TYPE::value_type& datum,
+ const ::DDS::InstanceHandle_t& instance_handle,
+ ::CCM_DDS::DataNumber_t index);
+
+ bool is_coherent_write_;
+ };
+ }
+}
+
+#include "dds4ccm/impl/dds/Writer_T.cpp"
+
+#endif /* WRITER_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_dds_impl_export.h b/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_dds_impl_export.h
new file mode 100644
index 00000000000..c22f3ecbe8f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_dds_impl_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DDS4CCM_NDDS_IMPL
+// ------------------------------
+#ifndef DDS4CCM_DDS_IMPL_EXPORT_H
+#define DDS4CCM_DDS_IMPL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DDS4CCM_DDS_IMPL_HAS_DLL)
+# define DDS4CCM_DDS_IMPL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DDS4CCM_DDS_IMPL_HAS_DLL */
+
+#if !defined (DDS4CCM_DDS_IMPL_HAS_DLL)
+# define DDS4CCM_DDS_IMPL_HAS_DLL 1
+#endif /* ! DDS4CCM_DDS_IMPL_HAS_DLL */
+
+#if defined (DDS4CCM_DDS_IMPL_HAS_DLL) && (DDS4CCM_DDS_IMPL_HAS_DLL == 1)
+# if defined (DDS4CCM_DDS_IMPL_BUILD_DLL)
+# define DDS4CCM_DDS_IMPL_Export ACE_Proper_Export_Flag
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DDS4CCM_DDS_IMPL_BUILD_DLL */
+# define DDS4CCM_DDS_IMPL_Export ACE_Proper_Import_Flag
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DDS4CCM_DDS_IMPL_BUILD_DLL */
+#else /* DDS4CCM_DDS_IMPL_HAS_DLL == 1 */
+# define DDS4CCM_DDS_IMPL_Export
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARATION(T)
+# define DDS4CCM_DDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DDS4CCM_DDS_IMPL_HAS_DLL == 1 */
+
+// Set DDS4CCM_DDS_IMPL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DDS4CCM_DDS_IMPL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DDS4CCM_DDS_IMPL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DDS4CCM_DDS_IMPL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DDS4CCM_DDS_IMPL_NTRACE */
+
+#if (DDS4CCM_DDS_IMPL_NTRACE == 1)
+# define DDS4CCM_DDS_IMPL_TRACE(X)
+#else /* (DDS4CCM_DDS_IMPL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DDS4CCM_DDS_IMPL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DDS4CCM_DDS_IMPL_NTRACE == 1) */
+
+#endif /* DDS4CCM_DDS_IMPL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_impl.mpc b/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_impl.mpc
new file mode 100644
index 00000000000..58326b8db12
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/dds4ccm_impl.mpc
@@ -0,0 +1,42 @@
+// $Id$
+
+project(CIAO_DDS4CCM_DDS_Impl) : dds4ccm_skel, taolib, ciao_output, ccm_stub, ciao_logger {
+
+ after += DDS4CCM_lem_stub
+ libs += DDS4CCM_lem_stub
+
+ dynamicflags = DDS4CCM_DDS_IMPL_BUILD_DLL
+ macros += BUILDING_DDS_LIB
+ Header_Files {
+ *.h
+ ndds/*.h
+ }
+
+ Template_Files {
+ *_T.cpp
+ }
+
+ Source_Files {
+ Coherent_Changes_Guard.cpp
+ DataWriter.cpp
+ DataWriterListener.cpp
+ DataReader.cpp
+ DataReaderListener.cpp
+ DomainParticipant.cpp
+ DomainParticipantListener.cpp
+ DomainParticipantFactory.cpp
+ ContentFilteredTopic.cpp
+ Topic.cpp
+ TopicDescription.cpp
+ Publisher.cpp
+ PublisherListener.cpp
+ Subscriber.cpp
+ SubscriberListener.cpp
+ StatusCondition.cpp
+ ReadCondition.cpp
+ QueryCondition.cpp
+ Utils.cpp
+ TopicListener.cpp
+ DDSCallbackStatusHandler.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/BuiltinTopicKey_t.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/BuiltinTopicKey_t.h
new file mode 100644
index 00000000000..b9499075d09
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/BuiltinTopicKey_t.h
@@ -0,0 +1,28 @@
+ /**
+ * @author Marcel Smit <msmit@dre.vanderbilt.edu>
+ *
+ * $Id$
+ *
+ */
+
+#ifndef BUILTINTOPICKEY_T_H
+#define BUILTINTOPICKEY_T_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::BuiltinTopicKey_t &ddsbuiltintopickey, const ::DDS_BuiltinTopicKey_t & builtintopickey)
+{
+ ACE_OS::memcpy (ddsbuiltintopickey.value, builtintopickey.value, sizeof (builtintopickey.value));
+}
+
+inline void
+operator<<= (::DDS_BuiltinTopicKey_t &ddsbuiltintopickey, const ::DDS::BuiltinTopicKey_t & builtintopickey)
+{
+ ACE_OS::memcpy (ddsbuiltintopickey.value, builtintopickey.value, sizeof (builtintopickey.value));
+}
+
+#endif
+
+#endif /* BUILTINTOPICKEY_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataReaderQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataReaderQos.h
new file mode 100644
index 00000000000..8df844a7386
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataReaderQos.h
@@ -0,0 +1,68 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAREADERQOS_H
+#define DDS4CCM_DATAREADERQOS_H
+
+#include "DurabilityQosPolicy.h"
+#include "DeadlineQosPolicy.h"
+#include "LatencyBudgetQosPolicy.h"
+#include "LivelinessQosPolicy.h"
+#include "ReliabilityQosPolicy.h"
+#include "DestinationOrderQosPolicy.h"
+#include "HistoryQosPolicy.h"
+#include "ResourceLimitsQosPolicy.h"
+#include "UserDataQosPolicy.h"
+#include "OwnershipQosPolicy.h"
+#include "TimeBasedFilterQosPolicy.h"
+#include "ReaderDataLifecycleQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataReaderQos DDS_DataReaderQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DataReaderQos &ddsqos, const ::DDS_DataReaderQos & qos)
+{
+ ddsqos.durability <<= qos.durability;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.ownership <<= qos.ownership;
+ ddsqos.time_based_filter <<= qos.time_based_filter;
+ ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle;
+}
+
+inline void
+operator<<= (::DDS_DataReaderQos &ddsqos, const ::DDS::DataReaderQos & qos)
+{
+ ddsqos.durability <<= qos.durability;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.ownership <<= qos.ownership;
+ ddsqos.time_based_filter <<= qos.time_based_filter;
+ ddsqos.reader_data_lifecycle <<= qos.reader_data_lifecycle;
+}
+
+#endif
+
+#endif /* DDS4CCM_DATAREADERQOS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataWriterQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataWriterQos.h
new file mode 100644
index 00000000000..28eef81e587
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DataWriterQos.h
@@ -0,0 +1,77 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DATAWRITERQOS_H
+#define DDS4CCM_DATAWRITERQOS_H
+
+#include "DurabilityQosPolicy.h"
+#include "DurabilityServiceQosPolicy.h"
+#include "DeadlineQosPolicy.h"
+#include "LatencyBudgetQosPolicy.h"
+#include "LivelinessQosPolicy.h"
+#include "ReliabilityQosPolicy.h"
+#include "DestinationOrderQosPolicy.h"
+#include "HistoryQosPolicy.h"
+#include "ResourceLimitsQosPolicy.h"
+#include "TransportPriorityQosPolicy.h"
+#include "LifespanQosPolicy.h"
+#include "UserDataQosPolicy.h"
+#include "OwnershipQosPolicy.h"
+#include "OwnershipStrengthQosPolicy.h"
+#include "WriterDataLifecycleQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DataWriterQos DDS_DataWriterQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DataWriterQos &ddsqos, const ::DDS_DataWriterQos & qos)
+{
+ ddsqos.durability <<= qos.durability;
+ ddsqos.durability_service <<= qos.durability_service;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.transport_priority <<= qos.transport_priority;
+ ddsqos.lifespan <<= qos.lifespan;
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.ownership <<= qos.ownership;
+ ddsqos.ownership_strength <<= qos.ownership_strength;
+ ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle;
+}
+
+inline void
+operator<<= (::DDS_DataWriterQos &ddsqos, const ::DDS::DataWriterQos & qos)
+{
+ ddsqos.durability <<= qos.durability;
+ ddsqos.durability_service <<= qos.durability_service;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.transport_priority <<= qos.transport_priority;
+ ddsqos.lifespan <<= qos.lifespan;
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.ownership <<= qos.ownership;
+ ddsqos.ownership_strength <<= qos.ownership_strength;
+ ddsqos.writer_data_lifecycle <<= qos.writer_data_lifecycle;
+}
+
+#endif
+
+#endif /* DDS4CCM_DATAWRITERQOS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DeadlineQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DeadlineQosPolicy.h
new file mode 100644
index 00000000000..59baeba5405
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DeadlineQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DEADLINEQOSPOLICY_H
+#define DDS4CCM_DEADLINEQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DeadlineQosPolicy DDS_DeadlineQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DeadlineQosPolicy &ddsqos, const ::DDS_DeadlineQosPolicy & qos)
+{
+ ddsqos.period <<= qos.period;
+}
+
+inline void
+operator<<= (::DDS_DeadlineQosPolicy &ddsqos, const ::DDS::DeadlineQosPolicy & qos)
+{
+ ddsqos.period <<= qos.period;
+}
+
+#endif
+
+#endif /* DDS4CCM_DEADLINEQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DestinationOrderQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DestinationOrderQosPolicy.h
new file mode 100644
index 00000000000..b28d8bedf75
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DestinationOrderQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DESTINATIONORDERQOSPOLICY_H
+#define DDS4CCM_DESTINATIONORDERQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DestinationOrderQosPolicy DDS_DestinationOrderQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DestinationOrderQosPolicy &ddsqos, const ::DDS_DestinationOrderQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::DestinationOrderQosPolicyKind> (qos.kind);
+}
+
+inline void
+operator<<= (::DDS_DestinationOrderQosPolicy &ddsqos, const ::DDS::DestinationOrderQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_DestinationOrderQosPolicyKind> (qos.kind);
+}
+
+#endif
+
+#endif /* DDS4CCM_DESTINATIONORDERQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantFactoryQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantFactoryQos.h
new file mode 100644
index 00000000000..5a392830c03
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantFactoryQos.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DOMAINPARTICIPANTFACTORYQOSPOLICY_H
+#define DDS4CCM_DOMAINPARTICIPANTFACTORYQOSPOLICY_H
+
+#include "EntityFactoryQosPolicy.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DomainParticipantFactoryQos DDS_DomainParticipantFactoryQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DomainParticipantFactoryQos &ddsqos, const ::DDS_DomainParticipantFactoryQos & qos)
+{
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+inline void
+operator<<= (::DDS_DomainParticipantFactoryQos &ddsqos, const ::DDS::DomainParticipantFactoryQos & qos)
+{
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+#endif
+
+#endif /* DDS4CCM_DOMAINPARTICIPANTFACTORYQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantQos.h
new file mode 100644
index 00000000000..e6f8429ca35
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DomainParticipantQos.h
@@ -0,0 +1,38 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DOMAINPARTICIPANTQOSPOLICY_H
+#define DDS4CCM_DOMAINPARTICIPANTQOSPOLICY_H
+
+#include "UserDataQosPolicy.h"
+#include "EntityFactoryQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DomainParticipantQos DDS_DomainParticipantQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DomainParticipantQos &ddsqos, const ::DDS_DomainParticipantQos & qos)
+{
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+inline void
+operator<<= (::DDS_DomainParticipantQos &ddsqos, const ::DDS::DomainParticipantQos & qos)
+{
+ ddsqos.user_data <<= qos.user_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+#endif
+
+#endif /* DDS4CCM_DOMAINPARTICIPANTQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityQosPolicy.h
new file mode 100644
index 00000000000..08ad411e188
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DURABILITYQOSPOLICY_H
+#define DDS4CCM_DURABILITYQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DurabilityQosPolicy DDS_DurabilityQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DurabilityQosPolicy &ddsqos, const ::DDS_DurabilityQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::DurabilityQosPolicyKind> (qos.kind);
+}
+
+inline void
+operator<<= (::DDS_DurabilityQosPolicy &ddsqos, const ::DDS::DurabilityQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_DurabilityQosPolicyKind> (qos.kind);
+}
+
+#endif
+
+#endif /* DDS4CCM_DURABILITYQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityServiceQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityServiceQosPolicy.h
new file mode 100644
index 00000000000..9686b01e59d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/DurabilityServiceQosPolicy.h
@@ -0,0 +1,44 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DURABILITYSERVICEQOSPOLICY_H
+#define DDS4CCM_DURABILITYSERVICEQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::DurabilityServiceQosPolicy DDS_DurabilityServiceQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::DurabilityServiceQosPolicy &ddsqos, const ::DDS_DurabilityServiceQosPolicy & qos)
+{
+ ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay;
+ ddsqos.history_kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.history_kind);
+ ddsqos.history_depth = qos.history_depth;
+ ddsqos.max_samples = qos.max_samples;
+ ddsqos.max_instances = qos.max_instances;
+ ddsqos.max_samples_per_instance = qos.max_samples_per_instance;
+}
+
+inline void
+operator<<= (::DDS_DurabilityServiceQosPolicy &ddsqos, const ::DDS::DurabilityServiceQosPolicy & qos)
+{
+ ddsqos.service_cleanup_delay <<= qos.service_cleanup_delay;
+ ddsqos.history_kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.history_kind);
+ ddsqos.history_depth = qos.history_depth;
+ ddsqos.max_samples = qos.max_samples;
+ ddsqos.max_instances = qos.max_instances;
+ ddsqos.max_samples_per_instance = qos.max_samples_per_instance;
+}
+
+#endif
+
+#endif /* DDS4CCM_DURABILITYSERVICEQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Duration_t.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Duration_t.h
new file mode 100644
index 00000000000..597339c10ab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Duration_t.h
@@ -0,0 +1,37 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_DURATION_T_H
+#define DDS4CCM_DURATION_T_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::Duration_t DDS_Duration_t;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::Duration_t &ddsduration, const ::DDS_Duration_t & duration)
+{
+ ddsduration.sec = duration.sec;
+ ddsduration.nanosec = duration.nanosec;
+}
+
+inline void
+operator<<= (::DDS_Duration_t &ddsduration, const ::DDS::Duration_t & duration)
+{
+ ddsduration.sec = duration.sec;
+ ddsduration.nanosec = duration.nanosec;
+}
+
+#endif
+
+#endif /* DDS4CCM_DURATION_T_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/EntityFactoryQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/EntityFactoryQosPolicy.h
new file mode 100644
index 00000000000..356de511292
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/EntityFactoryQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_ENTITYFACTORYQOSPOLICY_H
+#define DDS4CCM_ENTITYFACTORYQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::EntityFactoryQosPolicy DDS_EntityFactoryQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::EntityFactoryQosPolicy &ddsqos, const ::DDS_EntityFactoryQosPolicy & qos)
+{
+ ddsqos.autoenable_created_entities = qos.autoenable_created_entities;
+}
+
+inline void
+operator<<= (::DDS_EntityFactoryQosPolicy &ddsqos, const ::DDS::EntityFactoryQosPolicy & qos)
+{
+ ddsqos.autoenable_created_entities = qos.autoenable_created_entities;
+}
+
+#endif
+
+#endif /* DDS4CCM_ENTITYFACTORYQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/GroupDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/GroupDataQosPolicy.h
new file mode 100644
index 00000000000..c8c63445f29
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/GroupDataQosPolicy.h
@@ -0,0 +1,35 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_GROUPDATAQOSPOLICY_H
+#define DDS4CCM_GROUPDATAQOSPOLICY_H
+
+#include "OctetSeq.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::GroupDataQosPolicy DDS_GroupDataQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+
+inline void
+operator<<= (::DDS::GroupDataQosPolicy &ddsqos, const ::DDS_GroupDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+inline void
+operator<<= (::DDS_GroupDataQosPolicy &ddsqos, const ::DDS::GroupDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+#endif
+
+#endif /* DDS4CCM_GROUPDATAQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/HistoryQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/HistoryQosPolicy.h
new file mode 100644
index 00000000000..d2140f4ca63
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/HistoryQosPolicy.h
@@ -0,0 +1,35 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_HISTORYQOSPOLICY_H
+#define DDS4CCM_HISTORYQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::HistoryQosPolicy DDS_HistoryQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::HistoryQosPolicy &ddsqos, const ::DDS_HistoryQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::HistoryQosPolicyKind> (qos.kind);
+ ddsqos.depth = qos.depth;
+}
+
+inline void
+operator<<= (::DDS_HistoryQosPolicy &ddsqos, const ::DDS::HistoryQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_HistoryQosPolicyKind> (qos.kind);
+ ddsqos.depth = qos.depth;
+}
+
+#endif
+
+#endif /* DDS4CCM_HISTORYQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InconsistentTopicStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InconsistentTopicStatus.h
new file mode 100644
index 00000000000..6946874f57c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InconsistentTopicStatus.h
@@ -0,0 +1,36 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_INCONSISTENTTOPICSTATUS_H
+#define DDS4CCM_INCONSISTENTTOPICSTATUS_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::InconsistentTopicStatus DDS_InconsistentTopicStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::InconsistentTopicStatus &ddsstatus, const ::DDS_InconsistentTopicStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+inline void
+operator<<= (::DDS_InconsistentTopicStatus &ddsstatus, const ::DDS::InconsistentTopicStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+#endif
+
+#endif /* DDS4CCM_INCONSISTENTTOPICSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandleSeq.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandleSeq.h
new file mode 100644
index 00000000000..6a95c92a610
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandleSeq.h
@@ -0,0 +1,48 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_INSTANCEHANDLESEQ_H
+#define DDS4CCM_INSTANCEHANDLESEQ_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::InstanceHandleSeq DDS_InstanceHandleSeq;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+template <typename corbaseq, typename ddsseq>
+void convert_dds_to_corba_sequence(corbaseq & target, const ddsseq& source) {
+ target.length (source.length ());
+ for (::DDS_Long index = 0; index < source.length (); index++)
+ {
+ target[index] <<= source[index];
+ }
+}
+
+inline void
+operator<<= (::DDS::InstanceHandleSeq &ddsinstancehandleseqseq, const ::DDS_InstanceHandleSeq & instancehandleseq)
+{
+ convert_dds_to_corba_sequence (ddsinstancehandleseqseq, instancehandleseq);
+}
+
+inline void
+operator<<= (::DDS_InstanceHandleSeq &ddsinstancehandleseqseq, const ::DDS::InstanceHandleSeq & instancehandleseq)
+{
+ ddsinstancehandleseqseq.length (instancehandleseq.length ());
+ for (::DDS::InstanceHandleSeq::size_type index = 0; index < instancehandleseq.length (); index++)
+ {
+ ddsinstancehandleseqseq[index] <<= instancehandleseq[index];
+ }
+}
+
+#endif
+
+#endif /* DDS4CCM_INSTANCEHANDLESEQ_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandle_t.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandle_t.h
new file mode 100644
index 00000000000..8b2517eaa35
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/InstanceHandle_t.h
@@ -0,0 +1,92 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_INSTANCEHANDLE_T_H
+#define DDS4CCM_INSTANCEHANDLE_T_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+#include "ndds/ndds_cpp.h"
+#define DDS_INSTANCE_HANDLE_T_IN const ::DDS::InstanceHandle_t &
+#define DDS_INSTANCE_HANDLE_T_RETN ::DDS::InstanceHandle_t
+#endif
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+#define DDS_INSTANCE_HANDLE_T_IN ::DDS::InstanceHandle_t
+#define DDS_INSTANCE_HANDLE_T_RETN ::DDS::InstanceHandle_t
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::InstanceHandle_t &ddsinstancehandle, const ::DDS_InstanceHandle_t & instancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.value, instancehandle.keyHash.value, sizeof (instancehandle.keyHash.value));
+ ddsinstancehandle.length = instancehandle.keyHash.length;
+ ddsinstancehandle.isValid = instancehandle.isValid;
+}
+
+inline void
+operator<<= (::DDS_InstanceHandle_t &ddsinstancehandle, const ::DDS::InstanceHandle_t & instancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.keyHash.value, instancehandle.value, sizeof (instancehandle.value));
+ ddsinstancehandle.keyHash.length = instancehandle.length;
+ ddsinstancehandle.isValid = instancehandle.isValid;
+}
+
+inline bool
+operator== (const ::DDS::InstanceHandle_t & instancehandle1, const ::DDS::InstanceHandle_t & instancehandle2)
+{
+ return instancehandle1.length == instancehandle2.length &&
+ instancehandle1.isValid == instancehandle2.isValid &&
+ ACE_OS::memcmp (instancehandle1.value, instancehandle2.value, sizeof (instancehandle1.value)) == 0;
+}
+
+inline bool
+operator== (const DDS_InstanceHandle_t & dds_instancehandle, const ::DDS::InstanceHandle_t & ccm_instancehandle)
+{
+ return dds_instancehandle.keyHash.length == ccm_instancehandle.length &&
+ static_cast<CORBA::ULong>(dds_instancehandle.isValid) == ccm_instancehandle.isValid &&
+ ACE_OS::memcmp (dds_instancehandle.keyHash.value, ccm_instancehandle.value, sizeof (dds_instancehandle.keyHash.value)) == 0;
+}
+
+inline bool
+operator== (const ::DDS::InstanceHandle_t & ccm_instancehandle, const DDS_InstanceHandle_t & dds_instancehandle)
+{
+ return ccm_instancehandle.length == dds_instancehandle.keyHash.length &&
+ ccm_instancehandle.isValid == static_cast<CORBA::ULong>(dds_instancehandle.isValid) &&
+ ACE_OS::memcmp (ccm_instancehandle.value, dds_instancehandle.keyHash.value, sizeof (ccm_instancehandle.value)) == 0;
+}
+
+inline bool
+operator!= (const ::DDS::InstanceHandle_t & instancehandle1, const ::DDS::InstanceHandle_t & instancehandle2)
+{
+ return instancehandle1.length != instancehandle2.length ||
+ instancehandle1.isValid != instancehandle2.isValid ||
+ ACE_OS::memcmp (instancehandle1.value, instancehandle2.value, sizeof (instancehandle1.value)) != 0;
+}
+
+inline bool
+operator!= (const DDS_InstanceHandle_t & dds_instancehandle, const ::DDS::InstanceHandle_t & ccm_instancehandle)
+{
+ return dds_instancehandle.keyHash.length != ccm_instancehandle.length ||
+ static_cast<CORBA::ULong>(dds_instancehandle.isValid) != ccm_instancehandle.isValid ||
+ ACE_OS::memcmp (dds_instancehandle.keyHash.value, ccm_instancehandle.value, sizeof (dds_instancehandle.keyHash.value)) != 0;
+}
+
+inline bool
+operator!= (const ::DDS::InstanceHandle_t & ccm_instancehandle, const DDS_InstanceHandle_t & dds_instancehandle)
+{
+ return ccm_instancehandle.length != dds_instancehandle.keyHash.length ||
+ ccm_instancehandle.isValid != static_cast<CORBA::ULong>(dds_instancehandle.isValid) ||
+ ACE_OS::memcmp (ccm_instancehandle.value, dds_instancehandle.keyHash.value, sizeof (ccm_instancehandle.value)) != 0;
+}
+#endif
+
+#endif /* DDS4CCM_INSTANCEHANDLE_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LatencyBudgetQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LatencyBudgetQosPolicy.h
new file mode 100644
index 00000000000..27900434e79
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LatencyBudgetQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_LATENCYBUDGETQOSPOLICY_H
+#define DDS4CCM_LATENCYBUDGETQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::LatencyBudgetQosPolicy DDS_LatencyBudgetQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::LatencyBudgetQosPolicy &ddsqos, const ::DDS_LatencyBudgetQosPolicy & qos)
+{
+ ddsqos.duration <<= qos.duration;
+}
+
+inline void
+operator<<= (::DDS_LatencyBudgetQosPolicy &ddsqos, const ::DDS::LatencyBudgetQosPolicy & qos)
+{
+ ddsqos.duration <<= qos.duration;
+}
+
+#endif
+
+#endif /* DDS4CCM_LATENCYBUDGETQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LifespanQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LifespanQosPolicy.h
new file mode 100644
index 00000000000..53220c3b745
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LifespanQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_LIFESPANQOSPOLICY_H
+#define DDS4CCM_LIFESPANQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::LifespanQosPolicy DDS_LifespanQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::LifespanQosPolicy &ddsqos, const ::DDS_LifespanQosPolicy & qos)
+{
+ ddsqos.duration <<= qos.duration;
+}
+
+inline void
+operator<<= (::DDS_LifespanQosPolicy &ddsqos, const ::DDS::LifespanQosPolicy & qos)
+{
+ ddsqos.duration <<= qos.duration;
+}
+
+#endif
+
+#endif /* DDS4CCM_LIFESPANQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessChangedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessChangedStatus.h
new file mode 100644
index 00000000000..a588bb4cf31
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessChangedStatus.h
@@ -0,0 +1,43 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_LIVELINESSCHANGEDSTATUS_H
+#define DDS4CCM_LIVELINESSCHANGEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::LivelinessChangedStatus DDS_LivelinessChangedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::LivelinessChangedStatus &ddsstatus, const ::DDS_LivelinessChangedStatus & status)
+{
+ ddsstatus.alive_count = status.alive_count;
+ ddsstatus.not_alive_count = status.not_alive_count;
+ ddsstatus.alive_count_change = status.alive_count_change;
+ ddsstatus.not_alive_count_change = status.not_alive_count_change;
+ ddsstatus.last_publication_handle <<= status.last_publication_handle;
+}
+
+inline void
+operator<<= (::DDS_LivelinessChangedStatus &ddsstatus, const ::DDS::LivelinessChangedStatus & status)
+{
+ ddsstatus.alive_count = status.alive_count;
+ ddsstatus.not_alive_count = status.not_alive_count;
+ ddsstatus.alive_count_change = status.alive_count_change;
+ ddsstatus.not_alive_count_change = status.not_alive_count_change;
+ ddsstatus.last_publication_handle <<= status.last_publication_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_LIVELINESSCHANGEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessLostStatus.h
new file mode 100644
index 00000000000..dff10ab7ab3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessLostStatus.h
@@ -0,0 +1,36 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_LIVELINESSLOSTSTATUS_H
+#define DDS4CCM_LIVELINESSLOSTSTATUS_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::LivelinessLostStatus DDS_LivelinessLostStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::LivelinessLostStatus &ddsstatus, const ::DDS_LivelinessLostStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+inline void
+operator<<= (::DDS_LivelinessLostStatus &ddsstatus, const ::DDS::LivelinessLostStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+#endif
+
+#endif /* DDS4CCM_LIVELINESSLOSTSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessQosPolicy.h
new file mode 100644
index 00000000000..18b56dae8cf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/LivelinessQosPolicy.h
@@ -0,0 +1,36 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_LIVELINESSQOSPOLICY_H
+#define DDS4CCM_LIVELINESSQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::LivelinessQosPolicy DDS_LivelinessQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::LivelinessQosPolicy &ddsqos, const ::DDS_LivelinessQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::LivelinessQosPolicyKind> (qos.kind);
+ ddsqos.lease_duration <<= qos.lease_duration;
+}
+
+inline void
+operator<<= (::DDS_LivelinessQosPolicy &ddsqos, const ::DDS::LivelinessQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_LivelinessQosPolicyKind> (qos.kind);
+ ddsqos.lease_duration <<= qos.lease_duration;
+}
+
+#endif
+
+#endif /* DDS4CCM_LIVELINESSQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OctetSeq.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OctetSeq.h
new file mode 100644
index 00000000000..ed0cc97a018
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OctetSeq.h
@@ -0,0 +1,32 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_OCTETSEQ_H
+#define DDS4CCM_OCTETSEQ_H
+
+inline void
+operator<<= (::DDS::OctetSeq &ddsseq, const ::DDS_OctetSeq & seq)
+{
+ ddsseq.length (seq.length ());
+ for (::DDS_Long i = 0; i < seq.length (); ++i)
+ {
+ ddsseq[i] = seq[i];
+ }
+}
+
+inline void
+operator<<= (::DDS_OctetSeq &ddsseq, const ::DDS::OctetSeq & seq)
+{
+ ddsseq.length (seq.length ());
+ for (::CORBA::ULong i = 0; i < seq.length (); ++i)
+ {
+ ddsseq[i] = seq[i];
+ }
+}
+
+#endif /* DDS4CCM_OCTETSEQ_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedDeadlineMissedStatus.h
new file mode 100644
index 00000000000..164d6a571c4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedDeadlineMissedStatus.h
@@ -0,0 +1,39 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_OFFEREDDEADLINEMISSEDSTATUS_H
+#define DDS4CCM_OFFEREDDEADLINEMISSEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::OfferedDeadlineMissedStatus DDS_OfferedDeadlineMissedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::OfferedDeadlineMissedStatus &ddsstatus, const ::DDS_OfferedDeadlineMissedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+inline void
+operator<<= (::DDS_OfferedDeadlineMissedStatus &ddsstatus, const ::DDS::OfferedDeadlineMissedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_OFFEREDDEADLINEMISSEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedIncompatibleQosStatus.h
new file mode 100644
index 00000000000..9b6391a747b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OfferedIncompatibleQosStatus.h
@@ -0,0 +1,41 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_OFFEREDINCOMPATIBLEQOSSTATUS_H
+#define DDS4CCM_OFFEREDINCOMPATIBLEQOSSTATUS_H
+
+#include "QosPolicyCountSeq.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::OfferedIncompatibleQosStatus DDS_OfferedIncompatibleQosStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::OfferedIncompatibleQosStatus &ddsstatus, const ::DDS_OfferedIncompatibleQosStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_policy_id = status.last_policy_id;
+ ddsstatus.policies <<= status.policies;
+}
+
+inline void
+operator<<= (::DDS_OfferedIncompatibleQosStatus &ddsstatus, const ::DDS::OfferedIncompatibleQosStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_policy_id = static_cast <DDS_QosPolicyId_t>(status.last_policy_id);
+ ddsstatus.policies <<= status.policies;
+}
+
+#endif
+
+#endif /* DDS4CCM_OFFEREDINCOMPATIBLEQOSSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipQosPolicy.h
new file mode 100644
index 00000000000..eec42c30ed1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_OWNERSHIPQOSPOLICY_H
+#define DDS4CCM_OWNERSHIPQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::OwnershipQosPolicy DDS_OwnershipQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::OwnershipQosPolicy &ddsqos, const ::DDS_OwnershipQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::OwnershipQosPolicyKind> (qos.kind);
+}
+
+inline void
+operator<<= (::DDS_OwnershipQosPolicy &ddsqos, const ::DDS::OwnershipQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_OwnershipQosPolicyKind> (qos.kind);
+}
+
+#endif
+
+#endif /* DDS4CCM_OWNERSHIPQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipStrengthQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipStrengthQosPolicy.h
new file mode 100644
index 00000000000..77401f1d9e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/OwnershipStrengthQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_OWNERSHIPSTRENGTHQOSPOLICY_H
+#define DDS4CCM_OWNERSHIPSTRENGTHQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::OwnershipStrengthQosPolicy DDS_OwnershipStrengthQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::OwnershipStrengthQosPolicy &ddsqos, const ::DDS_OwnershipStrengthQosPolicy & qos)
+{
+ ddsqos.value = qos.value;
+}
+
+inline void
+operator<<= (::DDS_OwnershipStrengthQosPolicy &ddsqos, const ::DDS::OwnershipStrengthQosPolicy & qos)
+{
+ ddsqos.value = qos.value;
+}
+
+#endif
+
+#endif /* DDS4CCM_OWNERSHIPSTRENGTHQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PartitionQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PartitionQosPolicy.h
new file mode 100644
index 00000000000..0059665c277
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PartitionQosPolicy.h
@@ -0,0 +1,35 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PARTITIONQOSPOLICY_H
+#define DDS4CCM_PARTITIONQOSPOLICY_H
+
+#include "StringSeq.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::PartitionQosPolicy DDS_PartitionQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::PartitionQosPolicy &ddsqos, const ::DDS_PartitionQosPolicy & qos)
+{
+ ddsqos.name <<= qos.name;
+}
+
+inline void
+operator<<= (::DDS_PartitionQosPolicy &ddsqos, const ::DDS::PartitionQosPolicy & qos)
+{
+ ddsqos.name <<= qos.name;
+}
+
+#endif
+
+#endif /* DDS4CCM_PARTITIONQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PresentationQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PresentationQosPolicy.h
new file mode 100644
index 00000000000..7d5ab4fc283
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PresentationQosPolicy.h
@@ -0,0 +1,37 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PRESENTATIONQOSPOLICY_H
+#define DDS4CCM_PRESENTATIONQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::PresentationQosPolicy DDS_PresentationQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::PresentationQosPolicy &ddsqos, const ::DDS_PresentationQosPolicy & qos)
+{
+ ddsqos.access_scope = static_cast < ::DDS::PresentationQosPolicyAccessScopeKind> (qos.access_scope);
+ ddsqos.coherent_access = qos.coherent_access;
+ ddsqos.ordered_access = qos.ordered_access;
+}
+
+inline void
+operator<<= (::DDS_PresentationQosPolicy &ddsqos, const ::DDS::PresentationQosPolicy & qos)
+{
+ ddsqos.access_scope = static_cast < DDS_PresentationQosPolicyAccessScopeKind> (qos.access_scope);
+ ddsqos.coherent_access = qos.coherent_access;
+ ddsqos.ordered_access = qos.ordered_access;
+}
+
+#endif
+
+#endif /* DDS4CCM_PRESENTATIONQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationBuiltinTopicData.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationBuiltinTopicData.h
new file mode 100644
index 00000000000..ce578f36e82
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationBuiltinTopicData.h
@@ -0,0 +1,81 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ */
+
+#ifndef PUBLICATIONBUILTINTOPICDATA_H_
+#define PUBLICATIONBUILTINTOPICDATA_H_
+
+#include "BuiltinTopicKey_t.h"
+#include "DurabilityQosPolicy.h"
+#include "DurabilityServiceQosPolicy.h"
+#include "DeadlineQosPolicy.h"
+#include "LatencyBudgetQosPolicy.h"
+#include "LivelinessQosPolicy.h"
+#include "ReliabilityQosPolicy.h"
+#include "LifespanQosPolicy.h"
+#include "UserDataQosPolicy.h"
+#include "OwnershipQosPolicy.h"
+#include "OwnershipStrengthQosPolicy.h"
+#include "DestinationOrderQosPolicy.h"
+#include "PresentationQosPolicy.h"
+#include "PartitionQosPolicy.h"
+#include "TopicDataQosPolicy.h"
+#include "GroupDataQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::PublicationBuiltinTopicData &ddstopicdata, const ::DDS_PublicationBuiltinTopicData & topicdata)
+{
+ ddstopicdata.key <<= topicdata.key;
+ ddstopicdata.participant_key <<= topicdata.participant_key;
+ ddstopicdata.topic_name = topicdata.topic_name;
+ ddstopicdata.type_name = topicdata.type_name;
+ ddstopicdata.durability <<= topicdata.durability;
+ ddstopicdata.durability_service <<= topicdata.durability_service;
+ ddstopicdata.deadline <<= topicdata.deadline;
+ ddstopicdata.latency_budget <<= topicdata.latency_budget;
+ ddstopicdata.liveliness <<= topicdata.liveliness;
+ ddstopicdata.reliability <<= topicdata.reliability;
+ ddstopicdata.lifespan <<= topicdata.lifespan;
+ ddstopicdata.user_data <<= topicdata.user_data;
+ ddstopicdata.ownership <<= topicdata.ownership;
+ ddstopicdata.ownership_strength <<= topicdata.ownership_strength;
+ ddstopicdata.destination_order <<= topicdata.destination_order;
+ ddstopicdata.presentation <<= topicdata.presentation;
+ ddstopicdata.partition <<= topicdata.partition;
+ ddstopicdata.topic_data <<= topicdata.topic_data;
+ ddstopicdata.group_data <<= topicdata.group_data;
+}
+
+inline void
+operator<<= (::DDS_PublicationBuiltinTopicData & ddstopicdata, const ::DDS::PublicationBuiltinTopicData & topicdata)
+{
+ ddstopicdata.key <<= topicdata.key;
+ ddstopicdata.participant_key <<= topicdata.participant_key;
+ ddstopicdata.topic_name = CORBA::string_dup (topicdata.topic_name);
+ ddstopicdata.type_name = CORBA::string_dup (topicdata.type_name);
+ ddstopicdata.durability <<= topicdata.durability;
+ ddstopicdata.durability_service <<= topicdata.durability_service;
+ ddstopicdata.deadline <<= topicdata.deadline;
+ ddstopicdata.latency_budget <<= topicdata.latency_budget;
+ ddstopicdata.liveliness <<= topicdata.liveliness;
+ ddstopicdata.reliability <<= topicdata.reliability;
+ ddstopicdata.lifespan <<= topicdata.lifespan;
+ ddstopicdata.user_data <<= topicdata.user_data;
+ ddstopicdata.ownership <<= topicdata.ownership;
+ ddstopicdata.ownership_strength <<= topicdata.ownership_strength;
+ ddstopicdata.destination_order <<= topicdata.destination_order;
+ ddstopicdata.presentation <<= topicdata.presentation;
+ ddstopicdata.partition <<= topicdata.partition;
+ ddstopicdata.topic_data <<= topicdata.topic_data;
+ ddstopicdata.group_data <<= topicdata.group_data;
+}
+
+#endif
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationMatchedStatus.h
new file mode 100644
index 00000000000..2374f58d2c2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublicationMatchedStatus.h
@@ -0,0 +1,43 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PUBLICATIONMATCHEDSTATUS_H
+#define DDS4CCM_PUBLICATIONMATCHEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::PublicationMatchedStatus DDS_PublicationMatchedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::PublicationMatchedStatus &ddsstatus, const ::DDS_PublicationMatchedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.current_count = status.current_count;
+ ddsstatus.current_count_change = status.current_count_change;
+ ddsstatus.last_subscription_handle <<= status.last_subscription_handle;
+}
+
+inline void
+operator<<= (::DDS_PublicationMatchedStatus &ddsstatus, const ::DDS::PublicationMatchedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.current_count = status.current_count;
+ ddsstatus.current_count_change = status.current_count_change;
+ ddsstatus.last_subscription_handle <<= status.last_subscription_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_PUBLICATIONMATCHEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublisherQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublisherQos.h
new file mode 100644
index 00000000000..6a129795137
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/PublisherQos.h
@@ -0,0 +1,44 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PUBLISHERQOS_H
+#define DDS4CCM_PUBLISHERQOS_H
+
+#include "PresentationQosPolicy.h"
+#include "PartitionQosPolicy.h"
+#include "GroupDataQosPolicy.h"
+#include "EntityFactoryQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::PublisherQos DDS_PublisherQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::PublisherQos &ddsqos, const ::DDS_PublisherQos & qos)
+{
+ ddsqos.presentation <<= qos.presentation;
+ ddsqos.partition <<= qos.partition;
+ ddsqos.group_data <<= qos.group_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+inline void
+operator<<= (::DDS_PublisherQos &ddsqos, const ::DDS::PublisherQos & qos)
+{
+ ddsqos.presentation <<= qos.presentation;
+ ddsqos.partition <<= qos.partition;
+ ddsqos.group_data <<= qos.group_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+#endif
+
+#endif /* DDS4CCM_PUBLISHERQOS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/QosPolicyCountSeq.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/QosPolicyCountSeq.h
new file mode 100644
index 00000000000..5a6224d84a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/QosPolicyCountSeq.h
@@ -0,0 +1,44 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_QOSPOLICYCOUNTSEQ_H
+#define DDS4CCM_QOSPOLICYCOUNTSEQ_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::QosPolicyCountSeq DDS_QosPolicyCountSeq;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::QosPolicyCountSeq & ddspolicycount, const ::DDS_QosPolicyCountSeq & policycount)
+{
+ ddspolicycount.length (policycount.length ());
+ for (::DDS_Long i = 0 ; i < policycount.length (); ++i)
+ {
+ ddspolicycount[i].policy_id = policycount[i].policy_id;
+ ddspolicycount[i].count = policycount[i].count;
+ }
+}
+
+inline void
+operator<<= (::DDS_QosPolicyCountSeq & ddspolicycount, const ::DDS::QosPolicyCountSeq & policycount)
+{
+ ddspolicycount.length (policycount.length ());
+ for (::CORBA::ULong i = 0 ; i < policycount.length (); ++i)
+ {
+ ddspolicycount[i].policy_id = static_cast <DDS_QosPolicyId_t> (policycount[i].policy_id);
+ ddspolicycount[i].count = policycount[i].count;
+ }
+}
+
+#endif
+
+#endif /* DDS4CCM_QOSPOLICYCOUNTSEQ_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReaderDataLifecycleQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReaderDataLifecycleQosPolicy.h
new file mode 100644
index 00000000000..8d0ab08b72a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReaderDataLifecycleQosPolicy.h
@@ -0,0 +1,38 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_READERDATALIFECYCLEQOSPOLICY_H
+#define DDS4CCM_READERDATALIFECYCLEQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ReaderDataLifecycleQosPolicy DDS_ReaderDataLifecycleQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+
+#include "Duration_t.h"
+
+inline void
+operator<<= (::DDS::ReaderDataLifecycleQosPolicy &ddsqos, const ::DDS_ReaderDataLifecycleQosPolicy & qos)
+{
+ ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay;
+ ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay;
+}
+
+inline void
+operator<<= (::DDS_ReaderDataLifecycleQosPolicy &ddsqos, const ::DDS::ReaderDataLifecycleQosPolicy & qos)
+{
+ ddsqos.autopurge_nowriter_samples_delay <<= qos.autopurge_nowriter_samples_delay;
+ ddsqos.autopurge_disposed_samples_delay <<= qos.autopurge_disposed_samples_delay;
+}
+
+#endif
+
+#endif /* DDS4CCM_READERDATALIFECYCLEQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliabilityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliabilityQosPolicy.h
new file mode 100644
index 00000000000..d4253585857
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliabilityQosPolicy.h
@@ -0,0 +1,36 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_RELIABILITYSQOSPOLICY_H
+#define DDS4CCM_RELIABILITYSQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ReliabilityQosPolicy DDS_ReliabilityQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::ReliabilityQosPolicy &ddsqos, const ::DDS_ReliabilityQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS::ReliabilityQosPolicyKind> (qos.kind);
+ ddsqos.max_blocking_time <<= qos.max_blocking_time;
+}
+
+inline void
+operator<<= (::DDS_ReliabilityQosPolicy &ddsqos, const ::DDS::ReliabilityQosPolicy & qos)
+{
+ ddsqos.kind = static_cast < ::DDS_ReliabilityQosPolicyKind> (qos.kind);
+ ddsqos.max_blocking_time <<= qos.max_blocking_time;
+}
+
+#endif
+
+#endif /* DDS4CCM_RELIABILITYSQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableReaderActivityChangedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableReaderActivityChangedStatus.h
new file mode 100644
index 00000000000..113a27393a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableReaderActivityChangedStatus.h
@@ -0,0 +1,42 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_RELIABLEREADERACTIVITYCHANGEDSTATUS_H
+#define DDS4CCM_RELIABLEREADERACTIVITYCHANGEDSTATUS_H
+
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ReliableReaderActivityChangedStatus DDS_ReliableReaderActivityChangedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::ReliableReaderActivityChangedStatus &ddsstatus, const ::DDS_ReliableReaderActivityChangedStatus & status)
+{
+ ddsstatus.active_count = status.active_count;
+ ddsstatus.active_count_change = status.active_count_change;
+ ddsstatus.inactive_count = status.inactive_count;
+ ddsstatus.inactive_count_change = status.inactive_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+inline void
+operator<<= (::DDS_ReliableReaderActivityChangedStatus &ddsstatus, const ::DDS::ReliableReaderActivityChangedStatus & status)
+{
+ ddsstatus.active_count = status.active_count;
+ ddsstatus.active_count_change = status.active_count_change;
+ ddsstatus.inactive_count = status.inactive_count;
+ ddsstatus.inactive_count_change = status.inactive_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_RELIABLEREADERACTIVITYCHANGEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableWriterCacheChangedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableWriterCacheChangedStatus.h
new file mode 100644
index 00000000000..31e8653b8be
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ReliableWriterCacheChangedStatus.h
@@ -0,0 +1,51 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_RELIABLEWRITERCACHECHANGEDSTATUS_H
+#define DDS4CCM_RELIABLEWRITERCACHECHANGEDSTATUS_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ReliableWriterCacheChangedStatus DDS_ReliableWriterCacheChangedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::ReliableWriterCacheChangedStatus &ddsstatus, const ::DDS_ReliableWriterCacheChangedStatus & status)
+{
+ ddsstatus.empty_reliable_writer_cache.total_count = status.empty_reliable_writer_cache.total_count;
+ ddsstatus.empty_reliable_writer_cache.total_count_change = status.empty_reliable_writer_cache.total_count_change;
+ ddsstatus.full_reliable_writer_cache.total_count = status.full_reliable_writer_cache.total_count;
+ ddsstatus.full_reliable_writer_cache.total_count_change = status.full_reliable_writer_cache.total_count_change;
+ ddsstatus.low_watermark_reliable_writer_cache.total_count = status.low_watermark_reliable_writer_cache.total_count;
+ ddsstatus.low_watermark_reliable_writer_cache.total_count_change = status.low_watermark_reliable_writer_cache.total_count_change;
+ ddsstatus.high_watermark_reliable_writer_cache.total_count = status.high_watermark_reliable_writer_cache.total_count;
+ ddsstatus.high_watermark_reliable_writer_cache.total_count_change = status.high_watermark_reliable_writer_cache.total_count_change;
+ ddsstatus.unacknowledged_sample_count = status.unacknowledged_sample_count;
+ ddsstatus.unacknowledged_sample_count_peak = status.unacknowledged_sample_count_peak;
+}
+
+inline void
+operator<<= (::DDS_ReliableWriterCacheChangedStatus &ddsstatus, const ::DDS::ReliableWriterCacheChangedStatus & status)
+{
+ ddsstatus.empty_reliable_writer_cache.total_count = status.empty_reliable_writer_cache.total_count;
+ ddsstatus.empty_reliable_writer_cache.total_count_change = status.empty_reliable_writer_cache.total_count_change;
+ ddsstatus.full_reliable_writer_cache.total_count = status.full_reliable_writer_cache.total_count;
+ ddsstatus.full_reliable_writer_cache.total_count_change = status.full_reliable_writer_cache.total_count_change;
+ ddsstatus.low_watermark_reliable_writer_cache.total_count = status.low_watermark_reliable_writer_cache.total_count;
+ ddsstatus.low_watermark_reliable_writer_cache.total_count_change = status.low_watermark_reliable_writer_cache.total_count_change;
+ ddsstatus.high_watermark_reliable_writer_cache.total_count = status.high_watermark_reliable_writer_cache.total_count;
+ ddsstatus.high_watermark_reliable_writer_cache.total_count_change = status.high_watermark_reliable_writer_cache.total_count_change;
+ ddsstatus.unacknowledged_sample_count = status.unacknowledged_sample_count;
+ ddsstatus.unacknowledged_sample_count_peak = status.unacknowledged_sample_count_peak;
+}
+
+#endif
+
+#endif /* DDS4CCM_RELIABLEWRITERCACHECHANGEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedDeadlineMissedStatus.h
new file mode 100644
index 00000000000..9d26f544d4b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedDeadlineMissedStatus.h
@@ -0,0 +1,38 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_REQUESTEDDEADLINEMISSEDSTATUS_H
+#define DDS4CCM_REQUESTEDDEADLINEMISSEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::RequestedDeadlineMissedStatus DDS_RequestedDeadlineMissedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::RequestedDeadlineMissedStatus &ddsstatus, const ::DDS_RequestedDeadlineMissedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+inline void
+operator<<= (::DDS_RequestedDeadlineMissedStatus &ddsstatus, const ::DDS::RequestedDeadlineMissedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_REQUESTEDDEADLINEMISSEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedIncompatibleQosStatus.h
new file mode 100644
index 00000000000..d36b9d7da1c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/RequestedIncompatibleQosStatus.h
@@ -0,0 +1,41 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_REQUESTEDINCOMPATIBLEQOSSTATUS_H
+#define DDS4CCM_REQUESTEDINCOMPATIBLEQOSSTATUS_H
+
+#include "QosPolicyCountSeq.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::RequestedIncompatibleQosStatus DDS_RequestedIncompatibleQosStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::RequestedIncompatibleQosStatus &ddsstatus, const ::DDS_RequestedIncompatibleQosStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_policy_id = status.last_policy_id;
+ ddsstatus.policies <<= status.policies;
+}
+
+inline void
+operator<<= (::DDS_RequestedIncompatibleQosStatus &ddsstatus, const ::DDS::RequestedIncompatibleQosStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_policy_id = static_cast <DDS_QosPolicyId_t>(status.last_policy_id);
+ ddsstatus.policies <<= status.policies;
+}
+
+#endif
+
+#endif /* DDS4CCM_REQUESTEDINCOMPATIBLEQOSSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ResourceLimitsQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ResourceLimitsQosPolicy.h
new file mode 100644
index 00000000000..f7d2f2dd1f0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/ResourceLimitsQosPolicy.h
@@ -0,0 +1,37 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_RESOURCELIMITSQOSPOLICY_H
+#define DDS4CCM_RESOURCELIMITSQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::ResourceLimitsQosPolicy DDS_ResourceLimitsQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::ResourceLimitsQosPolicy &ddsqos, const ::DDS_ResourceLimitsQosPolicy & qos)
+{
+ ddsqos.max_samples = qos.max_samples;
+ ddsqos.max_instances = qos.max_instances;
+ ddsqos.max_samples_per_instance = qos.max_samples_per_instance;
+}
+
+inline void
+operator<<= (::DDS_ResourceLimitsQosPolicy &ddsqos, const ::DDS::ResourceLimitsQosPolicy & qos)
+{
+ ddsqos.max_samples = qos.max_samples;
+ ddsqos.max_instances = qos.max_instances;
+ ddsqos.max_samples_per_instance = qos.max_samples_per_instance;
+}
+
+#endif
+
+#endif /* DDS4CCM_RESOURCELIMITSQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleInfo.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleInfo.h
new file mode 100644
index 00000000000..5b1122e1db8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleInfo.h
@@ -0,0 +1,71 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef SAMPLE_INFO_H
+#define SAMPLE_INFO_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#include "Time_t.h"
+#include "InstanceHandle_t.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SampleStateKind DDS_SampleStateKind;
+typedef ::DDS::SampleInfo DDS_SampleInfo;
+#endif
+
+inline void
+operator<<= (::CCM_DDS::AccessStatus & access_status, const ::DDS_SampleStateKind & sample_state)
+{
+ if (sample_state == ::DDS::NOT_READ_SAMPLE_STATE)
+ {
+ access_status = ::CCM_DDS::FRESH_INFO;
+ }
+ else if (sample_state == ::DDS::READ_SAMPLE_STATE)
+ {
+ access_status = ::CCM_DDS::ALREADY_SEEN;
+ }
+}
+
+inline void
+operator<<= (::CCM_DDS::ReadInfo& ccm_dds_readinfo, const ::DDS_SampleInfo& sample_info)
+{
+#if (CIAO_DDS4CCM_NDDS==1)
+ ccm_dds_readinfo.source_timestamp <<= sample_info.source_timestamp;
+#else
+ ccm_dds_readinfo.source_timestamp = sample_info.source_timestamp;
+#endif
+ ccm_dds_readinfo.access_status <<= sample_info.sample_state;
+#if (CIAO_DDS4CCM_NDDS==1)
+ ccm_dds_readinfo.instance_handle <<= sample_info.instance_handle;
+#else
+ ccm_dds_readinfo.instance_handle = sample_info.instance_handle;
+#endif
+
+ if (sample_info.instance_state == ::DDS::ALIVE_INSTANCE_STATE &&
+ sample_info.view_state == ::DDS::NEW_VIEW_STATE)
+ {
+ // Instance_status new
+ ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_CREATED;
+ }
+ else if (sample_info.instance_state == ::DDS::NOT_ALIVE_DISPOSED_INSTANCE_STATE)
+ {
+ // Instance_status deleted
+ ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_DELETED;
+ }
+ else if ((sample_info.instance_state == ::DDS::ALIVE_INSTANCE_STATE &&
+ sample_info.view_state == ::DDS::NOT_NEW_VIEW_STATE) ||
+ sample_info.instance_state == ::DDS::NOT_ALIVE_NO_WRITERS_INSTANCE_STATE)
+ {
+ // Instance_status updated
+ ccm_dds_readinfo.instance_status = ::CCM_DDS::INSTANCE_UPDATED;
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleLostStatus.h
new file mode 100644
index 00000000000..6191c745c17
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleLostStatus.h
@@ -0,0 +1,36 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SAMPLELOSTSTATUS_H
+#define DDS4CCM_SAMPLELOSTSTATUS_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SampleLostStatus DDS_SampleLostStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::SampleLostStatus &ddsstatus, const ::DDS_SampleLostStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+inline void
+operator>>= (const ::DDS_SampleLostStatus &status, ::DDS::SampleLostStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+#endif
+
+#endif /* DDS4CCM_SAMPLELOSTSTATUS_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleRejectedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleRejectedStatus.h
new file mode 100644
index 00000000000..2467b100e13
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SampleRejectedStatus.h
@@ -0,0 +1,41 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SAMPLEREJECTEDSTATUS_H
+#define DDS4CCM_SAMPLEREJECTEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SampleRejectedStatus DDS_SampleRejectedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::SampleRejectedStatus &ddsstatus, const ::DDS_SampleRejectedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_reason = static_cast < ::DDS::SampleRejectedStatusKind> (status.last_reason);
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+inline void
+operator<<= (::DDS_SampleRejectedStatus &ddsstatus, const ::DDS::SampleRejectedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_reason = static_cast < ::DDS_SampleRejectedStatusKind> (status.last_reason);
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_SAMPLEREJECTEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/StringSeq.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/StringSeq.h
new file mode 100644
index 00000000000..6fcc769b4f2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/StringSeq.h
@@ -0,0 +1,45 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ */
+
+#ifndef DDS4CCM_STRINGSEQ_T_H
+#define DDS4CCM_STRINGSEQ_T_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::StringSeq DDS_StringSeq;
+typedef long DDS_Long;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::StringSeq & string_seq, const ::DDS_StringSeq & dds_string_seq)
+{
+ string_seq.length (dds_string_seq.length ());
+ for (::DDS_Long i = 0 ; i < dds_string_seq.length(); ++i)
+ {
+ string_seq[i] = CORBA::string_dup (dds_string_seq[i]);
+ }
+}
+
+inline void
+operator<<= (::DDS_StringSeq & dds_string_seq, const ::DDS::StringSeq & string_seq)
+{
+ const char** parameterlist = new const char*[string_seq.length ()];
+
+ for (CORBA::ULong i = 0; i < string_seq.length (); ++i)
+ {
+ parameterlist[i] = string_seq[i].in ();
+ }
+ dds_string_seq.length (string_seq.length ());
+ dds_string_seq.from_array (parameterlist, string_seq.length ());
+ delete [] parameterlist;
+}
+#endif
+
+#endif /* DDS4CCM_STRINGSEQ_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriberQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriberQos.h
new file mode 100644
index 00000000000..9741f0b9682
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriberQos.h
@@ -0,0 +1,44 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SUBSCRIBERQOS_H
+#define DDS4CCM_SUBSCRIBERQOS_H
+
+#include "EntityFactoryQosPolicy.h"
+#include "GroupDataQosPolicy.h"
+#include "PartitionQosPolicy.h"
+#include "PresentationQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SubscriberQos DDS_SubscriberQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::SubscriberQos &ddsqos, const ::DDS_SubscriberQos & qos)
+{
+ ddsqos.presentation <<= qos.presentation;
+ ddsqos.partition <<= qos.partition;
+ ddsqos.group_data <<= qos.group_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+inline void
+operator<<= (::DDS_SubscriberQos &ddsqos, const ::DDS::SubscriberQos & qos)
+{
+ ddsqos.presentation <<= qos.presentation;
+ ddsqos.partition <<= qos.partition;
+ ddsqos.group_data <<= qos.group_data;
+ ddsqos.entity_factory <<= qos.entity_factory;
+}
+
+#endif
+
+#endif /* DDS4CCM_SUBSCRIBERQOS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionBuiltinTopicData.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionBuiltinTopicData.h
new file mode 100644
index 00000000000..06f39b23e4b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionBuiltinTopicData.h
@@ -0,0 +1,80 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ */
+
+#ifndef SUBSCRIPTIONBUILTINTOPICDATA_H_
+#define SUBSCRIPTIONBUILTINTOPICDATA_H_
+
+#include "BuiltinTopicKey_t.h"
+#include "DurabilityQosPolicy.h"
+#include "DeadlineQosPolicy.h"
+#include "LatencyBudgetQosPolicy.h"
+#include "LivelinessQosPolicy.h"
+#include "ReliabilityQosPolicy.h"
+#include "OwnershipQosPolicy.h"
+#include "OwnershipStrengthQosPolicy.h"
+#include "DestinationOrderQosPolicy.h"
+#include "UserDataQosPolicy.h"
+#include "TimeBasedFilterQosPolicy.h"
+#include "PresentationQosPolicy.h"
+#include "PartitionQosPolicy.h"
+#include "TopicDataQosPolicy.h"
+#include "GroupDataQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::SubscriptionBuiltinTopicData &ddstopicdata, const ::DDS_SubscriptionBuiltinTopicData & topicdata)
+{
+ ddstopicdata.key <<= topicdata.key;
+ ddstopicdata.participant_key <<= topicdata.participant_key;
+ ddstopicdata.topic_name = topicdata.topic_name;
+ ddstopicdata.type_name = topicdata.type_name;
+
+ ddstopicdata.durability <<= topicdata.durability;
+ ddstopicdata.deadline <<= topicdata.deadline;
+ ddstopicdata.latency_budget <<= topicdata.latency_budget;
+ ddstopicdata.liveliness <<= topicdata.liveliness;
+ ddstopicdata.reliability <<= topicdata.reliability;
+ ddstopicdata.ownership <<= topicdata.ownership;
+ ddstopicdata.destination_order <<= topicdata.destination_order;
+ ddstopicdata.user_data <<= topicdata.user_data;
+ ddstopicdata.time_based_filter <<= topicdata.time_based_filter;
+
+ ddstopicdata.presentation <<= topicdata.presentation;
+ ddstopicdata.partition <<= topicdata.partition;
+ ddstopicdata.topic_data <<= topicdata.topic_data;
+ ddstopicdata.group_data <<= topicdata.group_data;
+}
+
+inline void
+operator<<= (::DDS_SubscriptionBuiltinTopicData & ddstopicdata, const ::DDS::SubscriptionBuiltinTopicData & topicdata)
+{
+ ddstopicdata.key <<= topicdata.key;
+ ddstopicdata.participant_key <<= topicdata.participant_key;
+ ddstopicdata.topic_name = CORBA::string_dup (topicdata.topic_name);
+ ddstopicdata.type_name = CORBA::string_dup (topicdata.type_name);
+
+ ddstopicdata.durability <<= topicdata.durability;
+ ddstopicdata.deadline <<= topicdata.deadline;
+ ddstopicdata.latency_budget <<= topicdata.latency_budget;
+ ddstopicdata.liveliness <<= topicdata.liveliness;
+ ddstopicdata.reliability <<= topicdata.reliability;
+ ddstopicdata.ownership <<= topicdata.ownership;
+ ddstopicdata.destination_order <<= topicdata.destination_order;
+ ddstopicdata.user_data <<= topicdata.user_data;
+ ddstopicdata.time_based_filter <<= topicdata.time_based_filter;
+
+ ddstopicdata.presentation <<= topicdata.presentation;
+ ddstopicdata.partition <<= topicdata.partition;
+ ddstopicdata.topic_data <<= topicdata.topic_data;
+ ddstopicdata.group_data <<= topicdata.group_data;
+}
+
+#endif
+
+#endif /* SUBSCRIPTIONBUILTINTOPICDATA_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionMatchedStatus.h
new file mode 100644
index 00000000000..a8d02d7a24d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/SubscriptionMatchedStatus.h
@@ -0,0 +1,44 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_SUBSCRIPTIONMATCHEDSTATUS_H
+#define DDS4CCM_SUBSCRIPTIONMATCHEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::SubscriptionMatchedStatus DDS_SubscriptionMatchedStatus;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::SubscriptionMatchedStatus &ddsstatus, const ::DDS_SubscriptionMatchedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.current_count = status.current_count;
+ ddsstatus.current_count_change = status.current_count_change;
+ ddsstatus.last_publication_handle <<= status.last_publication_handle;
+}
+
+inline void
+operator<<= (::DDS_SubscriptionMatchedStatus &ddsstatus, const ::DDS::SubscriptionMatchedStatus & status)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.current_count = status.current_count;
+ ddsstatus.current_count_change = status.current_count_change;
+ ddsstatus.last_publication_handle <<= status.last_publication_handle;
+}
+
+#endif
+
+#endif /* DDS4CCM_SUBSCRIPTIONMATCHEDSTATUS_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TimeBasedFilterQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TimeBasedFilterQosPolicy.h
new file mode 100644
index 00000000000..dfb3f711249
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TimeBasedFilterQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TIMEBASEDFILTERQOSPOLICY_H
+#define DDS4CCM_TIMEBASEDFILTERQOSPOLICY_H
+
+#include "Duration_t.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TimeBasedFilterQosPolicy DDS_TimeBasedFilterQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::TimeBasedFilterQosPolicy &ddsqos, const ::DDS_TimeBasedFilterQosPolicy & qos)
+{
+ ddsqos.minimum_separation <<= qos.minimum_separation;
+}
+
+inline void
+operator<<= (::DDS_TimeBasedFilterQosPolicy &ddsqos, const ::DDS::TimeBasedFilterQosPolicy & qos)
+{
+ ddsqos.minimum_separation <<= qos.minimum_separation;
+}
+
+#endif
+
+#endif /* DDS4CCM_TIMEBASEDFILTERQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Time_t.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Time_t.h
new file mode 100644
index 00000000000..c9c62c27372
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/Time_t.h
@@ -0,0 +1,37 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TIME_T_H
+#define DDS4CCM_TIME_T_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::Time_t DDS_Time_t;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::Time_t &ddstime, const ::DDS_Time_t & time)
+{
+ ddstime.sec = time.sec;
+ ddstime.nanosec = time.nanosec;
+}
+
+inline void
+operator<<= (::DDS_Time_t &ddstime, const ::DDS::Time_t & time)
+{
+ ddstime.sec = time.sec;
+ ddstime.nanosec = time.nanosec;
+}
+
+#endif
+
+#endif /* DDS4CCM_TIME_T_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicDataQosPolicy.h
new file mode 100644
index 00000000000..394b201ff77
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicDataQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TOPICDATAQOSPOLICY_H
+#define DDS4CCM_TOPICDATAQOSPOLICY_H
+
+#include "OctetSeq.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TopicDataQosPolicy DDS_TopicDataQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::TopicDataQosPolicy &ddsqos, const ::DDS_TopicDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+inline void
+operator<<= (::DDS_TopicDataQosPolicy &ddsqos, const ::DDS::TopicDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+#endif
+
+#endif /* DDS4CCM_TOPICDATAQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicQos.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicQos.h
new file mode 100644
index 00000000000..1cbc53d2b4b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TopicQos.h
@@ -0,0 +1,71 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TOPICQOS_H
+#define DDS4CCM_TOPICQOS_H
+
+#include "TopicDataQosPolicy.h"
+#include "DurabilityQosPolicy.h"
+#include "DurabilityServiceQosPolicy.h"
+#include "DeadlineQosPolicy.h"
+#include "LatencyBudgetQosPolicy.h"
+#include "LivelinessQosPolicy.h"
+#include "ReliabilityQosPolicy.h"
+#include "DestinationOrderQosPolicy.h"
+#include "HistoryQosPolicy.h"
+#include "ResourceLimitsQosPolicy.h"
+#include "TransportPriorityQosPolicy.h"
+#include "LifespanQosPolicy.h"
+#include "OwnershipQosPolicy.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TopicQos DDS_TopicQos;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::TopicQos &ddsqos, const ::DDS_TopicQos & qos)
+{
+ ddsqos.topic_data <<= qos.topic_data;
+ ddsqos.durability <<= qos.durability;
+ ddsqos.durability_service <<= qos.durability_service;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.transport_priority <<= qos.transport_priority;
+ ddsqos.lifespan <<= qos.lifespan;
+ ddsqos.ownership <<= qos.ownership;
+}
+
+inline void
+operator<<= (::DDS_TopicQos &ddsqos, const ::DDS::TopicQos & qos)
+{
+ ddsqos.topic_data <<= qos.topic_data;
+ ddsqos.durability <<= qos.durability;
+ ddsqos.durability_service <<= qos.durability_service;
+ ddsqos.deadline <<= qos.deadline;
+ ddsqos.latency_budget <<= qos.latency_budget;
+ ddsqos.liveliness <<= qos.liveliness;
+ ddsqos.reliability <<= qos.reliability;
+ ddsqos.destination_order <<= qos.destination_order;
+ ddsqos.history <<= qos.history;
+ ddsqos.resource_limits <<= qos.resource_limits;
+ ddsqos.transport_priority <<= qos.transport_priority;
+ ddsqos.lifespan <<= qos.lifespan;
+ ddsqos.ownership <<= qos.ownership;
+}
+
+#endif
+
+#endif /* DDS4CCM_TOPICQOS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TransportPriorityQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TransportPriorityQosPolicy.h
new file mode 100644
index 00000000000..3116b5f5bb5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/TransportPriorityQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_TRANSPORTPRIOTITYQOSPOLICY_H
+#define DDS4CCM_TRANSPORTPRIOTITYQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::TransportPriorityQosPolicy DDS_TransportPriorityQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::TransportPriorityQosPolicy &ddsqos, const ::DDS_TransportPriorityQosPolicy & qos)
+{
+ ddsqos.value = qos.value;
+}
+
+inline void
+operator<<= (::DDS_TransportPriorityQosPolicy &ddsqos, const ::DDS::TransportPriorityQosPolicy & qos)
+{
+ ddsqos.value = qos.value;
+}
+
+#endif
+
+#endif /* DDS4CCM_TRANSPORTPRIOTITYQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/UserDataQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/UserDataQosPolicy.h
new file mode 100644
index 00000000000..9e4dc792d5d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/UserDataQosPolicy.h
@@ -0,0 +1,34 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_USERDATAQOSPOLICY_H
+#define DDS4CCM_USERDATAQOSPOLICY_H
+
+#include "OctetSeq.h"
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::UserDataQosPolicy DDS_UserDataQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::UserDataQosPolicy &ddsqos, const ::DDS_UserDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+inline void
+operator<<= (::DDS_UserDataQosPolicy &ddsqos, const ::DDS::UserDataQosPolicy & qos)
+{
+ ddsqos.value <<= qos.value;
+}
+
+#endif
+
+#endif /* DDS4CCM_USERDATAQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/WriterDataLifecycleQosPolicy.h b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/WriterDataLifecycleQosPolicy.h
new file mode 100644
index 00000000000..6cecbb95c45
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds/ndds/WriterDataLifecycleQosPolicy.h
@@ -0,0 +1,33 @@
+/**
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_WRITERDATALIFECYCLEQOSPOLICY_H
+#define DDS4CCM_WRITERDATALIFECYCLEQOSPOLICY_H
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#if (CIAO_DDS4CCM_OPENDDS==1)
+typedef ::DDS::WriterDataLifecycleQosPolicy DDS_WriterDataLifecycleQosPolicy;
+#endif
+
+#if (CIAO_DDS4CCM_NDDS==1)
+inline void
+operator<<= (::DDS::WriterDataLifecycleQosPolicy &ddsqos, const ::DDS_WriterDataLifecycleQosPolicy & qos)
+{
+ ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances;
+}
+
+inline void
+operator<<= (::DDS_WriterDataLifecycleQosPolicy &ddsqos, const ::DDS::WriterDataLifecycleQosPolicy & qos)
+{
+ ddsqos.autodispose_unregistered_instances = qos.autodispose_unregistered_instances;
+}
+
+#endif
+
+#endif /* DDS4CCM_WRITERDATALIFECYCLEQOSPOLICY_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/dds4ccm_conf.h b/modules/CIAO/connectors/dds4ccm/impl/dds4ccm_conf.h
new file mode 100644
index 00000000000..11ac69e581a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/dds4ccm_conf.h
@@ -0,0 +1,26 @@
+/**
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * $Id$
+ *
+ * Configuration file for DDS4CCM.
+ */
+
+#ifndef DDS4CCM_CONF_H_
+#define DDS4CCM_CONF_H_
+
+/// Defines whether the Reader uses a QueryCondition.
+/// If not, it uses a ContentFilteredTopic.
+#if !defined (DDS4CCM_USES_QUERY_CONDITION)
+# define DDS4CCM_USES_QUERY_CONDITION 0
+#endif /* DDS4CCM_USES_QUERY_CONDITION */
+
+/// Defines whether DDS4CCM does a thread switch when
+/// a DDS callback has been received. If this is not
+/// defined, DDS4CCM uses the DDS thread to handle the
+/// callbacks.
+#if !defined (CIAO_DDS4CCM_CONTEXT_SWITCH)
+# define CIAO_DDS4CCM_CONTEXT_SWITCH 1
+#endif /* CIAO_DDS4CCM_CONTEXT_SWITCH */
+
+#endif /* DDS4CCM_CONF_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.cpp b/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.cpp
new file mode 100644
index 00000000000..f0ea78a160a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.cpp
@@ -0,0 +1,8 @@
+// $Id$
+
+#include "Log_Macros.h"
+
+// For now, DDS4CCM is making use of the CIAO logging framework.
+// This file is there in preparation of the DDS4CCM logging framework.
+// For now, this should be empty because the CIAO_debug_level flag is
+// set in the Log_Macros.cpp of the CIAO logging framework.
diff --git a/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.h b/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.h
new file mode 100644
index 00000000000..ab1e22b31aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/logger/Log_Macros.h
@@ -0,0 +1,100 @@
+// $Id$
+/**
+ * @file Log_Macros.h
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Macros used for logging in CIAO.
+ */
+
+#ifndef DDS4CCM_LOG_MACROS_H_
+#define DDS4CCM_LOG_MACROS_H_
+
+// default information printed with CIAO logging messages.
+
+#include "ciao/Logger/Log_Macros.h"
+
+#if !defined (CLINFO)
+# define CLINFO "(%P|%t) [%M] - %T - "
+#endif
+
+// By default tracing is turned off.
+#if !defined (DDS4CCM_NTRACE)
+# define DDS4CCM_NTRACE 1
+#endif /* DDS4CCM_NTRACE */
+
+#if (DDS4CCM_NTRACE == 1)
+# if !defined (ACE_NTRACE)
+# define DDS4CCM_TRACE(X) do {} while (0)
+# define DDS4CCM_ENABLE_TRACE(X) do {} while (0)
+# define DDS4CCM_DISABLE_TRACE(X) do {} while (0)
+# else
+# if (ACE_NTRACE == 0)
+# error DDS4CCM_TRACE cannot be disabled if ACE_TRACE is enabled
+# else
+# define DDS4CCM_TRACE(X) do {} while (0)
+# define DDS4CCM_ENABLE_TRACE(X) do {} while (0)
+# define DDS4CCM_DISABLE_TRACE(X) do {} while (0)
+# endif
+# endif
+#else
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DDS4CCM_TRACE(X) ACE_TRACE_IMPL(X)
+# define DDS4CCM_ENABLE_TRACE() ACE_Trace::start_tracing ()
+# define DDS4CCM_DISABLE_TRACE() ACE_Trace::stop_tracing ()
+# undef CLINFO // Make log messages indent with tracing.
+# define CLINFO "%I(%P|%t) [%M] - %T - "
+# include "ace/Trace.h"
+#endif /* DDS4CCM_NTRACE */
+
+#if defined (DDS4CCM_NLOGGING)
+# define DDS4CCM_ERROR(L, X) do {} while (0)
+# define DDS4CCM_DEBUG(L, X) do {} while (0)
+#define DDS4CCM_ERROR_RETURN(L, X, Y) return (Y)
+#define DDS4CCM_ERROR_BREAK(L, X) { break; }
+#else
+# if !defined (DDS4CCM_ERROR)
+# define DDS4CCM_ERROR(L, X) \
+ do { \
+ if (CIAO_debug_level >= L) \
+ { \
+ int const __ace_error = ACE_Log_Msg::last_error_adapter (); \
+ ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \
+ ace___->conditional_set (__FILE__, __LINE__, -1, __ace_error); \
+ ace___->log X; \
+ } \
+ } while (0)
+# endif
+# if !defined (DDS4CCM_DEBUG)
+# define DDS4CCM_DEBUG(L, X) \
+ do { \
+ if (CIAO_debug_level >= L) \
+ { \
+ int const __ace_error = ACE_Log_Msg::last_error_adapter (); \
+ ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \
+ ace___->conditional_set (__FILE__, __LINE__, 0, __ace_error); \
+ ace___->log X; \
+ } \
+ } while (0)
+# endif
+# if !defined (DDS4CCM_ERROR_RETURN)
+# define DDS4CCM_ERROR_RETURN(L, X, Y) \
+ do { \
+ if (CIAO_debug_level >= L) \
+ { \
+ int const __ace_error = ACE_Log_Msg::last_error_adapter (); \
+ ACE_Log_Msg *ace___ = ACE_Log_Msg::instance (); \
+ ace___->conditional_set (__FILE__, __LINE__, Y, __ace_error); \
+ ace___->log X; \
+ } \
+ return Y; \
+ } while (0)
+# endif
+# if !defined (DDS4CCM_ERROR_BREAK)
+# define DDS4CCM_ERROR_BREAK(L, X) { DDS4CCM_ERROR (L, X); break; }
+# endif
+#endif
+
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/logger/Logger.mpc b/modules/CIAO/connectors/dds4ccm/impl/logger/Logger.mpc
new file mode 100644
index 00000000000..b5c6dba21e6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/logger/Logger.mpc
@@ -0,0 +1,15 @@
+// -*- MPC -*-
+// $Id$
+
+project(DDS4CCM_Logger): ciao_lib, taolib, acelib {
+ sharedname = DDS4CCM_Logger
+ dynamicflags = DDS4CCM_LOGGER_BUILD_DLL
+
+ Source_Files {
+ Log_Macros.cpp
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.idl
new file mode 100644
index 00000000000..713629c37f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef LATENCY_BASE_IDL
+#define LATENCY_BASE_IDL
+
+//#pragma ndds typesupport "Base/Latency_BaseSupport.h"
+
+const short MAX_DATA_SEQUENCE_LENGTH = 8192;
+
+//#pragma DCPS_DATA_TYPE "Latency"
+
+struct LatencyTest {
+ long seq_num;
+ sequence<octet, MAX_DATA_SEQUENCE_LENGTH> data;
+ };
+
+//typedef sequence<LatencyTest> LatencyTest_Seq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.mpc
new file mode 100644
index 00000000000..ce1b64666d2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/Base/Latency_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Latency_Base_plain_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Latency_Base_plain_stub
+ dynamicflags += LATENCY_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=LATENCY_BASE_STUB_Export \
+ -Wb,stub_export_include=LATENCY_Base_plain_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Latency_Base.idl
+ }
+
+ opendds_ts_flags += --export=LATENCY_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Latency_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/DDS_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/DDS_Receiver.mpc
new file mode 100644
index 00000000000..1d04d9740df
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/DDS_Receiver.mpc
@@ -0,0 +1,15 @@
+// $Id$
+
+project(*latency_receiver_plain) : nddslib, acelib, taolib {
+ after += DDS_Latency_Base_plain_stub
+ exename = DDS_receiver
+ libpaths += ../lib
+ libout = ../lib
+ libs += DDS_Latency_Base_plain_stub
+ includes += ../Base
+
+ Source_Files {
+ Latency_Receiver.cpp
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/Latency_Receiver.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/Latency_Receiver.cpp
new file mode 100644
index 00000000000..a58a38193c6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Receiver/Latency_Receiver.cpp
@@ -0,0 +1,355 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "tao/ORB_Core.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Env_Value_T.h"
+#include "ace/Tokenizer_T.h"
+#include "Latency_Base.h"
+#include "Latency_BaseSupport.h"
+#include "Latency_BasePlugin.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+
+bool shutdown_flag_ = false;
+
+CORBA::LongLong count_ = 0; // total count of all received messages
+
+LatencyTest * instance_ =0;
+LatencyTestDataWriter * test_data_writer_ = 0;
+
+const char * lib_name_ = 0;
+const char * prof_name_ = 0;
+
+CORBA::UShort domain_id_ = 0;
+CORBA::Boolean both_read_write_ = false;
+
+void
+split_qos (const char * qos)
+{
+ char* buf = const_cast <char *> (qos);
+ ACE_Tokenizer_T<char> tok (buf);
+ tok.delimiter_replace ('#', 0);
+ for (char *p = tok.next (); p; p = tok.next ())
+ {
+ if (!lib_name_)
+ {
+ lib_name_ = p;
+ }
+ else if (!prof_name_)
+ {
+ prof_name_ = p;
+ }
+ }
+ ACE_DEBUG ((LM_DEBUG, "Receiver : Found QoS profile %C %C\n",
+ lib_name_,
+ prof_name_));
+}
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("d:b:q:O"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'b':
+ both_read_write_ = true;
+ break;
+ case 'd':
+ domain_id_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'q':
+ {
+ const char * qos = get_opts.opt_arg ();
+ split_qos (qos);
+ }
+ break;
+ case '?':
+ default:
+ printf("c = <%c>\n",c);
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage:\n\n"
+ " -d <domain_id>\n"
+ " -q <QoS profile>\n"
+ " -b use both a writer and reader per topic.\n"
+ "\n"),
+ -1);
+ }
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+/* The listener of events and data from the middleware */
+class HelloListener: public ::DDS::DataReaderListener {
+public:
+ void on_data_available(::DDS::DataReader *reader);
+};
+
+/* The dummy listener of events and data from the middleware */
+class DummyListener: public ::DDS::DataReaderListener {
+};
+
+void
+write_back (LatencyTest & an_instance)
+{
+ ++count_;
+
+ try
+ {
+ test_data_writer_->write(an_instance, ::DDS::HANDLE_NIL);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing ping back.\n")));
+ }
+}
+
+int ACE_TMAIN(int argc, ACE_TCHAR** argv)
+{
+ ::DDS::ReturnCode_t retcode;
+ HelloListener listener;
+ DummyListener dum_listener;
+ ::DDS::DataReader *data_reader = 0;
+ ::DDS::DataReader *dum_data_reader = 0;
+ const char * type_name = 0;
+ ::DDS::Topic * send_topic = 0;
+ ::DDS::Topic * receive_topic = 0;
+ ::DDS::DataWriter * data_writer = 0;
+ ::DDS::DataWriter * dum_data_writer = 0;
+
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), domain_id_);
+ domain_id_ = id;
+
+ int main_result = 1; /* error by default */
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ /* Create the domain participant on domain ID 0 */
+ ::DDS::DomainParticipant *participant =
+ ::DDS::DomainParticipantFactory::get_instance()->
+ create_participant_with_profile(
+ domain_id_,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!participant)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Receiver : Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+ /* Register type before creating topic */
+ type_name = LatencyTestTypeSupport::get_type_name ();
+ retcode = LatencyTestTypeSupport::register_type (participant, type_name);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to register topic type.\n")));
+ goto clean_exit;
+ }
+
+ send_topic = participant->create_topic_with_profile (
+ "send",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!send_topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ receive_topic = participant->create_topic_with_profile (
+ "receive",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!receive_topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the data reader using the default publisher */
+ data_reader = participant->create_datareader_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ &listener,
+ DDS_DATA_AVAILABLE_STATUS);
+
+ if (!data_reader )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data writer, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector
+ */
+ if (both_read_write_)
+ {
+ dum_data_writer = participant->create_datawriter_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!dum_data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+ }
+ /* Create the data writer using the default publisher */
+ data_writer = participant->create_datawriter_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data reader, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector.
+ */
+ if (both_read_write_)
+ {
+ dum_data_reader = participant->create_datareader_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ &dum_listener,
+ DDS_DATA_AVAILABLE_STATUS);
+
+ if (!dum_data_reader )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+ }
+
+ test_data_writer_ = LatencyTestDataWriter::narrow (data_writer);
+ if (!test_data_writer_)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("DDS_StringDataWriter_narrow failed.\n")));
+ goto clean_exit;
+ }
+
+ /* --- Sleep During Asynchronous Reception ---------------------------- */
+
+ /* This thread sleeps forever. When a sample is received, RTI Data
+ * Distribution Service will call the on_data_available_callback function.
+ */
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Ready to read data.\n")));
+ for (;;)
+ {
+ ACE_OS::sleep (1);
+ if (shutdown_flag_)
+ {
+ break;
+ }
+ }
+
+ /* --- Clean Up ------------------------------------------------------- */
+
+ main_result = 0;
+clean_exit:
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting.")));
+ if (count_ > 0)
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "Number of samples received: %u \n",
+ count_));
+ }
+ else
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "No samples received\n "));
+ }
+ if (participant)
+ {
+ retcode = participant->delete_contained_entities ();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = ::DDS::DomainParticipantFactory::get_instance ()->
+ delete_participant(participant);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+
+ return main_result;
+}
+
+/* This method gets called back by DDS when one or more data samples
+ * have been received.
+ */
+void HelloListener::on_data_available(::DDS::DataReader *reader)
+{
+ /* Perform a safe type-cast from a generic data reader into a
+ * specific data reader for the type "LatencyTestDataReader"
+ */
+ LatencyTestDataReader * test_reader =
+ LatencyTestDataReader::narrow (reader);
+ if (!test_reader)
+ {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("::DDS::StringDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;)
+ {
+ ::DDS::SampleInfoSeq info;
+ ::LatencyTestRTISeq sample_req;
+ ::DDS::ReturnCode_t const retcode = test_reader->take(sample_req, info);
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ /* No more samples */
+ break;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to take data from data reader,"
+ " error %d.\n"),
+ retcode));
+ return;
+ }
+ for (::DDS_Long i = 0; i < sample_req.length (); ++i)
+ {
+ if (info[i].valid_data)
+ {
+ write_back(sample_req[i]);
+ }
+ }
+ (void) test_reader->return_loan (sample_req, info);
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/DDS_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/DDS_Sender.mpc
new file mode 100644
index 00000000000..f6ddfaee639
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/DDS_Sender.mpc
@@ -0,0 +1,29 @@
+// $Id$
+
+project(*latency_sender_plain) : nddslib, acelib, taolib {
+ after += DDS_Latency_Base_plain_stub
+ exename = DDS_Sender
+ avoids += ace_for_tao
+ libpaths += ../lib
+ libout = ../lib
+ includes += ../Base
+ libs += DDS_Latency_Base_plain_stub
+
+ Source_Files {
+ Latency_Sender.cpp
+ }
+}
+
+project(*ndds_latency_sender_plain) : nddslib, acelib, taolib {
+ after += DDS_Latency_Base_plain_stub
+ exename = DDS_NDDS_Sender
+ avoids += ace_for_tao
+ libpaths += ../lib
+ libout = ../lib
+ includes += ../Base
+ libs += DDS_Latency_Base_plain_stub
+
+ Source_Files {
+ NDDS_Latency_Sender.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/Latency_Sender.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/Latency_Sender.cpp
new file mode 100644
index 00000000000..eead5a75c95
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/Latency_Sender.cpp
@@ -0,0 +1,656 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/High_Res_Timer.h"
+#include "tao/ORB_Core.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+#include "ace/Env_Value_T.h"
+#include "Latency_Base.h"
+#include "Latency_BaseSupport.h"
+#include "Latency_BasePlugin.h"
+#include "ace/Tokenizer_T.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+
+// Forward declarations
+class WriteTicker;
+
+// Global variables
+CORBA::UShort iterations_ = 1000;
+CORBA::UShort datalen_ = 100;
+CORBA::UShort datalen_idx_ = 0;
+CORBA::UShort nr_of_runs_ = 10;
+CORBA::UShort sleep_ = 2;
+ACE_UINT64 tv_total_ = 0;
+ACE_UINT64 tv_max_ = 0;
+ACE_UINT64 tv_min_ = 0;
+CORBA::UShort count_ = 0;
+CORBA::UShort number_of_msg_ = 0;
+bool received_ = false;
+CORBA::Long seq_num_ = 0;
+CORBA::Double sigma_duration_squared_;
+ACE_UINT64 start_time_ = 0;
+ACE_UINT64 start_time_test_ = 0;
+ACE_UINT64 end_time_test_ = 0;
+
+ACE_UINT64 * duration_times_;
+CORBA::Short * datalen_range_;
+ACE_UINT64 clock_overhead_;
+
+LatencyTest * instance_ = 0;
+
+LatencyTestDataWriter * test_data_writer_ = 0;
+
+const char * lib_name_ = 0;
+const char * prof_name_ = 0;
+
+CORBA::UShort domain_id_ = 0;
+CORBA::Boolean both_read_write_ = false;
+
+WriteTicker * ticker_ = 0;
+
+/* The listener of events and data from the middleware */
+class HelloListener: public DDSDataReaderListener
+{
+public:
+ void on_data_available(DDSDataReader *reader);
+};
+
+/* The dummy listener of events and data from the middleware */
+class DummyListener: public DDSDataReaderListener
+{
+};
+
+class WriteTicker :public ACE_Event_Handler
+{
+ public:
+ WriteTicker (void);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+};
+
+void
+split_qos (const char * qos)
+{
+ char* buf = const_cast <char *> (qos);
+ ACE_Tokenizer_T<char> tok (buf);
+ tok.delimiter_replace ('#', 0);
+ for (char *p = tok.next (); p; p = tok.next ())
+ {
+ if (!lib_name_)
+ {
+ lib_name_ = p;
+ }
+ else if (!prof_name_)
+ {
+ prof_name_ = p;
+ }
+ }
+ ACE_DEBUG ((LM_DEBUG, "Sender : Found QoS profile %C %C\n",
+ lib_name_,
+ prof_name_));
+}
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("b:d:i:s:q:O"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'd':
+ domain_id_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'i':
+ iterations_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 's':
+ sleep_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'b':
+ both_read_write_ = true;
+ break;
+ case 'q':
+ {
+ const char * qos = get_opts.opt_arg ();
+ split_qos (qos);
+ }
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage:\n\n"
+ " -d <domain_id >\n"
+ " -i <iterations >\n"
+ " -s <sleep>\n"
+ " -q <QoS profile>\n"
+ " -b "
+ "\n"),
+ -1);
+ }
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+void
+calculate_clock_overhead (void)
+{
+ int num_of_loops_clock = 320;
+ ACE_UINT64 begin_time;
+ ACE_UINT64 clock_roundtrip_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (begin_time);
+ for (int i = 0; i < num_of_loops_clock; ++i)
+ {
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (clock_roundtrip_time);
+ }
+ ACE_UINT64 const total_time = clock_roundtrip_time - begin_time;
+ clock_overhead_ = (ACE_UINT64) (total_time / num_of_loops_clock);
+}
+
+void
+stop (void)
+{
+ if (ticker_)
+ {
+ ACE_Reactor::instance ()->cancel_timer (ticker_);
+ delete ticker_;
+ ticker_ = 0;
+ }
+}
+
+void
+init_values (void)
+{
+ duration_times_ = new ACE_UINT64[iterations_];
+ datalen_range_ = new CORBA::Short[nr_of_runs_];
+ int start = 16;
+ for(int i = 0; i < nr_of_runs_; i++)
+ {
+ datalen_range_[i] = start;
+ start = 2 * start;
+ }
+
+ datalen_ = datalen_range_[0];
+
+ // make instances of Topic
+ instance_->seq_num = 0;
+ instance_->data.length (datalen_);
+ calculate_clock_overhead ();
+}
+
+void
+record_time (ACE_UINT64 receive_time)
+{
+ ++count_;
+ ACE_UINT64 const interval = receive_time - start_time_;
+ ACE_UINT64 const duration = interval - clock_overhead_;
+ if (count_ > iterations_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Internal error while getting more "
+ "messages back as expected.\n"));
+ }
+ else
+ {
+ duration_times_[count_-1] = duration;
+ sigma_duration_squared_ += (double)duration * (double)duration;
+ tv_total_ += duration;
+ if (duration > tv_max_ || (tv_max_ == 0L))
+ {
+ tv_max_ = duration;
+ }
+ if (duration < tv_min_ || (tv_min_ == 0L))
+ {
+ tv_min_ = duration;
+ }
+ }
+}
+
+void
+reset_results (void)
+{
+ count_ = 0;
+ duration_times_ = new ACE_UINT64[iterations_];
+ tv_total_ = 0L;
+ tv_max_ = 0L;
+ tv_min_ = 0L;
+ number_of_msg_ = 0;
+ received_ = false;
+ seq_num_ = 0;
+ sigma_duration_squared_ = 0;
+}
+
+static int compare_two_longs (const void * long1, const void * long2)
+{
+ return (int)((*(ACE_UINT64*)long1 - *(ACE_UINT64*)long2));
+}
+
+void
+calc_results()
+{
+ // Sort all duration times.
+ qsort(duration_times_,
+ count_,
+ sizeof(ACE_UINT64),
+ compare_two_longs);
+
+ // Show latency_50_percentile, latency_90_percentile,
+ // latency_99_percentile and latency_99.99_percentile.
+ // For example duration_times[per50] is the median i.e. 50% of the
+ // samples have a latency time <= duration_times[per50]
+ int per50 = count_/2;
+ int per90 = (int)(count_ * 0.90);
+ int per99 = (int)(count_ * 0.990);
+ int per9999 = (int)(count_ * 0.9999);
+
+ double avg = 0;
+ double roundtrip_time_std = 0;
+ if (count_ > 0)
+ {
+ avg = (double)(tv_total_ / count_);
+ // Calculate standard deviation.
+ roundtrip_time_std = sqrt(
+ (sigma_duration_squared_ / (double)count_) -
+ (avg * avg));
+ }
+
+ // Show values as float, in order to be comparable with RTI performance test.
+ if (count_ > 0)
+ {
+ if (datalen_idx_ == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Collecting statistics on %d samples per message size.\n"
+ "This is the roundtrip time, *not* the one-way-latency\n"
+ "Clock overhead %d\n"
+ "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.99%%,"
+ " max us\n"
+ "------,-------,-------,-------,-------,-------,-------,-------,"
+ "-------\n", count_, clock_overhead_));
+ }
+ ACE_DEBUG ((LM_DEBUG,
+ "%6d,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f\n",
+ datalen_,
+ roundtrip_time_std,
+ avg,
+ (double)tv_min_,
+ (double)duration_times_[per50-1],
+ (double)duration_times_[per90-1],
+ (double)duration_times_[per99-1],
+ (double)duration_times_[per9999-1],
+ (double)tv_max_));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
+ "No samples reveived back.\n"));
+ }
+}
+
+
+void
+write_one (void)
+{
+ if ((number_of_msg_ == 0) && (datalen_idx_ == 0))
+ {
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time_test_);
+ }
+ // First message sent always, next messages only as previous sent message
+ // is received back.
+ if ((number_of_msg_ == 0) || received_)
+ {
+ // All messages send, stop timer.
+ if ((iterations_ != 0) &&
+ (number_of_msg_ >= iterations_ ))
+ {
+ if (datalen_idx_ >= (nr_of_runs_ - 1))
+ {
+ stop();
+ calc_results();
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (end_time_test_);
+ ACE_Reactor::instance ()->end_reactor_event_loop ();
+ }
+ else
+ {
+ calc_results();
+ reset_results();
+ ++datalen_idx_;
+ datalen_ = datalen_range_[datalen_idx_];
+ instance_->data.length (datalen_);
+ }
+ }
+ else
+ {
+ try
+ {
+ instance_->seq_num = number_of_msg_;
+ // Keep last sent seq_num, to control if message is sent back.
+ seq_num_ = number_of_msg_;
+ received_ = false;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time_);
+ test_data_writer_->write (*instance_, DDS_HANDLE_NIL);
+ }
+ catch (const CORBA::Exception& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing sample with sequence_number <%u>.\n"),
+ instance_->seq_num));
+ }
+ ++number_of_msg_;
+ }
+ }
+}
+
+void start (void)
+{
+ ticker_ = new WriteTicker();
+
+ // This->sleep_ is in ms
+ unsigned int sec = sleep_/1000;
+ unsigned int usec = (sleep_ % 1000) * 1000;
+ if (ACE_Reactor::instance ()->schedule_timer (
+ ticker_,
+ 0,
+ ACE_Time_Value (5, 0),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ ACE_Reactor::instance ()->run_reactor_event_loop ();
+}
+
+void
+read (LatencyTest & an_instance, ACE_UINT64 receive_time)
+{
+ if (an_instance.seq_num == seq_num_)
+ {
+ record_time (receive_time);
+ received_ = true;
+ }
+}
+
+int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
+{
+ DDS_ReturnCode_t retcode;
+ ::DDS::DataReader * data_reader = 0;
+ ::DDS::DataReader * dum_data_reader = 0;
+
+ HelloListener listener;
+ DummyListener dum_listener;
+ const char * type_name = 0;
+ int main_result = 1; /* error by default */
+
+ ::DDS::Topic * receive_topic = 0;
+ ::DDS::Topic * send_topic = 0;
+ ::DDS::DataWriter * data_writer = 0;
+ ::DDS::DataWriter * dum_data_writer = 0;
+
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), domain_id_);
+ domain_id_ = id;
+
+ if (parse_args (argc, argv) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Error arguments.\n")));
+ return 1;
+ }
+
+ (void) ACE_High_Res_Timer::global_scale_factor ();
+ ACE_Reactor::instance ()->timer_queue()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr);
+
+ /* Create the domain participant */
+ DDSDomainParticipant * participant =
+ DDSDomainParticipantFactory::get_instance()->
+ create_participant_with_profile(
+ domain_id_,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!participant)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Sender : Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+
+ /* Register type before creating topic */
+ type_name = LatencyTestTypeSupport::get_type_name();
+ retcode = LatencyTestTypeSupport::register_type (participant,
+ type_name);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ goto clean_exit;
+ }
+
+ send_topic = participant->create_topic_with_profile (
+ "send",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!send_topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ receive_topic = participant->create_topic_with_profile (
+ "receive",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!receive_topic) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+ /* Create the data writer using the default publisher */
+ data_writer = participant->create_datawriter_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data reader, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector.
+ */
+ if (both_read_write_)
+ {
+ dum_data_reader = participant->create_datareader_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ &dum_listener,
+ DDS_DATA_AVAILABLE_STATUS);
+
+ if (!dum_data_reader )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create dummy data reader.\n")));
+ goto clean_exit;
+ }
+ }
+
+ data_reader = participant->create_datareader_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ &listener,
+ DDS_DATA_AVAILABLE_STATUS);
+ if (!data_reader)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data writer, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector
+ */
+ if (both_read_write_)
+ {
+ dum_data_writer = participant->create_datawriter_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!dum_data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create dummy data writer.\n")));
+ goto clean_exit;
+ }
+ }
+
+ /* Create data sample for writing */
+ instance_ = LatencyTestTypeSupport::create_data ();
+ if (instance_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data sample.\n")));
+ goto clean_exit;
+ }
+
+ init_values();
+
+ test_data_writer_ = LatencyTestDataWriter::narrow (data_writer);
+ if (!test_data_writer_)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("LatencyTestDataWriter_narrow failed.\n")));
+ goto clean_exit;
+ }
+
+ // Sleep a couple seconds to allow discovery to happen
+ ACE_OS::sleep (5);
+
+ // handle writing of messages
+ start();
+
+ /* --- Clean Up --- */
+ ACE_OS::sleep (5);
+ main_result = 0;
+
+clean_exit:
+ const char * read_write_str;
+ if (both_read_write_)
+ {
+ read_write_str = "Used a extra dummy reader and writer per topic.";
+ }
+ else
+ {
+ read_write_str = "Used a reader for one topic and a writer for other topic.";
+ }
+
+ if((nr_of_runs_ -1) != datalen_idx_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER : %u of %u runs completed.\n"
+ " Number of messages sent of last run (%u): %u\n"
+ "%C\n\n",
+ datalen_idx_,
+ nr_of_runs_,
+ datalen_idx_ + 1,
+ number_of_msg_,
+ read_write_str));
+ }
+ else
+ {
+ ACE_UINT64 test_time_usec = end_time_test_ - start_time_test_;
+
+ double sec = (double)test_time_usec / (1000 * 1000);
+ ACE_DEBUG ((LM_DEBUG, "TEST successful, number of runs (%u) of "
+ "%u messages in %3.3f seconds.\n"
+ "%C\n\n",
+ nr_of_runs_,
+ number_of_msg_,
+ sec,
+ read_write_str));
+ }
+ if (participant)
+ {
+ retcode = participant->delete_contained_entities ();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = DDSDomainParticipantFactory::get_instance()->
+ delete_participant (participant);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+ return main_result;
+}
+
+void HelloListener::on_data_available(DDSDataReader *reader)
+{
+ LatencyTestDataReader * test_reader =
+ LatencyTestDataReader::narrow (reader);
+ if (!test_reader)
+ {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("LatencyTestDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;)
+ {
+ ::DDS::SampleInfoSeq info;
+ ::LatencyTestRTISeq sample_req;
+ ::DDS::ReturnCode_t const retcode = test_reader->take(sample_req, info);
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ /* No more samples */
+ break;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to take data from data reader,"
+ " error %d.\n"),
+ retcode));
+ return;
+ }
+ for (::DDS_Long i = 0; i < sample_req.length (); ++i)
+ {
+ if (info[i].valid_data)
+ {
+ ACE_UINT64 receive_time = 0;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (receive_time);
+ read(sample_req[i], receive_time);
+ }
+ }
+ (void) test_reader->return_loan (sample_req, info);
+ }
+}
+
+//============================================================
+// WriteTickerHandler
+//============================================================
+WriteTicker::WriteTicker ()
+{
+}
+
+int
+WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+{
+ write_one();
+ return 0;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/NDDS_Latency_Sender.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/NDDS_Latency_Sender.cpp
new file mode 100644
index 00000000000..66c6146911c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/DDS_Sender/NDDS_Latency_Sender.cpp
@@ -0,0 +1,605 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "tao/ORB_Core.h"
+#include "ace/Env_Value_T.h"
+#include "Latency_Base.h"
+#include "Latency_BaseSupport.h"
+#include "Latency_BasePlugin.h"
+#include "ace/Tokenizer_T.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+#include <ndds/ndds_cpp.h>
+#include <ndds/clock/clock_highResolution.h>
+
+// Global variables
+CORBA::UShort iterations_ = 1000;
+CORBA::UShort datalen_ = 100;
+CORBA::UShort datalen_idx_ = 0;
+CORBA::UShort nr_of_runs_ = 10;
+CORBA::UShort sleep_ = 2;
+ACE_UINT64 tv_total_ = 0;
+ACE_UINT64 tv_max_ = 0;
+ACE_UINT64 tv_min_ = 0;
+CORBA::UShort count_ = 0;
+CORBA::UShort number_of_msg_ = 0;
+bool received_ = false;
+CORBA::Long seq_num_ = 0;
+CORBA::Double sigma_duration_squared_;
+struct RTINtpTime start_time_;
+
+ACE_UINT64 * duration_times_;
+CORBA::Short * datalen_range_;
+ACE_UINT64 clock_overhead_;
+RTIClock *timer = 0;
+LatencyTest * instance_ = 0;
+
+LatencyTestDataWriter * test_data_writer_ = 0;
+
+const char * lib_name_ = 0;
+const char * prof_name_ = 0;
+
+CORBA::UShort domain_id_ = 0;
+CORBA::Boolean both_read_write_ = false;
+
+/* The listener of events and data from the middleware */
+class HelloListener: public DDSDataReaderListener
+{
+public:
+ void on_data_available(DDSDataReader *reader);
+};
+
+/* The dummy listener of events and data from the middleware */
+class DummyListener: public DDSDataReaderListener
+{
+};
+
+void
+split_qos (const char * qos)
+{
+ char* buf = const_cast <char *> (qos);
+ ACE_Tokenizer_T<char> tok (buf);
+ tok.delimiter_replace ('#', 0);
+ for (char *p = tok.next (); p; p = tok.next ())
+ {
+ if (!lib_name_)
+ {
+ lib_name_ = p;
+ }
+ else if (!prof_name_)
+ {
+ prof_name_ = p;
+ }
+ }
+ ACE_DEBUG ((LM_DEBUG, "Sender : Found QoS profile %C %C\n",
+ lib_name_,
+ prof_name_));
+}
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("b:d:i:s:q:O"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'd':
+ domain_id_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'i':
+ iterations_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 's':
+ sleep_ = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'b':
+ both_read_write_ = true;
+ break;
+ case 'q':
+ {
+ const char * qos = get_opts.opt_arg ();
+ split_qos (qos);
+ }
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage:\n\n"
+ " -d <domain_id >\n"
+ " -i <iterations >\n"
+ " -s <sleep>\n"
+ " -q <QoS profile>\n"
+ " -b "
+ "\n"),
+ -1);
+ }
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+void
+calculate_clock_overhead (void)
+{
+ int num_of_loops_clock = 320;
+ struct RTINtpTime begin_time = RTI_NTP_TIME_ZERO;
+ struct RTINtpTime clock_roundtrip_time = RTI_NTP_TIME_ZERO;
+
+ timer->getTime(timer, &begin_time);
+ for (int i = 0; i < num_of_loops_clock; ++i) {
+ timer->getTime(timer, &clock_roundtrip_time);
+ }
+ RTINtpTime_decrement(clock_roundtrip_time, begin_time);
+ clock_overhead_ = (ACE_UINT64)(1E6 * RTINtpTime_toDouble(&clock_roundtrip_time) /
+ (double)num_of_loops_clock);
+}
+
+void
+init_values (void)
+{
+ duration_times_ = new ACE_UINT64[iterations_];
+ datalen_range_ = new CORBA::Short[nr_of_runs_];
+ int start = 16;
+ for(int i = 0; i < nr_of_runs_; i++)
+ {
+ datalen_range_[i] = start;
+ start = 2 * start;
+ }
+
+ datalen_ = datalen_range_[0];
+
+ // make instances of Topic
+ instance_->seq_num = 0;
+ instance_->data.length (datalen_);
+ calculate_clock_overhead ();
+}
+
+void
+record_time (struct RTINtpTime& receive_time)
+{
+ ++count_;
+ RTINtpTime roundtrip = {0,0};
+ RTINtpTime_subtract(roundtrip, receive_time, start_time_);
+ ACE_UINT64 duration =
+ (ACE_UINT64)(1E6 * RTINtpTime_toDouble(&roundtrip));// - _clock_overhead;
+
+ if (count_ > iterations_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Internal error while getting more "
+ "messages back as expected.\n"));
+ }
+ else
+ {
+ duration_times_[count_-1] = duration;
+ sigma_duration_squared_ += (double)duration * (double)duration;
+ tv_total_ += duration;
+ if (duration > tv_max_ || (tv_max_ == 0L))
+ {
+ tv_max_ = duration;
+ }
+ if (duration < tv_min_ || (tv_min_ == 0L))
+ {
+ tv_min_ = duration;
+ }
+ }
+}
+
+void
+reset_results (void)
+{
+ count_ = 0;
+ duration_times_ = new ACE_UINT64[iterations_];
+ tv_total_ = 0L;
+ tv_max_ = 0L;
+ tv_min_ = 0L;
+ number_of_msg_ = 0;
+ received_ = false;
+ seq_num_ = 0;
+ sigma_duration_squared_ = 0;
+}
+
+static int compare_two_longs (const void * long1, const void * long2)
+{
+ return (int)((*(ACE_UINT64*)long1 - *(ACE_UINT64*)long2));
+}
+
+void
+calc_results()
+{
+ // Sort all duration times.
+ qsort(duration_times_,
+ count_,
+ sizeof(ACE_UINT64),
+ compare_two_longs);
+
+ // Show latency_50_percentile, latency_90_percentile,
+ // latency_99_percentile and latency_99.99_percentile.
+ // For example duration_times[per50] is the median i.e. 50% of the
+ // samples have a latency time <= duration_times[per50]
+ int per50 = count_/2;
+ int per90 = (int)(count_ * 0.90);
+ int per99 = (int)(count_ * 0.990);
+ int per9999 = (int)(count_ * 0.9999);
+
+ double avg = 0;
+ double roundtrip_time_std = 0;
+ if (count_ > 0)
+ {
+ avg = (double)(tv_total_ / count_);
+ // Calculate standard deviation.
+ roundtrip_time_std = sqrt(
+ (sigma_duration_squared_ / (double)count_) -
+ (avg * avg));
+ }
+
+ // Show values as float, in order to be comparable with RTI performance test.
+ if (count_ > 0)
+ {
+ if (datalen_idx_ == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Collecting statistics on %d samples per message size.\n"
+ "This is the roundtrip time, *not* the one-way-latency\n"
+ "Clock overhead %d\n"
+ "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.99%%,"
+ " max us\n"
+ "------,-------,-------,-------,-------,-------,-------,-------,"
+ "-------\n", count_, clock_overhead_));
+ }
+ ACE_DEBUG ((LM_DEBUG,
+ "%6d,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f\n",
+ datalen_,
+ roundtrip_time_std,
+ avg,
+ (double)tv_min_,
+ (double)duration_times_[per50-1],
+ (double)duration_times_[per90-1],
+ (double)duration_times_[per99-1],
+ (double)duration_times_[per9999-1],
+ (double)tv_max_));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
+ "No samples reveived back.\n"));
+ }
+}
+
+
+bool
+write_one (void)
+{
+ // First message sent always, next messages only as previous sent message
+ // is received back.
+ if ((number_of_msg_ == 0) || received_)
+ {
+ // All messages send, stop timer.
+ if ((iterations_ != 0) &&
+ (number_of_msg_ >= iterations_ ))
+ {
+ if (datalen_idx_ >= (nr_of_runs_ - 1))
+ {
+ calc_results();
+ return true;
+ }
+ else
+ {
+ calc_results();
+ reset_results();
+ ++datalen_idx_;
+ datalen_ = datalen_range_[datalen_idx_];
+ instance_->data.length (datalen_);
+ }
+ }
+ else
+ {
+ try
+ {
+ instance_->seq_num = number_of_msg_;
+ // Keep last sent seq_num, to control if message is sent back.
+ seq_num_ = number_of_msg_;
+ received_ = false;
+ RTINtpTime_setZero(&start_time_);
+ timer->getTime(timer, &start_time_);
+ test_data_writer_->write (*instance_, DDS_HANDLE_NIL);
+ }
+ catch (const CORBA::Exception& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing sample with sequence_number <%u>.\n"),
+ instance_->seq_num));
+ }
+ ++number_of_msg_;
+ }
+ }
+ return false;
+}
+
+void start (void)
+{
+ unsigned int sec = sleep_/1000;
+ unsigned int usec = (sleep_ % 1000) * 1000;
+
+ while (!write_one())
+ {
+ ACE_Time_Value sleeptime (sec, usec);
+ ACE_OS::sleep (sleeptime);
+ }
+}
+
+void
+read (LatencyTest & an_instance, struct RTINtpTime& receive_time)
+{
+ if (an_instance.seq_num == seq_num_)
+ {
+ record_time (receive_time);
+ received_ = true;
+ }
+}
+
+int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
+{
+ timer = RTIHighResolutionClock_new();
+ DDS_ReturnCode_t retcode;
+ ::DDS::DataReader * data_reader = 0;
+ ::DDS::DataReader * dum_data_reader = 0;
+
+ HelloListener listener;
+ DummyListener dum_listener;
+ const char * type_name = 0;
+ int main_result = 1; /* error by default */
+
+ ::DDS::Topic * receive_topic = 0;
+ ::DDS::Topic * send_topic = 0;
+ ::DDS::DataWriter * data_writer = 0;
+ ::DDS::DataWriter * dum_data_writer = 0;
+
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), domain_id_);
+ domain_id_ = id;
+
+ if (parse_args (argc, argv) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Error arguments.\n")));
+ return 1;
+ }
+
+ /* Create the domain participant */
+ DDSDomainParticipant * participant =
+ DDSDomainParticipantFactory::get_instance()->
+ create_participant_with_profile(
+ domain_id_,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!participant)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Sender : Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+
+ /* Register type before creating topic */
+ type_name = LatencyTestTypeSupport::get_type_name();
+ retcode = LatencyTestTypeSupport::register_type (participant,
+ type_name);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ goto clean_exit;
+ }
+
+ send_topic = participant->create_topic_with_profile (
+ "send",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!send_topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ receive_topic = participant->create_topic_with_profile (
+ "receive",
+ type_name,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!receive_topic) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+ /* Create the data writer using the default publisher */
+ data_writer = participant->create_datawriter_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data reader, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector.
+ */
+ if (both_read_write_)
+ {
+ dum_data_reader = participant->create_datareader_with_profile(
+ send_topic,
+ lib_name_,
+ prof_name_,
+ &dum_listener,
+ DDS_DATA_AVAILABLE_STATUS);
+
+ if (!dum_data_reader )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create dummy data reader.\n")));
+ goto clean_exit;
+ }
+ }
+
+ data_reader = participant->create_datareader_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ &listener,
+ DDS_DATA_AVAILABLE_STATUS);
+ if (!data_reader)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+
+ /* Create a data writer, which will not be used, but is there for
+ * compatibility with DDS4CCM latency test, where there is always a
+ * reader and a writer per connector
+ */
+ if (both_read_write_)
+ {
+ dum_data_writer = participant->create_datawriter_with_profile(
+ receive_topic,
+ lib_name_,
+ prof_name_,
+ 0,
+ DDS_STATUS_MASK_NONE);
+ if (!dum_data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create dummy data writer.\n")));
+ goto clean_exit;
+ }
+ }
+
+ /* Create data sample for writing */
+ instance_ = LatencyTestTypeSupport::create_data ();
+ if (instance_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data sample.\n")));
+ goto clean_exit;
+ }
+
+ init_values();
+
+ test_data_writer_ = LatencyTestDataWriter::narrow (data_writer);
+ if (!test_data_writer_)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("LatencyTestDataWriter_narrow failed.\n")));
+ goto clean_exit;
+ }
+
+ // Sleep a couple seconds to allow discovery to happen
+ ACE_OS::sleep (5);
+
+ // handle writing of messages
+ start();
+
+ /* --- Clean Up --- */
+ ACE_OS::sleep (5);
+ main_result = 0;
+
+clean_exit:
+ const char * read_write_str = 0;
+ if (both_read_write_)
+ {
+ read_write_str = "Used a extra dummy reader and writer per topic.";
+ }
+ else
+ {
+ read_write_str = "Used a reader for one topic and a writer for other topic.";
+ }
+
+ if((nr_of_runs_ -1) != datalen_idx_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER : %u of %u runs completed.\n"
+ " Number of messages sent of last run (%u): %u\n"
+ "%C\n\n",
+ datalen_idx_,
+ nr_of_runs_,
+ datalen_idx_ + 1,
+ number_of_msg_,
+ read_write_str));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "TEST successful, number of runs (%u) of "
+ "%u messages.\n"
+ "%C\n\n",
+ nr_of_runs_,
+ number_of_msg_,
+ read_write_str));
+ }
+ if (participant)
+ {
+ retcode = participant->delete_contained_entities ();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = DDSDomainParticipantFactory::get_instance()->
+ delete_participant (participant);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+ return main_result;
+}
+
+void HelloListener::on_data_available(DDSDataReader *reader)
+{
+ LatencyTestDataReader * test_reader =
+ LatencyTestDataReader::narrow (reader);
+ if (!test_reader)
+ {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("LatencyTestDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;)
+ {
+ ::DDS::SampleInfoSeq info;
+ ::LatencyTestRTISeq sample_req;
+ ::DDS::ReturnCode_t const retcode = test_reader->take(sample_req, info);
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ /* No more samples */
+ break;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to take data from data reader,"
+ " error %d.\n"),
+ retcode));
+ return;
+ }
+ for (::DDS_Long i = 0; i < sample_req.length (); ++i)
+ {
+ if (info[i].valid_data)
+ {
+ struct RTINtpTime finish_time;
+ RTINtpTime_setZero(&finish_time);
+ timer->getTime(timer, &finish_time);
+ read(sample_req[i], finish_time);
+ }
+ }
+ (void) test_reader->return_loan (sample_req, info);
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..2f2e923b7d0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Description
+ XML QoS Profile
+
+ The QoS configuration of the DDS entities in the generated example is
+ loaded from this file.
+
+ This file is used only when it is in the current working directory
+ or when the enviroment variable
+ NDDS_QOS_PROFILES is defined and points to this file.
+
+ For more information about XML QoS Profiles see Chapter 15 in the
+ RTI Data Distribution Service user manual.
+ -->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="/home/ndds/ndds.4.5b/scripts/../resource/rtiddsgen/../qos_profiles_4.5b/schema/rti_dds_qos_profiles.xsd"
+ version="4.5b">
+
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="Latency_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="UDPv4QoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <!-- (payload) 8192 + (est. overhead) 8 + 512 -->
+ <buffer_size>8712</buffer_size>
+ </receiver_pool>
+
+ <transport_builtin>
+ <mask>DDS_TRANSPORTBUILTIN_UDPv4</mask>
+ </transport_builtin>
+
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>8712</value></element>
+ <element>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>17424</value></element>
+ <element>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>8712</value></element>
+ </value>
+ </property>
+ </participant_qos>
+
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history><kind>DDS_KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>3</max_samples>
+ <initial_samples>3</initial_samples>
+ <max_samples_per_instance>3</max_samples_per_instance>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <!-- piggyback every sample -->
+ <heartbeats_per_max_samples>3</heartbeats_per_max_samples>
+ <max_nack_response_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </max_nack_response_delay>
+ <!-- 1 year -->
+ <heartbeat_period>
+ <sec>604800</sec>
+ <nanosec>1000000</nanosec>
+ </heartbeat_period>
+ <!-- 1 ms -->
+ <fast_heartbeat_period>
+ <sec>0</sec>
+ <nanosec>1000000</nanosec>
+ </fast_heartbeat_period>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>DDS_KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ <protocol>
+ <rtps_reliable_reader>
+ <max_heartbeat_response_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </max_heartbeat_response_delay>
+ </rtps_reliable_reader>
+ </protocol>
+ </datareader_qos>
+ </qos_profile>
+
+ <qos_profile name="SharedMemQos" is_default_qos="true">
+ <participant_qos>
+ <transport_builtin>
+ <mask>DDS_TRANSPORTBUILTIN_SHMEM</mask>
+ </transport_builtin>
+ <receiver_pool>
+ <buffer_size>8712</buffer_size>
+ </receiver_pool>
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.SHMEM.builtin.parent.message_size_max</name>
+ <value>8712</value>
+ <name>dds.transport.SHMEM.builtin.receive_buffer_size</name>
+ <value>17424</value>
+ </element>
+ </value>
+ </property>
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+
+ </qos_library>
+</dds>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_dds.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_dds.pl
new file mode 100755
index 00000000000..29fea75eef2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_dds.pl
@@ -0,0 +1,48 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+foreach $i (@ARGV) {
+ if ($i eq '-b') {
+ $rw_extra = '-b:';
+ }
+}
+
+$nr_runs = 2;
+@profiles = ("Latency_Library#UDPv4QoS", "Latency_Library#SharedMemQos");
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DDS4CCM_ROOT = "$CIAO_ROOT/connectors/dds4ccm";
+
+$tg_sender = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+$tg_receiver = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+
+$tg_sender->AddLibPath ('../lib');
+$tg_receiver->AddLibPath ('../lib');
+
+sub run_tests {
+ for ($i = 0; $i < $nr_runs; ++$i) {
+ $qos = $profiles[$i];
+
+ print "Start receiver with QoS profile <$qos>\n";
+ $R = $tg_receiver->CreateProcess ("$DDS4CCM_ROOT/performance-tests/DDSLatency/DDS_Receiver/DDS_receiver", "-q $qos $rw_extra");
+
+ $R->Spawn();
+
+ print "Start sender with QoS profile <$qos>\n";
+ $S = $tg_sender->CreateProcess ("$DDS4CCM_ROOT/performance-tests/DDSLatency/DDS_Sender/DDS_Sender", "-q $qos $rw_extra");
+
+ $S->SpawnWaitKill ($tg_sender->ProcessStartWaitInterval () + 180);
+ $R->Kill ();
+ }
+}
+
+run_tests ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_ndds.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_ndds.pl
new file mode 100755
index 00000000000..cefc15596d1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSLatency/descriptors/run_test_ndds.pl
@@ -0,0 +1,48 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+foreach $i (@ARGV) {
+ if ($i eq '-b') {
+ $rw_extra = '-b:';
+ }
+}
+
+$nr_runs = 2;
+@profiles = ("Latency_Library#UDPv4QoS", "Latency_Library#SharedMemQos");
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DDS4CCM_ROOT = "$CIAO_ROOT/connectors/dds4ccm";
+
+$tg_sender = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+$tg_receiver = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+
+$tg_sender->AddLibPath ('../lib');
+$tg_receiver->AddLibPath ('../lib');
+
+sub run_tests {
+ for ($i = 0; $i < $nr_runs; ++$i) {
+ $qos = $profiles[$i];
+
+ print "Start receiver with QoS profile <$qos>\n";
+ $R = $tg_receiver->CreateProcess ("$DDS4CCM_ROOT/performance-tests/DDSLatency/DDS_Receiver/DDS_receiver", "-q $qos $rw_extra");
+
+ $R->Spawn();
+
+ print "Start sender with QoS profile <$qos>\n";
+ $S = $tg_sender->CreateProcess ("$DDS4CCM_ROOT/performance-tests/DDSLatency/DDS_Sender/DDS_NDDS_Sender", "-q $qos $rw_extra");
+
+ $S->SpawnWaitKill ($tg_sender->ProcessStartWaitInterval () + 180);
+ $R->Kill ();
+ }
+}
+
+run_tests ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.idl
new file mode 100644
index 00000000000..3aa853dded9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.idl
@@ -0,0 +1,42 @@
+// $Id$
+
+/**
+ * @file Throughput_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef THROUGHPUT_BASE_IDL
+#define THROUGHPUT_BASE_IDL
+
+//#pragma ndds typesupport "Base/Throughput_BaseSupport.h"
+
+const short MAX_DATA_SEQUENCE_LENGTH = 8192;
+
+typedef enum ThroughputCommandKind
+{
+ THROUGHPUT_COMMAND_IDLE,
+ THROUGHPUT_COMMAND_START,
+ THROUGHPUT_COMMAND_COMPLETE
+} CommandKind;
+
+typedef sequence<octet, MAX_DATA_SEQUENCE_LENGTH> OctetSeq;
+
+struct ThroughputTest {
+ long key;
+ unsigned long long seq_num;
+ OctetSeq data;
+ };
+
+//typedef sequence<ThroughputTest> ThroughputTest_Seq;
+
+struct ThroughputCommand
+{
+ CommandKind command;
+ unsigned long data_length;
+ unsigned long long current_publisher_effort;
+ unsigned long long final_publisher_effort;
+};
+
+//typedef sequence<ThroughputCommand> ThroughputCommand_Seq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.mpc
new file mode 100644
index 00000000000..0de9c2eb290
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/Base/Throughput_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Throughput_Base_stub_plain) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Throughput_Base_stub
+ dynamicflags += THROUGHPUT_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=THROUGHPUT_BASE_STUB_Export \
+ -Wb,stub_export_include=THROUGHPUT_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Throughput_Base.idl
+ }
+
+ opendds_ts_flags += --export=THROUGHPUT_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Throughput_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/DDS_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/DDS_Receiver.mpc
new file mode 100644
index 00000000000..d86cd380033
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/DDS_Receiver.mpc
@@ -0,0 +1,15 @@
+// $Id$
+
+project(*receiver_plain) : nddslib, acelib, taolib {
+ after += DDS_Throughput_Base_stub_plain
+ exename = DDS_receiver
+ libpaths += ../lib
+ libout = ../lib
+ includes += ../Base
+ libs += DDS_Throughput_Base_stub
+
+ Source_Files {
+ Throughput_Receiver.cpp
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/Throughput_Receiver.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/Throughput_Receiver.cpp
new file mode 100644
index 00000000000..71fe2a8db1d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/Throughput_Receiver.cpp
@@ -0,0 +1,395 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "tao/ORB_Core.h"
+#include "ace/Env_Value_T.h"
+#include "ace/High_Res_Timer.h"
+#include "Throughput_Base.h"
+#include "Throughput_BaseSupport.h"
+#include "Throughput_BasePlugin.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+
+bool shutdown_flag = false;
+
+CORBA::LongLong count_ = 0; // total count of all received messages
+ACE_UINT64 interval_time_ = 0;
+CORBA::LongLong interval_messages_received_ = 0;
+CORBA::LongLong interval_bytes_received_ = 0;
+CORBA::Long interval_data_length_ = 0;
+CORBA::UShort run_ = 0;
+ACE_UINT64 first_time_ = 0;
+CORBA::LongLong messages_lost_ = 0;
+CORBA::Boolean logres = false;
+CORBA::ULongLong seq_num_ = 0;
+CORBA::LongLong demand_ = 0;
+
+ThroughputTest *instance =0;
+::DDS::Topic *topic = 0;
+::DDS::Topic *cmd_topic = 0;
+
+const char *lib_name = "HelloTest_Library";
+const char *cmd_prof_name = "ThroughputCmdQoS";
+const char *prof_name = "ThroughputQoS";
+const char *part_name = "ThroughputPartQoS";
+
+CORBA::UShort domain_id = 0;
+
+ int
+ parse_args (int argc, ACE_TCHAR *argv[])
+ {
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("d:O"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'd':
+ domain_id = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-d <domain_id >"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+ }
+
+/* The listener of events and data from the middleware */
+class HelloListener: public ::DDS::DataReaderListener {
+public:
+ void on_data_available(::DDS::DataReader *reader);
+};
+
+/* The listener of events and command data from the middleware */
+class CmdListener: public ::DDS::DataReaderListener {
+public:
+ void on_data_available(::DDS::DataReader *reader);
+};
+
+ void
+ show_results()
+ {
+ if ((count_ > 0) && (interval_time_ > 0))
+ {
+ double per_sec = (double)1000000/ interval_time_;
+ double mbps = (interval_bytes_received_* per_sec)* (8.0/1000.0/1000.0);
+
+ if(run_ == 1)
+ {
+ ACE_DEBUG((LM_DEBUG,
+ " bytes, demand, samples,sample/s, Mbit/s,lost samples\n"
+ "------,-------,-------,--------,-------,------------\n"
+ "%6u,%7q,%7q,%7.1f,%7.1f,%7q\n",
+ interval_data_length_,
+ demand_,
+ interval_messages_received_,
+ interval_messages_received_* per_sec,
+ mbps,
+ messages_lost_));
+ }
+ else
+ {
+ ACE_DEBUG((LM_DEBUG,"%6u,%7q,%7q,%7.1f,%7.1f,%7q\n",
+ interval_data_length_,
+ demand_,
+ interval_messages_received_,
+ interval_messages_received_* per_sec,
+ mbps,
+ messages_lost_));
+ }
+ }
+ }
+
+ void
+ reset_results()
+ {
+ interval_messages_received_ = 0;
+ interval_bytes_received_ = 0;
+ interval_time_=0;
+ seq_num_ = 0;
+ messages_lost_= 0;
+ }
+
+ void
+ handle_run(ThroughputCommand & an_instance)
+ {
+ if( an_instance.command == THROUGHPUT_COMMAND_START)
+ {
+ logres = true;
+ reset_results();
+ interval_data_length_ = an_instance.data_length;
+ demand_ = an_instance.current_publisher_effort;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (first_time_);
+ }
+ if( an_instance.command == THROUGHPUT_COMMAND_COMPLETE)
+ {
+ logres = false;
+ ACE_UINT64 last_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time);
+ interval_time_ = (last_time - first_time_);
+ ++run_;
+ show_results();
+ if(an_instance.current_publisher_effort ==
+ an_instance.final_publisher_effort)
+ {
+ shutdown_flag = true;
+ }
+ }
+ }
+
+ void
+ record_data (ThroughputTest & an_instance)
+ {
+ ++count_; // total count of all received messages
+ if(logres == true)
+ {
+ ++interval_messages_received_;
+ interval_bytes_received_ += interval_data_length_;
+ if (an_instance.seq_num != seq_num_)
+ {
+ ++messages_lost_;
+ /* Reset sequence number */
+ seq_num_ = an_instance.seq_num;
+ }
+ ++seq_num_;
+ }
+ }
+
+ int ACE_TMAIN(int argc, ACE_TCHAR** argv)
+ {
+ ::DDS::ReturnCode_t retcode;
+ HelloListener listener;
+ CmdListener cmd_listener;
+ int main_result = 1; /* error by default */
+ ::DDS::DataReader *data_reader = 0;
+ ::DDS::DataReader *cmd_data_reader = 0;
+ const char * type_name_cmd = 0;
+ const char * type_name = 0;
+
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), domain_id);
+ domain_id = id;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ /* Create the domain participant on domain ID 0 */
+ ::DDS::DomainParticipant *participant =
+ ::DDS::DomainParticipantFactory::get_instance()->
+ create_participant_with_profile(
+ domain_id, /* Domain ID */
+ lib_name,
+ part_name, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!participant)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+ /* Register type before creating topic */
+ type_name = ThroughputTestTypeSupport::get_type_name();
+ retcode = ThroughputTestTypeSupport::register_type(participant, type_name);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to register topic type.\n")));
+ goto clean_exit;
+ }
+ topic = participant->create_topic(
+ "Test data", /* Topic name*/
+ type_name, /* Type name */
+ DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+ /* Register type before creating command topic */
+ type_name_cmd = ThroughputCommandTypeSupport::get_type_name();
+ retcode = ThroughputCommandTypeSupport::register_type(
+ participant, type_name_cmd);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to register command topic type.\n")));
+ goto clean_exit;
+ }
+ /* Create the topic "Hello, World" for the String type */
+ cmd_topic = participant->create_topic(
+ "Command data", /* Topic name*/
+ type_name_cmd, /* Type name */
+ DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!cmd_topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create cmd_topic.\n")));
+ goto clean_exit;
+ }
+ /* Create the data reader using the default publisher */
+ data_reader = participant->create_datareader_with_profile(
+ topic,
+ lib_name,
+ prof_name, /* QoS */
+ &listener, /* Listener */
+ DDS_DATA_AVAILABLE_STATUS);
+ /* Create the command data reader using the default publisher */
+ cmd_data_reader = participant->create_datareader_with_profile(
+ cmd_topic,
+ lib_name,
+ cmd_prof_name, /* QoS */
+ &cmd_listener, /* Listener */
+ DDS_DATA_AVAILABLE_STATUS);
+ if (!data_reader || !cmd_data_reader)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data reader.\n")));
+ goto clean_exit;
+ }
+
+ /* --- Sleep During Asynchronous Reception ---------------------------- */
+
+ /* This thread sleeps forever. When a sample is received, RTI Data
+ * Distribution Service will call the on_data_available_callback function.
+ */
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Ready to read data.\n")));
+ for (;;)
+ {
+ ACE_OS::sleep (1);
+ if(shutdown_flag)
+ {
+ break;
+ }
+ }
+
+ /* --- Clean Up ------------------------------------------------------- */
+
+ main_result = 0;
+clean_exit:
+
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting.")));
+ if (count_ > 0)
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "Number of samples received: %u \n",
+ count_));
+ }
+ else
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "No samples received\n "));
+ }
+ if (participant)
+ {
+ retcode = participant->delete_contained_entities();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = ::DDS::DomainParticipantFactory::get_instance()->
+ delete_participant(participant);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+
+ return main_result;
+ }
+
+ /* This method gets called back by DDS when one or more data samples
+ * have been received.
+ */
+ void HelloListener::on_data_available(::DDS::DataReader *reader)
+ {
+ /* Perform a safe type-cast from a generic data reader into a
+ * specific data reader for the type "ThroughputTestDataReader"
+ */
+ ThroughputTestDataReader * test_reader =
+ ThroughputTestDataReader::narrow(reader);
+ ThroughputTest *instance = new ThroughputTest;
+ if (!test_reader)
+ {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("::DDS::StringDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;)
+ {
+ ::DDS::SampleInfo info;
+ ::DDS::ReturnCode_t retcode = test_reader->take_next_sample(*instance,
+ info);
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ /* No more samples */
+ break;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to take data from data reader,"
+ " error %d.\n"),
+ retcode));
+ return;
+ }
+ if (info.valid_data)
+ {
+ record_data(*instance);
+ }
+ }
+ }
+ /* This method gets called back by DDS when one or more data samples
+ * have beenreceived.
+ */
+ void CmdListener::on_data_available(::DDS::DataReader *reader)
+ {
+ ThroughputCommandDataReader * cmd_reader =
+ ThroughputCommandDataReader::narrow(reader);
+ ThroughputCommand *instance = new ThroughputCommand;
+
+ if (!cmd_reader)
+ {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("::DDS::StringDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;)
+ {
+ ::DDS::SampleInfo info;
+ ::DDS::ReturnCode_t retcode = cmd_reader->take_next_sample(
+ *instance,
+ info);
+ if (retcode == DDS_RETCODE_NO_DATA)
+ {
+ /* No more samples */
+ break;
+ }
+ else if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to take data from data reader,"
+ " error %d.\n"), retcode));
+ return;
+ }
+ if (info.valid_data)
+ {
+ handle_run(*instance);
+ }
+ }
+ }
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/DDS_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/DDS_Sender.mpc
new file mode 100644
index 00000000000..ddca0efee62
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/DDS_Sender.mpc
@@ -0,0 +1,15 @@
+// $Id$
+
+project(*sender_plain) : nddslib, acelib, taolib {
+ after += DDS_Throughput_Base_stub_plain
+ exename = DDS_Sender
+ avoids += ace_for_tao
+ libpaths += ../lib
+ libout = ../lib
+ includes += ../Base
+ libs += DDS_Throughput_Base_stub
+
+ Source_Files {
+ Throughput_Sender.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/Throughput_Sender.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/Throughput_Sender.cpp
new file mode 100644
index 00000000000..8b1eac4715f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/Throughput_Sender.cpp
@@ -0,0 +1,319 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Env_Value_T.h"
+#include "tao/ORB_Core.h"
+#include "Throughput_Base.h"
+#include "Throughput_BaseSupport.h"
+#include "Throughput_BasePlugin.h"
+
+#include <ndds/ndds_namespace_cpp.h>
+
+CORBA::UShort datalen = 1024;
+CORBA::UShort recover_time = 1; // in sec
+CORBA::ULong start_load = 1000;
+CORBA::ULong incr_load = 1000;
+CORBA::ULongLong max_load = 9000;
+CORBA::ULongLong number_of_msg = 0;
+ACE_UINT64 duration_run_ = 10; // in sec
+
+CORBA::ULongLong load = 0;
+ACE_UINT64 start_time = 0;
+
+ThroughputTest *instance = 0;
+ThroughputCommand *instance_cmd = 0;
+::DDS::Topic *topic = 0;
+::DDS::Topic *cmd_topic = 0;
+::DDS::DataWriter *data_writer = 0;
+::DDS::DataWriter *cmd_writer = 0;
+ThroughputTestDataWriter *test_data_writer = 0;
+ThroughputCommandDataWriter *cmd_data_writer = 0;
+
+const char *lib_name = "HelloTest_Library";
+const char *cmd_prof_name = "ThroughputCmdQoS";
+const char *prof_name = "ThroughputQoS";
+const char *part_name = "ThroughputPartQoS";
+
+CORBA::UShort domain_id = 0;
+
+ int
+ parse_args (int argc, ACE_TCHAR *argv[])
+ {
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("d:l:r:s:m:i:O"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'd':
+ domain_id = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'l':
+ datalen = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 'r':
+ recover_time = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case 's':
+ start_load = ACE_OS::atol (get_opts.opt_arg ());
+ break;
+ case 'i':
+ incr_load = ACE_OS::atol (get_opts.opt_arg ());
+ break;
+ case 'm':
+ max_load = ACE_OS::atol (get_opts.opt_arg ());
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-d <domain_id >"
+ "-l <datalen >"
+ "-r <recover_times>"
+ "-s <start_load>"
+ "-i <incr_load>"
+ "-m <max_load>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+ }
+
+ bool
+ write(void)
+ {
+ CORBA::Boolean test_complete = false;
+ load += incr_load;
+ if ( load > max_load)
+ {
+ return false;
+ }
+ else
+ {
+ instance_cmd->command = THROUGHPUT_COMMAND_START;
+ instance_cmd->data_length = datalen;
+ instance_cmd->current_publisher_effort = load;
+ instance_cmd->final_publisher_effort = max_load;
+ try
+ {
+ cmd_data_writer->write(*instance_cmd,::DDS::HANDLE_NIL);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing command.\n")));
+ }
+ test_complete = false;
+ // get start time
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time);
+ while (!test_complete)
+ {
+ for (CORBA::ULongLong current_load = 0;
+ current_load < load && !test_complete;
+ ++current_load, ++instance->seq_num)
+ {
+ try
+ {
+ test_data_writer->write(*instance,::DDS::HANDLE_NIL);
+ ++number_of_msg;
+ }
+ catch (const CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer "
+ "info for <%q>.\n"),
+ number_of_msg));
+ test_complete= true;
+ }
+ }
+ ACE_UINT64 end_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (end_time);
+ ACE_UINT64 interval = end_time - start_time;
+ if(interval > (duration_run_ * 1000 * 1000))
+ {
+ test_complete = true;
+ instance_cmd->command = THROUGHPUT_COMMAND_COMPLETE;
+ cmd_data_writer->write ( *instance_cmd, ::DDS::HANDLE_NIL);
+ }
+ if (!test_complete)
+ {
+ ACE_OS::sleep (recover_time);
+ }
+ }
+ return true;
+ }
+ }
+
+ int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
+ {
+ ::DDS::ReturnCode_t retcode;
+ long overhead_size = 0;
+ const char * type_name_cmd = 0;
+ const char * type_name = 0;
+
+ int main_result = 1; /* error by default */
+
+ ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), domain_id);
+ domain_id = id;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ /* Create the domain participant */
+ ::DDS::DomainParticipant *participant =
+ ::DDS::DomainParticipantFactory::get_instance()->
+ create_participant_with_profile(
+ domain_id, /* Domain ID */
+ lib_name,
+ part_name, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!participant) {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to create domain participant.\n")));
+ goto clean_exit;
+ }
+
+ /* Register type before creating topic */
+ type_name = ThroughputTestTypeSupport::get_type_name();
+ retcode = ThroughputTestTypeSupport::register_type(
+ participant, type_name);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ goto clean_exit;
+ }
+ topic = participant->create_topic(
+ "Test data", /* Topic name*/
+ type_name, /* Type name */
+ DDS_TOPIC_QOS_DEFAULT, /* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+
+
+ if (!topic) {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ /* Register type before creating topic */
+ type_name_cmd = ThroughputCommandTypeSupport::get_type_name();
+ retcode = ThroughputCommandTypeSupport::register_type(
+ participant, type_name_cmd);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ goto clean_exit;
+ }
+ /* Create the topic "Command World" for the String type */
+ cmd_topic = participant->create_topic("Command data", /* Topic name*/
+ type_name_cmd , /* Type name */
+ DDS_TOPIC_QOS_DEFAULT,/* Topic QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!topic)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create topic.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the command writer using the default publisher */
+ cmd_writer = participant->create_datawriter_with_profile(
+ cmd_topic,
+ lib_name,
+ cmd_prof_name, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!cmd_writer)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Unable to create cmd data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Create the data writer using the default publisher */
+ data_writer = participant->create_datawriter_with_profile(
+ topic,
+ lib_name,
+ prof_name, /* QoS */
+ 0, /* Listener */
+ DDS_STATUS_MASK_NONE);
+ if (!data_writer)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data writer.\n")));
+ goto clean_exit;
+ }
+
+ /* Create data sample for writing */
+ instance = ThroughputTestTypeSupport::create_data();
+ if (instance == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create data sample.\n")));
+ goto clean_exit;
+ }
+ overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULongLong);
+ instance->key = 1;
+ instance->seq_num = 0;
+ //instance->data.maximum (MAX_DATA_SEQUENCE_LENGTH);
+ instance->data.length(datalen - overhead_size);
+
+ /* Create data sample for writing */
+ instance_cmd = ThroughputCommandTypeSupport::create_data();
+ if (instance_cmd == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unable to create command sample.\n")));
+ goto clean_exit;
+ }
+
+ /* Perform a safe type-cast from a generic data writer into a
+ * specific data writer for the types "ThroughputTestDataWriter"
+ * and "ThroughputCommandDataWriter"
+ */
+ test_data_writer = ThroughputTestDataWriter::narrow(data_writer);
+ cmd_data_writer = ThroughputCommandDataWriter::narrow(cmd_writer);
+ if (!test_data_writer || !cmd_data_writer)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("DDS_StringDataWriter_narrow failed.\n")));
+ goto clean_exit;
+ }
+
+ // Sleep a couple seconds to allow discovery to happen
+ ACE_OS::sleep (1);
+
+ /* --- Write Data ----------------------------------------------------- */
+ for(CORBA::ULong i = start_load; i < (max_load + incr_load); i+= incr_load)
+ {
+ write();
+ ACE_OS::sleep (5);
+ }
+
+ /* --- Clean Up ------------------------------------------------------- */
+ ACE_OS::sleep (5);
+
+ main_result = 0;
+clean_exit:
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Exiting.")));
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %Q\n",
+ (number_of_msg)));
+ if (participant)
+ {
+ retcode = participant->delete_contained_entities();
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ retcode = ::DDS::DomainParticipantFactory::get_instance()->
+ delete_participant(participant);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Deletion failed.\n")));
+ main_result = 1;
+ }
+ }
+ return main_result;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..eed9024cd6d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="ThroughputPartQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <buffer_size>92160</buffer_size>
+ </receiver_pool>
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.builtin.mask</name>
+ <value>DDS_TRANSPORTBUILTIN_UDPv4</value>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>9216</value>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>92160</value>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>92160</value>
+ </element>
+ </value>
+ </property>
+ </participant_qos>
+ </qos_profile>
+
+ <qos_profile name="ThroughputQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <buffer_size>92160</buffer_size>
+ </receiver_pool>
+ <!--property>
+ <value>
+ <element>
+ <name>dds.transport.builtin.mask</name>
+ <value>DDS_TRANSPORTBUILTIN_UDPv4</value>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>UDP_SIZE_MAX</value>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>UDP_SOCKET_RECV_BUFFER_SIZE</value>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>UDP_SOCKET_SEND_BUFFER_SIZE</value>
+ </element>
+ </value>
+ </property-->
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+
+ <qos_profile name="ThroughputCmdQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <buffer_size>92160</buffer_size>
+ </receiver_pool>
+ <!--property>
+ <value>
+ <element>
+ <name>dds.transport.builtin.mask</name>
+ <value>DDS_TRANSPORTBUILTIN_UDPv4</value>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>UDP_SIZE_MAX</value>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>UDP_SOCKET_RECV_BUFFER_SIZE</value>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>UDP_SOCKET_SEND_BUFFER_SIZE</value>
+ </element>
+ </value>
+ </property-->
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/run_test_dds.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/run_test_dds.pl
new file mode 100755
index 00000000000..88087d43be7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/DDSThroughput/descriptors/run_test_dds.pl
@@ -0,0 +1,27 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+
+$tg_sender = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+$tg_receiver = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+
+$tg_sender->AddLibPath ('../lib');
+$tg_receiver->AddLibPath ('../lib');
+
+print "Start receiver\n";
+$R = $tg_receiver->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Receiver/DDS_receiver", "");
+$R->Spawn();
+print "Start sender\n";
+$S = $tg_sender->CreateProcess ("$CIAO_ROOT/connectors/dds4ccm/performance-tests/DDSThroughput/DDS_Sender/DDS_Sender", "");
+$S->SpawnWaitKill ($tg_sender->ProcessStartWaitInterval () + 180);
+$R->Kill ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl
new file mode 100644
index 00000000000..25f17bbb88b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @file Perf_Keyed_Test_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef PERF_KEYED_TEST_BASE_IDL
+#define PERF_KEYED_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Perf_Keyed_Test_BaseSupport.h"
+
+// Flag used to indicate message is used for initialization only
+const unsigned long INITIALIZE_SIZE = 1234;
+// Flag used to indicate end of test
+const unsigned long FINISHED_SIZE = 1235;
+const unsigned long OVERHEAD_BYTES = 31;
+
+struct PerfKeyedTest {
+ string key; //@key
+ long entity_id; //id of subscriber/publisher
+ unsigned long seq_num;
+ long latency_ping;
+ string bin_data;
+ unsigned long data_len;
+ unsigned long long nanotime;
+};
+
+typedef sequence<PerfKeyedTest> PerfKeyedTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc
new file mode 100644
index 00000000000..a219c04cc49
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Perf_Keyed_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Perf_Keyed_Test_Base_stub
+ dynamicflags += PERF_KEYED_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=PERF_KEYED_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Perf_Keyed_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Perf_Keyed_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=PERF_KEYED_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Perf_Keyed_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl
new file mode 100644
index 00000000000..bf3106d96af
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @file Perf_Keyed_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand translation of the idl3p.
+ */
+
+#ifndef PERF_KEYED_TEST_CONNECTOR_IDL_
+#define PERF_KEYED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Perf_Keyed_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Perf_Keyed_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::PerfKeyedTest, ::PerfKeyedTestSeq> PerfKeyedTest;
+};
+
+module Perf_Keyed_Test
+{
+ connector Perf_Keyed_Test_Connector : ::CCM_DDS::PerfKeyedTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Perf_Keyed_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc
new file mode 100644
index 00000000000..db7eb1cc6e5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Perf_Keyed_Test_Base -l .. -o ../lib -u DDS Perf_Keyed_Test_Connector"
+
+project(DDS_Perf_Keyed_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=PERF_KEYED_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Perf_Keyed_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=PERF_KEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Perf_Keyed_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=PERF_KEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Perf_Keyed_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=PERF_KEYED_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Perf_Keyed_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Perf_Keyed_Test_Connector.idl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Perf_Keyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=PERF_KEYED_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Perf_Keyed_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Perf_Keyed_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_PK_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Connector_lem_gen DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_PK_Test_Connector_lem_stub
+ dynamicflags = PERF_KEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ConnectorEC.h
+ Perf_Keyed_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Connector_idl_gen DDS_Perf_Keyed_Test_Base_stub
+ libs += DDS_Perf_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Perf_Keyed_Test_Connector_stub
+ dynamicflags = PERF_KEYED_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ConnectorC.h
+ Perf_Keyed_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Perf_Keyed_Test_Connector_exec
+ libs += DDS_Perf_Keyed_Test_Connector_stub DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PERF_KEYED_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_Connector_conn.h
+ Perf_Keyed_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Perf_Keyed_Test_Connector_svnt) : ciao_servant, dds4ccm_skel {
+ after += DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_exec DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Perf_Keyed_Test_Connector_svnt
+ libs += DDS_Perf_Keyed_Test_Connector_stub \
+ DDS_PK_Test_Connector_lem_stub \
+ DDS_Perf_Keyed_Test_Base_stub \
+ DDS_Perf_Keyed_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PERF_KEYED_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ConnectorS.cpp
+ Perf_Keyed_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ConnectorS.h
+ Perf_Keyed_Test_Connector_svnt.h
+ Perf_Keyed_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl
new file mode 100644
index 00000000000..6a5617dd958
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Perf_Keyed_Test_Connector.idl"
+
+module Perf_Keyed_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::PerfKeyedTest::DDS_Listen info_listen;
+ port CCM_DDS::PerfKeyedTest::DDS_Write write_ping;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc
new file mode 100644
index 00000000000..e5b0379d8da
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_Perf_Keyed_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Perf_Keyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Perf_Keyed_Test_Receiver.idl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Perf_Keyed_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Perf_Keyed_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Receiver_lem_gen DDS_Perf_Keyed_Test_Receiver_stub \
+ DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub
+ libs += Receiver_stub DDS_Perf_Keyed_Test_Connector_stub \
+ DDS_Perf_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Receiver_idl_gen DDS_Perf_Keyed_Test_Connector_stub \
+ DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_lem_gen
+ libs += DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Receiver_lem_stub DDS_Perf_Keyed_Test_Receiver_stub \
+ DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub \
+ DDS_PK_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \
+ DDS_Perf_Keyed_Test_Connector_stub DDS_PK_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Perf_Keyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \
+ DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \
+ DDS_Perf_Keyed_Test_Receiver_exec DDS_PK_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \
+ DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \
+ Receiver_exec DDS_PK_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_ReceiverS.cpp
+ Perf_Keyed_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_ReceiverS.h
+ Perf_Keyed_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..988740477eb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp
@@ -0,0 +1,198 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Perf_Keyed_Test_Receiver_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "ace/High_Res_Timer.h"
+
+namespace CIAO_Perf_Keyed_Test_Receiver_Impl
+{
+ //============================================================
+ // PerfKeyedTest_Listener_exec_i
+ //============================================================
+ PerfKeyedTest_Listener_exec_i::PerfKeyedTest_Listener_exec_i (
+ Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ PerfKeyedTest_Listener_exec_i::~PerfKeyedTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ PerfKeyedTest_Listener_exec_i::on_one_data (
+ const PerfKeyedTest & an_instance,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+
+ // Record time, not for ping messages , already pinged back.
+ if (an_instance.latency_ping != -1L)
+ {
+ this->callback_.record_time (an_instance.data_len);
+ }
+
+ // Send back a packet if this is a ping
+ if (an_instance.latency_ping == 1L)
+ {
+ this->callback_.write_one(const_cast<PerfKeyedTest&> (an_instance));
+ }
+ }
+
+ void
+ PerfKeyedTest_Listener_exec_i::on_many_data (
+ const PerfKeyedTestSeq & /*an_instance*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : count_ (0L),
+ interval_time_(0L),
+ interval_messages_received_(0L),
+ messages_received_(0L),
+ interval_bytes_received_(0L),
+ bytes_received_(0L),
+ interval_data_length_(0L),
+ first_time_ (0L),
+ finished_(false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::write_one ( PerfKeyedTest & an_instance)
+ {
+ an_instance.latency_ping = -1L;
+ this->writer_->write_one (an_instance, ::DDS::HANDLE_NIL);
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::record_time (unsigned long datalen)
+ {
+ ++this->count_;
+ if( datalen == INITIALIZE_SIZE)
+ {
+ // store the info for this interval
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->first_time_);
+ this->messages_received_=1;
+ }
+ else if ( datalen == FINISHED_SIZE)
+ { // store the info for this interval
+ ACE_UINT64 last_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time);
+ this->interval_time_ = (last_time - this->first_time_);
+ this->interval_messages_received_ = ++this->messages_received_;
+ this->interval_bytes_received_ = this->bytes_received_;
+ this->finished_ = true;
+ }
+ else
+ {
+ ++this->messages_received_;
+ this->interval_data_length_ = datalen + OVERHEAD_BYTES;
+ this->bytes_received_ += datalen + OVERHEAD_BYTES;
+ }
+ }
+
+ ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new PerfKeyedTest_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Perf_Keyed_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ (void) ACE_High_Res_Timer::global_scale_factor ();
+ // enable the datalistener
+ this->start();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ this->writer_ = this->context_->get_connection_write_ping_data ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ if(!this->finished_.value()) // proces ended before received last message
+ {
+ ACE_UINT64 last_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time);
+ this->interval_time_ = (last_time - this->first_time_);
+ this->interval_messages_received_ = ++this->messages_received_;
+ this->interval_bytes_received_ = this->bytes_received_;
+ }
+ if ((this->count_.value () > 0) && (this->interval_time_ > 0))
+ {
+ double per_sec = (double)1000000/ this->interval_time_;
+ double mbps =
+ (this->interval_bytes_received_.value()* per_sec)* (8.0/1000.0/1000.0);
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "Data Length: %u Messages: %u Messages/s(ave): "
+ "%6.01f, Mbps(ave): %7.01f \n",
+ this->interval_data_length_.value(),
+ this->interval_messages_received_.value(),
+ this->interval_messages_received_.value()* per_sec,
+ mbps));
+ }
+ else
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "No samples received\n "));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Perf_Keyed_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h
new file mode 100644
index 00000000000..9a290f7a311
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Perf_Keyed_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+#include <map>
+
+namespace CIAO_Perf_Keyed_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> Atomic_Bool;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long> Atomic_Long;
+
+
+ //============================================================
+ // PerfKeyedTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export PerfKeyedTest_Listener_exec_i
+ : public virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PerfKeyedTest_Listener_exec_i (Receiver_exec_i &callback);
+ virtual ~PerfKeyedTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const PerfKeyedTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const PerfKeyedTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+ void record_time (unsigned long datalen);
+
+ virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void write_one (PerfKeyedTest & an_instance);
+
+ private:
+ ::Perf_Keyed_Test::CCM_Receiver_Context_var context_;
+ CCM_DDS::PerfKeyedTest::Writer_var writer_;
+
+ Atomic_ULong count_;
+ ACE_UINT64 interval_time_;
+ Atomic_Long interval_messages_received_;
+ Atomic_Long messages_received_;
+ Atomic_Long interval_bytes_received_;
+ Atomic_Long bytes_received_;
+ Atomic_Long interval_data_length_;
+ ACE_UINT64 first_time_;
+ Atomic_Bool finished_;
+
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Perf_Keyed_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl
new file mode 100644
index 00000000000..b5ac3c307cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_PERF_KEYED_TEST_SENDER_IDL
+#define DDS_PERF_KEYED_TEST_SENDER_IDL
+
+#include "Connector/Perf_Keyed_Test_Connector.idl"
+
+
+module Perf_Keyed_Test
+{
+ component Sender
+ {
+ port CCM_DDS::PerfKeyedTest::DDS_Write info_write;
+ attribute unsigned short keys;
+ attribute unsigned long iterations;
+ attribute unsigned short latency_count; //number of samples sent before a latency ping packet is sent. default 100000, < sample_count
+ attribute unsigned short sleep; //time in ms to sleep between each send
+ attribute unsigned short spin;
+ attribute unsigned short datalen; //minimal 32
+ attribute unsigned short number_of_sub; //number of subscribers
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ port CCM_DDS::PerfKeyedTest::DDS_Listen ping_listen;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc
new file mode 100644
index 00000000000..ef148c28cd1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Perf_Keyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Perf_Keyed_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Perf_Keyed_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Perf_Keyed_Test_Sender.idl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Perf_Keyed_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Perf_Keyed_Test_SenderE.idl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Sender_lem_gen DDS_Perf_Keyed_Test_Sender_stub \
+ DDS_Perf_Keyed_Test_Base_stub
+ libs += DDS_Perf_Keyed_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_SenderEC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Sender_idl_gen DDS_Perf_Keyed_Test_Base_stub \
+ DDS_Perf_Keyed_Test_Connector_stub
+ libs += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_SenderC.inl
+ }
+}
+
+project(DDS_Perf_Keyed_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Sender_lem_stub DDS_Perf_Keyed_Test_Sender_stub \
+ DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Perf_Keyed_Test_Base_stub \
+ DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Perf_Keyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Perf_Keyed_Test_Connector_stub \
+ DDS_Perf_Keyed_Test_Connector_svnt DDS_PK_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \
+ DDS_PK_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Perf_Keyed_Test_SenderS.cpp
+ Perf_Keyed_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Perf_Keyed_Test_SenderS.h
+ Perf_Keyed_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Perf_Keyed_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..3d0505507fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp
@@ -0,0 +1,571 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Perf_Keyed_Test_Sender_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+#include "ace/High_Res_Timer.h"
+
+
+namespace CIAO_Perf_Keyed_Test_Sender_Impl
+{
+ //============================================================
+ // PerfKeyedTest_Listener_exec_i
+ //============================================================
+ PerfKeyedTest_Listener_exec_i::PerfKeyedTest_Listener_exec_i (
+ Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ PerfKeyedTest_Listener_exec_i::~PerfKeyedTest_Listener_exec_i (void)
+ {
+ }
+
+ //read messages, only 'ping'messages (ping = -1) which returned from the subscribers, to measure latency time are important.
+ void
+ PerfKeyedTest_Listener_exec_i::on_one_data (
+ const PerfKeyedTest & an_instance,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ //only interested in messages received with a latency_ping = -1 ('ping'messages)
+ if( an_instance.latency_ping == -1)
+ {
+ this->callback_.record_time (an_instance.nanotime);
+ }
+ }
+
+ void
+ PerfKeyedTest_Listener_exec_i::on_many_data (
+ const PerfKeyedTestSeq & /*an_instance*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ }
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &matched, int number_of_subscribers, Sender_exec_i &callback)
+ : callback_ (callback),
+ matched_ (matched),
+ number_of_subscribers_ (number_of_subscribers)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ CORBA::ULong kind = status_kind;
+ if((! ::CORBA::is_nil(the_entity)) &&
+ (kind==DDS::PUBLICATION_MATCHED_STATUS))
+ {
+ ::DDS::PublicationMatchedStatus_var stat;
+ DDS::DataWriter_var wr = ::DDS::DataWriter::_narrow(the_entity);
+ if(::CORBA::is_nil(wr))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ ::DDS::ReturnCode_t retval = wr->get_publication_matched_status(stat.out ());
+ if (retval == DDS::RETCODE_OK)
+ {
+
+ if((stat.in().current_count >=
+ (this->number_of_subscribers_ + 1)) &&
+ !this->matched_.value())
+ {
+ this->matched_ = true;
+ this->callback_.start();
+ }
+ }
+ }
+ }
+
+ //============================================================
+ // WriteTickerHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.write_one ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (1000),
+ keys_ (1),
+ latency_count_(100),
+ sleep_(10),
+ spin_(100),
+ datalen_(100),
+ matched_(false),
+ number_of_subscribers_(1),
+ tv_total_ (0L),
+ tv_max_ (0L),
+ tv_min_ (0L),
+ count_ (0), // Number of returned pings
+ number_of_msg_(0), // Number of sent messages
+ timer_(false)
+ {
+ this->ticker_ = new WriteTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write_one (void)
+ {
+ if( this->number_of_msg_ == 0)
+ {
+ //first message
+ this->last_key_->second->data_len = INITIALIZE_SIZE;
+ this->last_key_->second->bin_data = CORBA::string_alloc(0);
+
+ }
+ else if((this->iterations_ != 0) &&
+ (this->number_of_msg_ == ((this->iterations_ * this->keys_) -1)))
+ {
+ //last message
+ this->last_key_->second->data_len = FINISHED_SIZE;
+ this->last_key_->second->bin_data = CORBA::string_alloc(0);
+
+ }
+ else
+ {
+ this->last_key_->second->data_len = this->datalen_;
+ this->last_key_->second->bin_data = CORBA::string_alloc(this->datalen_);
+ }
+
+ if((this->iterations_ != 0) && (this->number_of_msg_ >=
+ (this->iterations_ * this->keys_)))
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ this->timer_ = false;
+ }
+ else
+ {
+ try
+ {
+ this->last_key_->second->seq_num = this->number_of_msg_;
+ // Send some messages (latency_ping = 1L) with indicator that
+ // message has to be returned by the subscriber
+ // TO DO : use other selection if more then one key is used.
+ if (( this->number_of_msg_ % this->latency_count_) == 0)
+ {
+ this->last_key_->second->latency_ping = 1L;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (
+ this->last_key_->second->nanotime);
+ }
+ else
+ {
+ this->last_key_->second->latency_ping = 0L;
+ }
+
+ this->writer_->write_one (this->last_key_->second,
+ ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing a sample.\n")));
+ }
+ ++this->last_key_;
+ ++this->number_of_msg_;
+
+ if (this->last_key_ == this->samples_.end ())
+ {
+ // start over again.
+ this->last_key_ = this->samples_.begin ();
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::write_one_with_spin (void)
+ {
+ double ad, bd, cd;
+ volatile double * a, * b, * c;
+
+ a = &ad;
+ b = &bd;
+ c = &cd;
+
+ for (long loop=0; (this->iterations_ == 0)||(loop <this->iterations_);
+ ++loop )
+ {
+ if ( this->spin_ > 0 )
+ {
+ // spin, spin, spin
+ for (int m=0; m<this->spin_; ++m) {
+ *a = 1.1;
+ *b = 3.1415;
+ *c = *a/(*b)*m;
+ }
+ }
+ if( this->number_of_msg_ == 0)
+ {
+ // first message
+ this->last_key_->second->data_len = INITIALIZE_SIZE;
+ this->last_key_->second->bin_data = CORBA::string_alloc(0);
+
+ }
+ else if( (this->iterations_ != 0) &&
+ (this->number_of_msg_ ==
+ ((this->iterations_ * this->keys_) -1)))
+ {
+ // last message
+ this->last_key_->second->data_len = FINISHED_SIZE;
+ this->last_key_->second->bin_data = CORBA::string_alloc(0);
+
+ }
+ else
+ {
+ this->last_key_->second->data_len = this->datalen_;
+ this->last_key_->second->bin_data =
+ CORBA::string_alloc(this->datalen_);
+ }
+ try
+ {
+ this->last_key_->second->seq_num = loop;
+ this->last_key_->second->latency_ping = 0L;
+
+ // if ping required
+ if (( this->number_of_msg_ % this->latency_count_) == 0)
+ {
+ // send some messages (latency_ping = 1L) with indicator that
+ // message has to be returned by the subscriber
+ this->last_key_->second->latency_ping = 1L;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (
+ this->last_key_->second->nanotime);
+ }
+ this->writer_->write_one (this->last_key_->second,
+ ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key_->first.c_str ()));
+ }
+ ++this->last_key_;
+ if (this->last_key_ == this->samples_.end ())
+ { // onto the next iteration
+ this->last_key_ = this->samples_.begin ();
+ }
+ ++this->number_of_msg_;
+ }
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->matched_,
+ this->number_of_subscribers_,
+ *this);
+ }
+
+ ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr
+ Sender_exec_i::get_ping_listen_data_listener (void)
+ {
+ return new PerfKeyedTest_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Sender_exec_i::get_ping_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ PerfKeyedTest *new_key = new PerfKeyedTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->seq_num = 0;
+ ::CORBA::ULong length = this->datalen_;
+ new_key->data_len = length;
+ new_key->bin_data = CORBA::string_alloc(length);
+ this->samples_[key] = new_key;
+ }
+ this->last_key_ = this->samples_.begin ();
+ // this->sleep_ is in ms
+ unsigned int sec = this->sleep_/1000;
+ unsigned int usec = (this->sleep_ % 1000) * 1000;
+
+ // if sleep and spin both > 0, use sleep value and ignore spin value
+ if(this->sleep_ > 0) // use reactor timer to sleep
+ {
+ (void) ACE_High_Res_Timer::global_scale_factor ();
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->timer_queue()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer(
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 0),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ this->timer_ = true;
+ }
+ else //use spin i.o sleep
+ {
+ ACE_OS::sleep(5);
+ this->write_one_with_spin();
+ }
+ }
+
+void
+Sender_exec_i::record_time (unsigned long long nanotime)
+ {
+ ACE_UINT64 testend;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (testend);
+ ACE_UINT64 interval = (testend - nanotime);
+
+ ++this->count_;
+ long duration = static_cast <CORBA::Long>(interval);
+ this->tv_total_ += duration;
+ if (duration > this->tv_max_.value ()|| (this->tv_max_.value () == 0L))
+ this->tv_max_ = duration;
+ if (duration < this->tv_min_.value () || (this->tv_min_.value () == 0L))
+ this->tv_min_ = duration;
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::ULong iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::latency_count (void)
+ {
+ return this->latency_count_;
+ }
+
+ void
+ Sender_exec_i::latency_count (::CORBA::UShort latency_count)
+ {
+ this->latency_count_ = latency_count;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::sleep (void)
+ {
+ return this->sleep_;
+ }
+
+ void
+ Sender_exec_i::sleep (::CORBA::UShort sleep)
+ {
+ this->sleep_ = sleep;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::spin (void)
+ {
+ return this->spin_;
+ }
+
+ void
+ Sender_exec_i::spin (::CORBA::UShort spin)
+ {
+ this->spin_ = spin;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::number_of_sub (void)
+ {
+ return this->number_of_subscribers_;
+ }
+
+ void
+ Sender_exec_i::number_of_sub (::CORBA::UShort number_of_sub)
+ {
+ if (number_of_sub > 0)
+ {
+ this->number_of_subscribers_ = number_of_sub;
+ }
+ else
+ {
+ this->number_of_subscribers_ = 1;
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::datalen (void)
+ {
+ return this->datalen_;
+ }
+
+ void
+ Sender_exec_i::datalen (::CORBA::UShort datalen)
+ {
+ if(datalen <= OVERHEAD_BYTES)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: datalen has to be bigger as %u\n"),
+ OVERHEAD_BYTES));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ this->datalen_ = datalen - OVERHEAD_BYTES;
+ }
+
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Perf_Keyed_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_ping_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate:"
+ " Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ if (this->timer_.value ())
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n",
+ (this->number_of_msg_ + 1)));
+
+ if( this->count_.value () > 0)
+ {
+ double avg = this->tv_total_.value () / this->count_.value ();
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER latency time-one way,in usec :\n"
+ "Total time<%u>,\nNumber of latency messages <%u>,"
+ "\nAvg <%6.01f>,\nMin <%u>,\nMax <%u>.\n",
+ this->tv_total_.value ()/2,
+ this->count_.value (),
+ avg/2,
+ this->tv_min_.value ()/2,
+ this->tv_max_.value ()/2));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
+ "No samples reveived back.\n"));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Perf_Keyed_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h
new file mode 100644
index 00000000000..d9f03ab4108
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h
@@ -0,0 +1,181 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Perf_Keyed_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include <map>
+
+namespace CIAO_Perf_Keyed_Test_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_Long;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+ //============================================================
+ // PerfKeyedTest_Listener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export PerfKeyedTest_Listener_exec_i
+ : public virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PerfKeyedTest_Listener_exec_i (Sender_exec_i &callback);
+ virtual ~PerfKeyedTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const PerfKeyedTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const PerfKeyedTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &, int,
+ Sender_exec_i &callback_);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Sender_exec_i &callback_;
+ Atomic_Boolean &matched_;
+ int number_of_subscribers_;
+
+ };
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr
+ get_ping_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_ping_listen_status (void);
+
+ void record_time (unsigned long long nanotime);
+
+ virtual ::CORBA::ULong iterations (void);
+ virtual void iterations (::CORBA::ULong iterations);
+
+ virtual ::CORBA::UShort keys (void);
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::CORBA::UShort latency_count (void);
+ virtual void latency_count (::CORBA::UShort latency_count);
+
+ virtual ::CORBA::UShort sleep (void);
+ virtual void sleep (::CORBA::UShort sleep);
+
+ virtual ::CORBA::UShort spin (void);
+ virtual void spin (::CORBA::UShort spin);
+
+ virtual ::CORBA::UShort number_of_sub (void);
+ virtual void number_of_sub (::CORBA::UShort number_of_sub);
+
+ virtual ::CORBA::UShort datalen (void);
+ virtual void datalen (::CORBA::UShort datalen);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void write_one (void);
+ void write_one_with_spin (void);
+
+ private:
+ ::Perf_Keyed_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::PerfKeyedTest::Writer_var writer_;
+
+ WriteTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ CORBA::UShort latency_count_;
+ CORBA::UShort sleep_;
+ CORBA::UShort spin_;
+ CORBA::UShort datalen_;
+
+ Atomic_Boolean matched_;
+ CORBA::UShort number_of_subscribers_;
+ Atomic_Long tv_total_;
+ Atomic_Long tv_max_;
+ Atomic_Long tv_min_;
+ Atomic_Long count_;
+ CORBA::UShort number_of_msg_;
+ Atomic_Boolean timer_;
+
+ typedef std::map<ACE_CString, PerfKeyedTest_var> Writer_Table;
+ Writer_Table samples_;
+
+ Writer_Table::iterator last_key_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Perf_Keyed_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp
new file mode 100644
index 00000000000..3a7b24995cc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp
@@ -0,0 +1,492 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance">
+ <name>Perf_Keyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#LatencyQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2">
+ <name>Perf_Keyed_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#LatencyQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>latency_count</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>100</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>spin</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>datalen</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>999</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection_sub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_ping_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp
new file mode 100644
index 00000000000..ed332d52d62
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp
@@ -0,0 +1,344 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance">
+ <name>Perf_Keyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#LatencyQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>0</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>latency_count</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>100</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>2</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>spin</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1000</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>datalen</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>999</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ </Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp
new file mode 100644
index 00000000000..8c61cdb7348
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp
@@ -0,0 +1,344 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance">
+ <name>Perf_Keyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#LatencyQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>0</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>latency_count</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>100</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>spin</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1000</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>3</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>datalen</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>999</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ </Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp
new file mode 100644
index 00000000000..ddc3cd9a87f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp
@@ -0,0 +1,344 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance">
+ <name>Perf_Keyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#BestEffortQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>latency_count</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>100</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>2</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>spin</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1000</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>3</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>datalen</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>999</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ </Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp
new file mode 100644
index 00000000000..fc68d25baae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp
@@ -0,0 +1,246 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2">
+ <name>Perf_Keyed_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#LatencyQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_sub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_ping_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp
new file mode 100644
index 00000000000..155e4b4bd05
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp
@@ -0,0 +1,247 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Perf_Keyed_Test_Depl_1</label>
+ <UUID>Perf_Keyed_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation">
+ <name>Perf_Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2">
+ <name>Perf_Keyed_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Perf_Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#BestEffortQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_sub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_ping_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact">
+ <name>Perf_Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact">
+ <name>Perf_Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact">
+ <name>Perf_Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Perf_Keyed_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README
new file mode 100644
index 00000000000..5c60c72c2ab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README
@@ -0,0 +1,24 @@
+
+These tests test the performance with different options.
+
+- test one publisher and one subscriber in 1 process:
+ run_test.pl with resp. Plan.cdp
+
+
+- default test (RELIABLE) , separate publisher and subscriber:
+ run_pub.pl and run_sub.pl with resp. Plan_pub.cdp and Plan_sub.cdp .
+
+- test with one publisher and three separate subscribers:
+ run_pub3.pl with Plan_pub3.cdp and run_sub.pl, run_sub2.pl, run_sub3.pl all with Plan_sub.cdp .
+
+- BEST_EFFORT test, separate publisher and subscriber:
+ run_pub_BE.pl and run_sub_BE.pl with resp. Plan_pub_BE.cdp and Plan_sub_BE.cdp .
+
+
+To test changes in the next attributes, changes this values in the publisher cdp-files:
+latency_count : indicates the number of messages minus 1 between two latency messages
+iterations : the number of messages from one instance to send. 0 = INFINITY .
+datalen: the datalen of a message (minimal 32).
+sleep: time in ms to sleep before writing the next message
+spin: number of times to do a code loop before writing the next message, sleep has to be 0 .
+keys: number of instances. (default 1) MORE THEN 1 NOT IMPLEMENTED YET. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..9b472b3f879
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="LatencyQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+
+ </qos_profile>
+ <qos_profile name="BestEffortQoS" is_default_qos="false">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl
new file mode 100755
index 00000000000..7adaac62e2d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "Sender.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_pub.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60004/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl
new file mode 100755
index 00000000000..f210522bace
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "Sender.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_pub3.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60004/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl
new file mode 100755
index 00000000000..7e84b92407a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "Sender.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_pub_BE.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60004/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl
new file mode 100755
index 00000000000..62fc97da27d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60002 );
+@iorbases = ( "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns1.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM1.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_sub.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl
new file mode 100755
index 00000000000..26a273dd7b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60005 );
+@iorbases = ( "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns1.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM2.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_sub.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60006 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60006 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60006/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl
new file mode 100755
index 00000000000..8fa41296ab7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60007 );
+@iorbases = ( "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns1.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM3.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_sub.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60008 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60008 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60008/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl
new file mode 100755
index 00000000000..d178bdf4359
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl
@@ -0,0 +1,219 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60002 );
+@iorbases = ( "Receiver.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns1.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM1.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_sub_BE.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl
new file mode 100755
index 00000000000..943d0e31404
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl
@@ -0,0 +1,221 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 120 seconds to allow task to complete\n";
+sleep (120);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.idl
new file mode 100644
index 00000000000..8b815644342
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file LatencyTT_Test_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef LATENCYTT_TEST_BASE_IDL
+#define LATENCYTT_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/LatencyTT_Test_BaseSupport.h"
+
+const short MAX_DATA_SEQUENCE_LENGTH = 8192;
+
+#pragma DCPS_DATA_TYPE "LatencyTTTest"
+
+struct LatencyTTTest {
+ long seq_num;
+ sequence<octet, MAX_DATA_SEQUENCE_LENGTH> data;
+ };
+
+typedef sequence<LatencyTTTest> LatencyTTTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.mpc
new file mode 100644
index 00000000000..b0e7e7e26b6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Base/LatencyTT_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_LatencyTT_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_LatencyTT_Test_Base_stub
+ dynamicflags += LATENCYTT_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=LATENCYTT_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=LatencyTT_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ LatencyTT_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=LATENCYTT_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ LatencyTT_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.idl
new file mode 100644
index 00000000000..9d86cb5385a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file LatencyTT_Test_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand translation of the idl3p.
+ */
+
+#ifndef LATENCYTT_TEST_CONNECTOR_IDL_
+#define LATENCYTT_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/LatencyTT_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/LatencyTT_Test_ConnectorE.idl"
+
+module LatencyTT_Test
+{
+ module ::CCM_DDS::Typed < ::LatencyTTTest, ::LatencyTTTestSeq> LatencyTTTestConn;
+ connector LatencyTT_Test_Connector : LatencyTTTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* LatencyTT_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.mpc
new file mode 100644
index 00000000000..f6a85b8b7ab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Connector/LatencyTT_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LatencyTT_Test_Base -l .. -o ../lib -u DDS LatencyTT_Test_Connector"
+
+project(DDS_LatencyTT_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LATENCYTT_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=LatencyTT_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=LATENCYTT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=LatencyTT_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=LATENCYTT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=LatencyTT_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=LATENCYTT_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=LatencyTT_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ LatencyTT_Test_Connector.idl
+ }
+}
+
+project(DDS_LatencyTT_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LatencyTT_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=LATENCYTT_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=LatencyTT_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ LatencyTT_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_LTT_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Connector_lem_gen DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_LatencyTT_Test_Base_stub DDS_LatencyTT_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LTT_Test_Connector_lem_stub
+ dynamicflags = LATENCYTT_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ConnectorEC.h
+ LatencyTT_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Connector_idl_gen DDS_LatencyTT_Test_Base_stub
+ libs += DDS_LatencyTT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LatencyTT_Test_Connector_stub
+ dynamicflags = LATENCYTT_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ConnectorC.h
+ LatencyTT_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_LTT_Test_Connector_lem_stub DDS_LatencyTT_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_LatencyTT_Test_Connector_exec
+ libs += DDS_LatencyTT_Test_Connector_stub DDS_LTT_Test_Connector_lem_stub DDS_LatencyTT_Test_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LATENCYTT_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_Connector_conn.h
+ LatencyTT_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LatencyTT_Test_Connector_svnt) : ciao_servant, dds4ccm_skel {
+ after += DDS_LTT_Test_Connector_lem_stub DDS_LatencyTT_Test_Connector_exec DDS_LatencyTT_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_LatencyTT_Test_Connector_svnt
+ libs += DDS_LatencyTT_Test_Connector_stub \
+ DDS_LTT_Test_Connector_lem_stub \
+ DDS_LatencyTT_Test_Base_stub \
+ DDS_LatencyTT_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LATENCYTT_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ConnectorS.cpp
+ LatencyTT_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ConnectorS.h
+ LatencyTT_Test_Connector_svnt.h
+ LatencyTT_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.idl
new file mode 100644
index 00000000000..751094ae18f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/LatencyTT_Test_Connector.idl"
+
+module LatencyTT_Test
+{
+ component Receiver
+ {
+ port LatencyTTTestConn::DDS_Listen info_listen;
+ port LatencyTTTestConn::DDS_Write write_ping;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.mpc
new file mode 100644
index 00000000000..5f51e369ed5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver.mpc
@@ -0,0 +1,152 @@
+// $Id$
+
+project(DDS_LatencyTT_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LatencyTT_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ LatencyTT_Test_Receiver.idl
+ }
+}
+
+project(DDS_LatencyTT_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LatencyTT_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ LatencyTT_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_LatencyTT_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Receiver_lem_gen DDS_LatencyTT_Test_Receiver_stub \
+ DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Base_stub
+ libs += Receiver_stub DDS_LatencyTT_Test_Connector_stub \
+ DDS_LatencyTT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Receiver_idl_gen DDS_LatencyTT_Test_Connector_stub \
+ DDS_LatencyTT_Test_Base_stub DDS_LatencyTT_Test_Connector_lem_gen
+ libs += DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Receiver_lem_stub DDS_LatencyTT_Test_Receiver_stub \
+ DDS_LatencyTT_Test_Base_stub DDS_LatencyTT_Test_Connector_stub \
+ DDS_LTT_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_LatencyTT_Test_Base_stub \
+ DDS_LatencyTT_Test_Connector_stub DDS_LTT_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LatencyTT_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Receiver_lem_stub DDS_LatencyTT_Test_Base_stub \
+ DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Connector_svnt \
+ DDS_LatencyTT_Test_Receiver_exec DDS_LTT_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_LatencyTT_Test_Base_stub \
+ DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Connector_svnt \
+ DDS_LatencyTT_Test_Connector_stub \
+ Receiver_exec DDS_LTT_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_ReceiverS.cpp
+ LatencyTT_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_ReceiverS.h
+ LatencyTT_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..8b1aae943cc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.cpp
@@ -0,0 +1,135 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "LatencyTT_Test_Receiver_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "ace/High_Res_Timer.h"
+
+namespace CIAO_LatencyTT_Test_Receiver_Impl
+{
+ //============================================================
+ // LatencyTTTest_Listener_exec_i
+ //============================================================
+ LatencyTTTest_Listener_exec_i::LatencyTTTest_Listener_exec_i (
+ Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ LatencyTTTest_Listener_exec_i::~LatencyTTTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ LatencyTTTest_Listener_exec_i::on_one_data (
+ const LatencyTTTest & an_instance,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->callback_.write_one(an_instance);
+ }
+
+ void
+ LatencyTTTest_Listener_exec_i::on_many_data (
+ const LatencyTTTestSeq & /*an_instance*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : count_ (0L)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::write_one (const LatencyTTTest & an_instance)
+ {
+ ++this->count_;
+ this->writer_->write_one(an_instance, ::DDS::HANDLE_NIL);
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new LatencyTTTest_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LatencyTT_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ // Enable the datalistener.
+ this->start();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ this->writer_ = this->context_->get_connection_write_ping_data ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ if (this->count_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR RECEIVER: No messages sent back.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "Total number of messages sent back: %u \n",
+ this->count_));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LatencyTT_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.h
new file mode 100644
index 00000000000..d6f4b6c35c9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Receiver/LatencyTT_Test_Receiver_exec.h
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "LatencyTT_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_LatencyTT_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // LatencyTTTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export LatencyTTTest_Listener_exec_i
+ : public virtual ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ LatencyTTTest_Listener_exec_i (Receiver_exec_i &callback);
+ virtual ~LatencyTTTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const LatencyTTTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const LatencyTTTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+ void record_time (unsigned long datalen);
+
+ virtual ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void write_one (const LatencyTTTest & an_instance);
+
+ private:
+ ::LatencyTT_Test::CCM_Receiver_Context_var context_;
+ ::LatencyTT_Test::LatencyTTTestConn::Writer_var writer_;
+
+ CORBA::ULong count_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LatencyTT_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.idl
new file mode 100644
index 00000000000..8e86adfc33a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_LATENCYTT_TEST_SENDER_IDL
+#define DDS_LATENCYTT_TEST_SENDER_IDL
+
+#include "Connector/LatencyTT_Test_Connector.idl"
+
+module LatencyTT_Test
+{
+ component Sender
+ {
+ port LatencyTTTestConn::DDS_Write info_write;
+ port LatencyTTTestConn::DDS_Listen ping_listen;
+
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+
+ attribute unsigned long iterations;
+ attribute unsigned short sleep;
+ attribute unsigned short number_of_sub; //number of subscribers
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.mpc
new file mode 100644
index 00000000000..7f6be3a7c79
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender.mpc
@@ -0,0 +1,148 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LatencyTT_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_LatencyTT_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_LatencyTT_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ LatencyTT_Test_Sender.idl
+ }
+}
+
+project(DDS_LatencyTT_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LatencyTT_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ LatencyTT_Test_SenderE.idl
+ }
+}
+
+project(DDS_LatencyTT_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Sender_lem_gen DDS_LatencyTT_Test_Sender_stub \
+ DDS_LatencyTT_Test_Base_stub
+ libs += DDS_LatencyTT_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_SenderEC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Sender_idl_gen DDS_LatencyTT_Test_Base_stub \
+ DDS_LatencyTT_Test_Connector_stub
+ libs += DDS_LatencyTT_Test_Base_stub DDS_LatencyTT_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_SenderC.inl
+ }
+}
+
+project(DDS_LatencyTT_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Sender_lem_stub DDS_LatencyTT_Test_Sender_stub \
+ DDS_LTT_Test_Connector_lem_stub DDS_LatencyTT_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_LatencyTT_Test_Base_stub \
+ DDS_LTT_Test_Connector_lem_stub DDS_LatencyTT_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(DDS_LatencyTT_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LatencyTT_Test_Base_stub DDS_LatencyTT_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_LatencyTT_Test_Connector_stub \
+ DDS_LatencyTT_Test_Connector_svnt DDS_LTT_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_LatencyTT_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_LatencyTT_Test_Connector_stub DDS_LatencyTT_Test_Connector_svnt \
+ DDS_LTT_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LatencyTT_Test_SenderS.cpp
+ LatencyTT_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ LatencyTT_Test_SenderS.h
+ LatencyTT_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ LatencyTT_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..780657de268
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.cpp
@@ -0,0 +1,562 @@
+// -*- C++ -*-
+// $Id$
+
+#include "LatencyTT_Test_Sender_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+#include "ace/High_Res_Timer.h"
+
+namespace CIAO_LatencyTT_Test_Sender_Impl
+{
+
+ //============================================================
+ // LatencyTTTest_Listener_exec_i
+ //============================================================
+ LatencyTTTest_Listener_exec_i::LatencyTTTest_Listener_exec_i (
+ Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ LatencyTTTest_Listener_exec_i::~LatencyTTTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ LatencyTTTest_Listener_exec_i::on_one_data (
+ const LatencyTTTest & an_instance,
+ const ::CCM_DDS::ReadInfo &)
+ {
+ ACE_UINT64 receive_time = 0;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( receive_time);
+ this->callback_.read(const_cast<LatencyTTTest&> (an_instance), receive_time);
+ }
+
+ void
+ LatencyTTTest_Listener_exec_i::on_many_data (
+ const LatencyTTTestSeq & /*an_instance*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ }
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_Boolean &matched,
+ int number_of_subscribers,
+ Sender_exec_i &callback)
+ : callback_ (callback),
+ matched_ (matched),
+ number_of_subscribers_ (number_of_subscribers)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (! ::CORBA::is_nil (the_entity) &&
+ status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ ::DDS::PublicationMatchedStatus_var stat;
+ DDS::DataWriter_var wr = ::DDS::DataWriter::_narrow(the_entity);
+ if(::CORBA::is_nil(wr))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ ::DDS::ReturnCode_t retval = wr->get_publication_matched_status(stat.out ());
+ if (retval == DDS::RETCODE_OK)
+ {
+ if (stat.in().current_count >= this->number_of_subscribers_ &&
+ !this->matched_.value())
+ {
+ this->matched_ = true;
+ this->callback_.start();
+ }
+ }
+ }
+ }
+ //============================================================
+ // WriteTickerHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.write_one ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (1000),
+ datalen_(100),
+ datalen_idx_(0),
+ nr_of_runs_(10),
+ sleep_(10),
+ matched_(false),
+ number_of_subscribers_(1),
+ tv_total_ (0L),
+ tv_max_ (0L),
+ tv_min_ (0L),
+ count_ (0), // Number of returned messages.
+ number_of_msg_(0), // Number of sent messages.
+ timer_(false),
+ received_(false),
+ seq_num_(0),
+ sigma_duration_squared_(0)
+ {
+ this->ticker_ = new WriteTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ static int compare_two_longs (const void *long1, const void *long2)
+ {
+ return (int)(*(ACE_UINT64*)long1 - *(ACE_UINT64*)long2);
+ }
+
+ void
+ Sender_exec_i::write_one (void)
+ {
+ if((this->number_of_msg_ == 0) && (this->datalen_idx_ == 0))
+ {
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_test_);
+ }
+ // First message sent always, next messages only as previous sent message
+ // is received back.
+ if( (this->number_of_msg_ == 0) || ( this->received_.value()))
+ {
+ // All messages send, stop timer.
+ if((this->iterations_ != 0) &&
+ (this->number_of_msg_ >= this->iterations_ ))
+ {
+ if( this->datalen_idx_ >= (this->nr_of_runs_ - 1))
+ {
+ this->stop();
+ this->timer_ = false;
+ this->calc_results();
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->end_time_test_);
+
+ }
+ else
+ {
+ this->calc_results();
+ this->reset_results();
+ ++this->datalen_idx_;
+ this->datalen_ = this->datalen_range_[this->datalen_idx_];
+ this->test_topic_.data.length(this->datalen_);
+ }
+ }
+ else
+ {
+ try
+ {
+ this->test_topic_.seq_num = this->number_of_msg_;
+
+ // Keep last sent seq_num, to control if message is sent back.
+ this->seq_num_ = this->number_of_msg_;
+ this->received_ = false;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_);
+ this->writer_->write_one (this->test_topic_, ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while wrinting sample with sequence_number <%u>.\n"),
+ this->test_topic_.seq_num));
+ }
+ ++this->number_of_msg_;
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::read(LatencyTTTest & an_instance,ACE_UINT64 receive_time)
+ {
+ if (an_instance.seq_num == this->seq_num_)
+ {
+ this->record_time( receive_time);
+ this->received_ = true;
+ }
+ }
+
+ void
+ Sender_exec_i::reset_results()
+ {
+ this->count_ = 0;
+ this->duration_times = new ACE_UINT64[this->iterations_];
+ this->tv_total_ = 0L;
+ this->tv_max_ = 0L;
+ this->tv_min_ = 0L;
+ this->number_of_msg_ = 0;
+ this->received_ = false;
+ this->seq_num_ = 0;
+ this->sigma_duration_squared_ = 0;
+ }
+
+ void
+ Sender_exec_i::calc_results()
+ {
+ // Sort all duration times.
+ qsort(this->duration_times,
+ this->count_,
+ sizeof(ACE_UINT64),
+ compare_two_longs);
+
+ // Show latency_50_percentile, latency_90_percentile,
+ // latency_99_percentile and latency_99.99_percentile.
+ // For example duration_times[per50] is the median i.e. 50% of the
+ // samples have a latency time <= duration_times[per50]
+ int const per50 = this->count_ / 2;
+ int const per90 = (int)(this->count_ * 0.90);
+ int const per99 = (int)(this->count_ * 0.990);
+ int const per9999 = (int)(this->count_ * 0.9999);
+
+ double const avg = (double)(this->tv_total_ / this->count_);
+ // Calculate standard deviation.
+ double const roundtrip_time_std = sqrt(
+ (this->sigma_duration_squared_ / (double)this->count_) -
+ (avg * avg));
+
+ // Show values as float, in order to be comparable with RTI performance test.
+ if (this->count_ > 0)
+ {
+ if( this->datalen_idx_ == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Collecting statistics on %d samples per message size.\n"
+ "This is the roundtrip time, *not* the one-way-latency\n"
+ "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.99%%,"
+ " max us\n"
+ "------,-------,-------,-------,-------,-------,-------,-------,"
+ "-------\n"
+ "%6d,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f\n",
+ this->count_,
+ this->datalen_,
+ roundtrip_time_std,
+ avg,
+ (double)this->tv_min_,
+ (double)this->duration_times[per50-1],
+ (double)this->duration_times[per90-1],
+ (double)this->duration_times[per99-1],
+ (double)this->duration_times[per9999-1],
+ (double)this->tv_max_));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%6d,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f,%7.1f\n",
+ this->datalen_,
+ roundtrip_time_std,
+ avg,
+ (double)this->tv_min_,
+ (double)this->duration_times[per50-1],
+ (double)this->duration_times[per90-1],
+ (double)this->duration_times[per99-1],
+ (double)this->duration_times[per9999-1],
+ (double)this->tv_max_));
+ }
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
+ "No samples received back.\n"));
+ }
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (
+ this->matched_,
+ this->number_of_subscribers_,
+ *this);
+ }
+
+ ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener_ptr
+ Sender_exec_i::get_ping_listen_data_listener (void)
+ {
+ return new LatencyTTTest_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Sender_exec_i::get_ping_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // This->sleep_ is in ms
+ unsigned int sec = this->sleep_/1000;
+ unsigned int usec = (this->sleep_ % 1000) * 1000;
+ (void) ACE_High_Res_Timer::global_scale_factor ();
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->timer_queue()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer(
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 0),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ this->timer_ = true;
+ }
+
+ void
+ Sender_exec_i::record_time (ACE_UINT64 receive_time)
+ {
+ ACE_UINT64 interval = receive_time - this->start_time_;
+ ACE_UINT64 duration = interval - this->_clock_overhead_;
+ int i = ++this->count_;
+ this->duration_times[i-1] = duration;
+ this->sigma_duration_squared_ += (double)duration * (double)duration;
+ this->tv_total_ += duration;
+ if (duration > this->tv_max_ || (this->tv_max_ == 0L))
+ {
+ this->tv_max_ = duration;
+ }
+ if (duration < this->tv_min_ || (this->tv_min_ == 0L))
+ {
+ this->tv_min_ = duration;
+ }
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::ULong iterations)
+ {
+ if (iterations == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Number of iterations must be greater as '0'\n")));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ else
+ {
+ this->iterations_ = iterations;
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::sleep (void)
+ {
+ return this->sleep_;
+ }
+
+ void
+ Sender_exec_i::sleep (::CORBA::UShort sleep)
+ {
+ this->sleep_ = sleep;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::number_of_sub (void)
+ {
+ return this->number_of_subscribers_;
+ }
+
+ void
+ Sender_exec_i::number_of_sub (::CORBA::UShort number_of_sub)
+ {
+ if (number_of_sub > 0)
+ {
+ this->number_of_subscribers_ = number_of_sub;
+ }
+ else
+ {
+ this->number_of_subscribers_ = 1;
+ }
+ }
+
+ void
+ Sender_exec_i::calculate_clock_overhead()
+ {
+ int num_of_loops_clock = 320;
+ ACE_UINT64 begin_time;
+ ACE_UINT64 clock_roundtrip_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (begin_time);
+ for (int i = 0; i < num_of_loops_clock; ++i)
+ {
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (clock_roundtrip_time);
+ }
+ ACE_UINT64 total_time = clock_roundtrip_time - begin_time;
+ this->_clock_overhead_ = (long)(total_time /num_of_loops_clock);
+ }
+
+ void
+ Sender_exec_i::init_values (void)
+ {
+ this->duration_times = new ACE_UINT64[this->iterations_];
+ this->datalen_range_ = new CORBA::Short[this->nr_of_runs_];
+ int start = 16;
+ for(int i = 0; i < this->nr_of_runs_; i++)
+ {
+ this->datalen_range_[i] = start;
+ start = 2 * start;
+ }
+
+ this->datalen_ = this->datalen_range_[0];
+
+ // make instances of Topic
+ this->test_topic_.seq_num = 0;
+ this->test_topic_.data.length (this->datalen_);
+ calculate_clock_overhead();
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LatencyTT_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_ping_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ this->init_values();
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ if (this->timer_.value ())
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if ((this->nr_of_runs_ -1) != this->datalen_idx_)
+ {
+ if (this->datalen_idx_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SENDER: No run has taken place.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER : %u of %u runs completed.\n"
+ " Number of messages sent of last run (%u): %u\n",
+ this->datalen_idx_,
+ this->nr_of_runs_,
+ this->datalen_idx_ + 1,
+ this->number_of_msg_));
+ }
+ }
+ else
+ {
+ ACE_UINT64 test_time_usec = this->end_time_test_ -
+ this->start_time_test_;
+
+ double sec = (double)test_time_usec / (1000 * 1000);
+ ACE_DEBUG ((LM_DEBUG, "TEST successful, number of runs (%u) of "
+ "%u messages in %3.3f seconds.\n",
+ this->nr_of_runs_,
+ this->number_of_msg_, sec));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LatencyTT_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.h
new file mode 100644
index 00000000000..af111e1b63c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/Sender/LatencyTT_Test_Sender_exec.h
@@ -0,0 +1,174 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+#include "LatencyTT_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_LatencyTT_Test_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_Long;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Boolean;
+
+ class Sender_exec_i;
+ //============================================================
+ // LatencyTTTest_Listener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export LatencyTTTest_Listener_exec_i
+ : public virtual ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ LatencyTTTest_Listener_exec_i (Sender_exec_i &callback);
+ virtual ~LatencyTTTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const LatencyTTTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const LatencyTTTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &, int, Sender_exec_i &callback_);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Sender_exec_i &callback_;
+ Atomic_Boolean &matched_;
+ int number_of_subscribers_;
+
+ };
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual ::LatencyTT_Test::LatencyTTTestConn::CCM_Listener_ptr
+ get_ping_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_ping_listen_status (void);
+
+ void record_time (ACE_UINT64 receive_time);
+
+ virtual ::CORBA::ULong iterations (void);
+ virtual void iterations (::CORBA::ULong iterations);
+
+ virtual ::CORBA::UShort sleep (void);
+ virtual void sleep (::CORBA::UShort sleep);
+
+ virtual ::CORBA::UShort number_of_sub (void);
+ virtual void number_of_sub (::CORBA::UShort number_of_sub);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void stop (void);
+ void write_one (void);
+ void read (LatencyTTTest & instance,ACE_UINT64 receive_time);
+ void calc_results (void);
+ void reset_results (void);
+ void init_values (void);
+ void calculate_clock_overhead(void);
+
+
+ private:
+ ::LatencyTT_Test::CCM_Sender_Context_var context_;
+ ::LatencyTT_Test::LatencyTTTestConn::Writer_var writer_;
+ WriteTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort datalen_;
+ CORBA::UShort datalen_idx_;
+ CORBA::UShort nr_of_runs_;
+ CORBA::UShort sleep_;
+ Atomic_Boolean matched_;
+ CORBA::UShort number_of_subscribers_;
+ ACE_UINT64 tv_total_;
+ ACE_UINT64 tv_max_;
+ ACE_UINT64 tv_min_;
+ CORBA::UShort count_;
+ CORBA::UShort number_of_msg_;
+ Atomic_Boolean timer_;
+ Atomic_Boolean received_;
+ CORBA::Long seq_num_;
+ CORBA::Double sigma_duration_squared_;
+ ACE_UINT64 start_time_;
+ ACE_UINT64 start_time_test_;
+ ACE_UINT64 end_time_test_;
+
+ LatencyTTTest test_topic_;
+ ACE_UINT64* duration_times;
+ CORBA::Short* datalen_range_;
+ CORBA::Long _clock_overhead_;
+};
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LatencyTT_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_SharedMem.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_SharedMem.cdp
new file mode 100644
index 00000000000..492a27a6453
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_SharedMem.cdp
@@ -0,0 +1,597 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>LatencyTT_Test_Depl</label>
+ <UUID>LatencyTT_Test_Depl</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="LatencyTT_Test_ConnectorComponentImplementation">
+ <name>LatencyTT_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LatencyTT_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="LatencyTT_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <!--implementation xmi:id="LatencyTT_TestSec_ConnectorComponentImplementation">
+ <name>LatencyTT_TestSec_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LatencyTT_TestSec_Connector_ExecArtifact" />
+ <artifact xmi:idref="LatencyTT_TestSec_Connector_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_TestSec_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_TestSec_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_TestSec_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_TestSec_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation-->
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstance2">
+ <name>LatencyTT_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#SharedMemQos</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstanceb2">
+ <name>LatencyTT_TestSec_ConnectorComponentb2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_TestSec</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#SharedMemQos</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>2</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstance">
+ <name>LatencyTT_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#SharedMemQos</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstanceb">
+ <name>LatencyTT_TestSec_ConnectorComponentb</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_TestSec</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#SharedMemQos</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_ping_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_ExecArtifact">
+ <name>LatencyTT_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_SvntArtifact">
+ <name>LatencyTT_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_StubArtifact">
+ <name>LatencyTT_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_stub</location>
+ </artifact>
+ <!-->artifact xmi:id="LatencyTT_TestSec_Connector_ExecArtifact">
+ <name>LatencyTT_TestSec_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_TestSec_Connector_SvntArtifact">
+ <name>LatencyTT_TestSec_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_TestSec_Connector_StubArtifact">
+ <name>LatencyTT_TestSec_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_stub</location>
+ </artifact-->
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_UDPv4.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_UDPv4.cdp
new file mode 100644
index 00000000000..fc13542a087
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/Plan_UDPv4.cdp
@@ -0,0 +1,597 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>LatencyTT_Test_Depl</label>
+ <UUID>LatencyTT_Test_Depl</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="LatencyTT_Test_ConnectorComponentImplementation">
+ <name>LatencyTT_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LatencyTT_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="LatencyTT_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <!--implementation xmi:id="LatencyTT_TestSec_ConnectorComponentImplementation">
+ <name>LatencyTT_TestSec_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LatencyTT_TestSec_Connector_ExecArtifact" />
+ <artifact xmi:idref="LatencyTT_TestSec_Connector_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_TestSec_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_LatencyTT_TestSec_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_TestSec_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LatencyTT_TestSec_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation-->
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LatencyTT_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstance2">
+ <name>LatencyTT_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#UDPv4QoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstanceb2">
+ <name>LatencyTT_TestSec_ConnectorComponentb2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_TestSec</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#UDPv4QoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>sleep</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>2</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstance">
+ <name>LatencyTT_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#UDPv4QoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="LatencyTT_Test_ConnectorComponentInstanceb">
+ <name>LatencyTT_TestSec_ConnectorComponentb</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LatencyTT_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LTT_TestSec</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Latency_Library#UDPv4QoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_ping_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_pub</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ping_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>ping_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstanceb" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LatencyTT_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_ExecArtifact">
+ <name>LatencyTT_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_SvntArtifact">
+ <name>LatencyTT_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_Test_Connector_StubArtifact">
+ <name>LatencyTT_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_Test_Connector_stub</location>
+ </artifact>
+ <!-->artifact xmi:id="LatencyTT_TestSec_Connector_ExecArtifact">
+ <name>LatencyTT_TestSec_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_TestSec_Connector_SvntArtifact">
+ <name>LatencyTT_TestSec_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LatencyTT_TestSec_Connector_StubArtifact">
+ <name>LatencyTT_TestSec_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LatencyTT_TestSec_Connector_stub</location>
+ </artifact-->
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/README b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/README
new file mode 100644
index 00000000000..e7cbe8c211a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/README
@@ -0,0 +1,14 @@
+
+This performace test (LatencyTT) shows the latency , round trip time, with two topics.
+One for sending from publisher to subscriber and one for sending back from subscriber to publicher.
+The other Latency test (LAtency) shows the latency, round trip time, with one topic.
+The test can run with different options.
+
+
+- run_test.pl : start one publisher and one subscriber in different processes
+ with resp. Plan_sub.cdp and Plan_pub.cdp
+
+
+To test changes in the next attributes, changes this values in the publisher cdp-files:
+iterations : the number of messages per run to send. Has to be greater as 0.
+sleep: time in ms to sleep before writing the next message
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..2f2e923b7d0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Description
+ XML QoS Profile
+
+ The QoS configuration of the DDS entities in the generated example is
+ loaded from this file.
+
+ This file is used only when it is in the current working directory
+ or when the enviroment variable
+ NDDS_QOS_PROFILES is defined and points to this file.
+
+ For more information about XML QoS Profiles see Chapter 15 in the
+ RTI Data Distribution Service user manual.
+ -->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="/home/ndds/ndds.4.5b/scripts/../resource/rtiddsgen/../qos_profiles_4.5b/schema/rti_dds_qos_profiles.xsd"
+ version="4.5b">
+
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="Latency_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="UDPv4QoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <!-- (payload) 8192 + (est. overhead) 8 + 512 -->
+ <buffer_size>8712</buffer_size>
+ </receiver_pool>
+
+ <transport_builtin>
+ <mask>DDS_TRANSPORTBUILTIN_UDPv4</mask>
+ </transport_builtin>
+
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>8712</value></element>
+ <element>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>17424</value></element>
+ <element>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>8712</value></element>
+ </value>
+ </property>
+ </participant_qos>
+
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history><kind>DDS_KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>3</max_samples>
+ <initial_samples>3</initial_samples>
+ <max_samples_per_instance>3</max_samples_per_instance>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <!-- piggyback every sample -->
+ <heartbeats_per_max_samples>3</heartbeats_per_max_samples>
+ <max_nack_response_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </max_nack_response_delay>
+ <!-- 1 year -->
+ <heartbeat_period>
+ <sec>604800</sec>
+ <nanosec>1000000</nanosec>
+ </heartbeat_period>
+ <!-- 1 ms -->
+ <fast_heartbeat_period>
+ <sec>0</sec>
+ <nanosec>1000000</nanosec>
+ </fast_heartbeat_period>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>DDS_KEEP_LAST_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ <protocol>
+ <rtps_reliable_reader>
+ <max_heartbeat_response_delay>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </max_heartbeat_response_delay>
+ </rtps_reliable_reader>
+ </protocol>
+ </datareader_qos>
+ </qos_profile>
+
+ <qos_profile name="SharedMemQos" is_default_qos="true">
+ <participant_qos>
+ <transport_builtin>
+ <mask>DDS_TRANSPORTBUILTIN_SHMEM</mask>
+ </transport_builtin>
+ <receiver_pool>
+ <buffer_size>8712</buffer_size>
+ </receiver_pool>
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.SHMEM.builtin.parent.message_size_max</name>
+ <value>8712</value>
+ <name>dds.transport.SHMEM.builtin.receive_buffer_size</name>
+ <value>17424</value>
+ </element>
+ </value>
+ </property>
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+
+ </qos_library>
+</dds>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/run_test.pl
new file mode 100644
index 00000000000..615c0ae0375
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/LatencyTT/descriptors/run_test.pl
@@ -0,0 +1,217 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run node daemon\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+if ($#ARGV == -1) {
+ opendir(DIR, ".");
+ @files = grep(/\.cdp$/,readdir(DIR));
+ closedir(DIR);
+}
+else {
+ @files = @ARGV;
+}
+
+create_targets ();
+init_ior_files ();
+
+foreach $file (@files) {
+ print "Starting test for deployment $file\n";
+
+ print STDERR "Starting Naming Service\n";
+
+ $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+ $NS->Spawn ();
+
+ if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+ }
+
+ $ns_running = 1;
+ # Set up NamingService environment
+ $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+ # Invoke node daemon.
+ print "Invoking node daemon\n";
+ $status = run_node_daemons ();
+
+ if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ kill_open_processes ();
+ exit 1;
+ }
+
+ $daemons_running = 1;
+
+ # Invoke execution manager.
+ print "Invoking execution manager\n";
+ $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+ $EM->Spawn ();
+
+ if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+
+ $em_running = 1;
+
+ # Invoke executor - start the application -.
+ print "Invoking executor - launch the application -\n";
+ $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $file -k file://$ior_emfile");
+ $E->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+
+ print "Sleeping 300 seconds to allow task to complete\n";
+ sleep (300);
+
+ print "Teardown the application\n";
+ $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $file -s");
+ $E->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+ print "Executor finished.\n";
+
+ delete_ior_files ();
+ kill_open_processes ();
+}
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.idl
new file mode 100644
index 00000000000..80da6020c57
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.idl
@@ -0,0 +1,42 @@
+// $Id$
+
+/**
+ * @file Throughput_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef THROUGHPUT_BASE_IDL
+#define THROUGHPUT_BASE_IDL
+
+#pragma ndds typesupport "Base/Throughput_BaseSupport.h"
+
+const short MAX_DATA_SEQUENCE_LENGTH = 8192;
+
+typedef enum ThroughputCommandKind
+{
+ THROUGHPUT_COMMAND_IDLE,
+ THROUGHPUT_COMMAND_START,
+ THROUGHPUT_COMMAND_COMPLETE
+} CommandKind;
+
+typedef sequence<octet, MAX_DATA_SEQUENCE_LENGTH> OctetSeq;
+
+struct ThroughputTest {
+ long key;
+ unsigned long long seq_num;
+ OctetSeq data;
+ };
+
+typedef sequence<ThroughputTest> ThroughputTestSeq;
+
+struct ThroughputCommand
+{
+ CommandKind command;
+ unsigned long data_length;
+ unsigned long long current_publisher_effort;
+ unsigned long long final_publisher_effort;
+};
+
+typedef sequence<ThroughputCommand> ThroughputCommandSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.mpc
new file mode 100644
index 00000000000..22a9c1a798b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Base/Throughput_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Throughput_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Throughput_Base_stub
+ dynamicflags += THROUGHPUT_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=THROUGHPUT_BASE_STUB_Export \
+ -Wb,stub_export_include=THROUGHPUT_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Throughput_Base.idl
+ }
+
+ opendds_ts_flags += --export=THROUGHPUT_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Throughput_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.idl
new file mode 100644
index 00000000000..4ecaf3d3b8c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file Throughput_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand translation of the idl3p.
+ */
+
+#ifndef THROUGHPUT_CONNECTOR_IDL_
+#define THROUGHPUT_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Throughput_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Throughput_ConnectorE.idl"
+
+module Throughput
+{
+ module ::CCM_DDS::Typed < ::ThroughputTest, ::ThroughputTestSeq> ThroughputTestConn;
+ connector Throughput_Connector : ThroughputTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* Throughput_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.mpc
new file mode 100644
index 00000000000..b0239dc5608
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Connector/Throughput_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Throughput_Base -l .. -o ../lib -u DDS Throughput_Connector"
+
+project(DDS_Throughput_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=THROUGHPUT_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Throughput_Connector_stub_export.h \
+ -Wb,skel_export_macro=THROUGHPUT_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Throughput_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=THROUGHPUT_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Throughput_Connector_svnt_export.h \
+ -Wb,conn_export_macro=THROUGHPUT_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Throughput_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Throughput_Connector.idl
+ }
+}
+
+project(DDS_Throughput_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Throughput_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=THROUGHPUT_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Throughput_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl
+
+ IDL_Files {
+ Throughput_ConnectorE.idl
+ }
+}
+
+project(DDS_TP_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Throughput_Connector_lem_gen DDS_Throughput_Connector_stub DDS_Throughput_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Throughput_Base_stub DDS_Throughput_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_TP_Test_Connector_lem_stub
+ dynamicflags = THROUGHPUT_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Throughput_ConnectorEC.h
+ Throughput_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_ConnectorEC.inl
+ }
+}
+
+project(DDS_Throughput_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Throughput_Connector_idl_gen DDS_Throughput_Base_stub
+ libs += DDS_Throughput_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Throughput_Connector_stub
+ dynamicflags = THROUGHPUT_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Throughput_ConnectorC.h
+ Throughput_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_ConnectorC.inl
+ }
+}
+
+project(DDS_Throughput_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_TP_Test_Connector_lem_stub DDS_Throughput_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Throughput_Connector_exec
+ libs += DDS_Throughput_Connector_stub DDS_TP_Test_Connector_lem_stub DDS_Throughput_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = THROUGHPUT_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Throughput_Connector_conn.h
+ Throughput_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Throughput_Connector_svnt) : ciao_servant, dds4ccm_skel {
+ after += DDS_TP_Test_Connector_lem_stub DDS_Throughput_Connector_exec DDS_Throughput_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Throughput_Connector_svnt
+ libs += DDS_Throughput_Connector_stub \
+ DDS_TP_Test_Connector_lem_stub \
+ DDS_Throughput_Base_stub \
+ DDS_Throughput_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = THROUGHPUT_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ConnectorS.cpp
+ Throughput_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Throughput_ConnectorS.h
+ Throughput_Connector_svnt.h
+ Throughput_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Throughput_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.idl
new file mode 100644
index 00000000000..af7b9f8159e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Throughput_Connector.idl"
+#include "SecConnector/Throughput_Sec_Connector.idl"
+
+module Throughput
+{
+ component Receiver
+ {
+ port ThroughputTestConn::DDS_Listen info_listen;
+ port ThroughputCommandConn::DDS_Listen command_listen;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.mpc
new file mode 100644
index 00000000000..6dd8175ec48
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver.mpc
@@ -0,0 +1,154 @@
+// $Id$
+
+project(DDS_Throughput_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Throughput_Connector_idl_gen DDS_Throughput_Sec_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Throughput_Receiver.idl
+ }
+}
+
+project(DDS_Throughput_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Throughput_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Throughput_ReceiverE.idl
+ }
+}
+
+project(DDS_Throughput_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Throughput_Receiver_lem_gen DDS_Throughput_Receiver_stub \
+ DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub DDS_Throughput_Base_stub
+ libs += Receiver_stub DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub \
+ DDS_Throughput_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Throughput_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_ReceiverEC.inl
+ }
+}
+
+project(DDS_Throughput_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Throughput_Receiver_idl_gen DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub \
+ DDS_Throughput_Base_stub DDS_Throughput_Connector_lem_gen DDS_TP_Sec_Connector_lem_gen
+ libs += DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub DDS_Throughput_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Throughput_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_ReceiverC.inl
+ }
+}
+
+project(DDS_Throughput_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Throughput_Receiver_lem_stub DDS_Throughput_Receiver_stub \
+ DDS_Throughput_Base_stub DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub \
+ DDS_TP_Test_Connector_lem_stub DDS_TP_Sec_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Throughput_Base_stub \
+ DDS_Throughput_Connector_stub DDS_TP_Test_Connector_lem_stub \
+ DDS_Throughput_Sec_Connector_stub DDS_TP_Sec_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Throughput_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Throughput_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Throughput_Receiver_lem_stub DDS_Throughput_Base_stub \
+ DDS_Throughput_Connector_stub DDS_Throughput_Connector_svnt \
+ DDS_Throughput_Sec_Connector_stub DDS_Throughput_Sec_Connector_svnt \
+ DDS_Throughput_Receiver_exec DDS_TP_Test_Connector_lem_stub DDS_TP_Sec_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Throughput_Base_stub \
+ DDS_Throughput_Connector_stub DDS_Throughput_Connector_svnt \
+ DDS_Throughput_Sec_Connector_stub DDS_Throughput_Sec_Connector_svnt \
+ Receiver_exec DDS_TP_Test_Connector_lem_stub DDS_TP_Sec_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_ReceiverS.cpp
+ Throughput_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Throughput_ReceiverS.h
+ Throughput_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Throughput_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.cpp
new file mode 100644
index 00000000000..888b315e3e0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.cpp
@@ -0,0 +1,255 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Throughput_Receiver_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "ace/High_Res_Timer.h"
+
+namespace CIAO_Throughput_Receiver_Impl
+{
+ //============================================================
+ // ThroughputTest_Listener_exec_i
+ //============================================================
+ ThroughputTest_Listener_exec_i::ThroughputTest_Listener_exec_i (
+ Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ ThroughputTest_Listener_exec_i::~ThroughputTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ThroughputTest_Listener_exec_i::on_one_data (
+ const ThroughputTest & an_instance,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->callback_.record_data(const_cast<ThroughputTest&> (an_instance));
+ }
+
+ void
+ ThroughputTest_Listener_exec_i::on_many_data (
+ const ThroughputTestSeq & /*data_seq*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info_seq*/)
+ {
+ }
+
+ //============================================================
+ // ThroughputCommand_Listener_exec_i
+ //============================================================
+ ThroughputCommand_Listener_exec_i::ThroughputCommand_Listener_exec_i (
+ Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ ThroughputCommand_Listener_exec_i::~ThroughputCommand_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ThroughputCommand_Listener_exec_i::on_one_data (
+ const ThroughputCommand & an_instance,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->callback_.handle_run (const_cast<ThroughputCommand&> (an_instance));
+ }
+
+ void
+ ThroughputCommand_Listener_exec_i::on_many_data (
+ const ThroughputCommandSeq & /*data_seq*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info_seq*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : count_ (0L), // total count of all received messages
+ interval_time_(0L),
+ interval_messages_received_(0L),
+ interval_bytes_received_(0L),
+ interval_data_length_(0L),
+ run_(0),
+ first_time_ (0L),
+ messages_lost_(0),
+ log_(false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlccmd =
+ this->context_->get_connection_command_listen_data_control ();
+ dlccmd->mode (::CCM_DDS::ONE_BY_ONE);
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::reset_results()
+ {
+ this->interval_messages_received_ = 0;
+ this->interval_bytes_received_ = 0;
+ this->interval_time_=0;
+ this->seq_num_ = 0;
+ this->messages_lost_= 0;
+ }
+
+ void
+ Receiver_exec_i::handle_run(ThroughputCommand & an_instance)
+ {
+ if (an_instance.command == THROUGHPUT_COMMAND_START)
+ {
+ this->log_ = true;
+ this->reset_results();
+ this->interval_data_length_ = an_instance.data_length;
+ this->demand_ = an_instance.current_publisher_effort;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->first_time_);
+ }
+ if (an_instance.command == THROUGHPUT_COMMAND_COMPLETE)
+ {
+ this->log_ = false;
+ ACE_UINT64 last_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time);
+ this->interval_time_ = (last_time - this->first_time_);
+ ++this->run_;
+ this->show_results();
+ }
+ }
+
+ void
+ Receiver_exec_i::record_data (ThroughputTest & an_instance)
+ {
+ ++this->count_; // total count of all received messages
+
+ if (this->log_.value ())
+ {
+ ++this->interval_messages_received_;
+ this->interval_bytes_received_ += this->interval_data_length_;
+ if (an_instance.seq_num != this->seq_num_)
+ {
+ ++this->messages_lost_;
+ /* Reset sequence number */
+ this->seq_num_ = an_instance.seq_num;
+ }
+ ++this->seq_num_;
+ }
+ }
+
+ void
+ Receiver_exec_i::show_results()
+ {
+ if ((this->count_ > 0) && (this->interval_time_ > 0))
+ {
+ double per_sec = (double)1000000/ this->interval_time_;
+ double mbps = (this->interval_bytes_received_* per_sec)* (8.0/1000.0/1000.0);
+
+ if(this->run_ == 1)
+ {
+ ACE_DEBUG((LM_DEBUG,
+ " bytes, demand, samples,sample/s, Mbit/s,lost samples\n"));
+ ACE_DEBUG((LM_DEBUG,
+ "------,-------,--------,--------,-------,------------\n"));
+ }
+ ACE_DEBUG((LM_DEBUG, "%6u,%7q,%8q,%8.1f,%7.1f,%7q\n",
+ this->interval_data_length_,
+ this->demand_,
+ this->interval_messages_received_,
+ this->interval_messages_received_* per_sec,
+ mbps,
+ this->messages_lost_));
+ }
+ }
+
+ ::Throughput::ThroughputTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new ThroughputTest_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::Throughput::ThroughputCommandConn::CCM_Listener_ptr
+ Receiver_exec_i::get_command_listen_data_listener (void)
+ {
+ return new ThroughputCommand_Listener_exec_i (*this);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_command_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Throughput::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->start();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ if (this->count_ > 0)
+ {
+ ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n "
+ "Number of samples received: %u \n",
+ this->count_));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR RECEIVER: "
+ "No samples received\n"));
+ }
+ }
+
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Throughput_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.h
new file mode 100644
index 00000000000..f758eabfc54
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Receiver/Throughput_Receiver_exec.h
@@ -0,0 +1,128 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Throughput_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_Throughput_Receiver_Impl
+{
+ class Receiver_exec_i;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Bool;
+
+ //============================================================
+ // ThroughputTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ThroughputTest_Listener_exec_i
+ : public virtual ::Throughput::ThroughputTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ThroughputTest_Listener_exec_i (Receiver_exec_i &callback);
+ virtual ~ThroughputTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ThroughputTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ThroughputTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // ThroughputCommand_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ThroughputCommand_Listener_exec_i
+ : public virtual ::Throughput::ThroughputCommandConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ThroughputCommand_Listener_exec_i (Receiver_exec_i &callback);
+ virtual ~ThroughputCommand_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ThroughputCommand & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ThroughputCommandSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+ void reset_results (void);
+ void record_data (ThroughputTest & an_instance);
+ void handle_run (ThroughputCommand & an_instance);
+ void show_results (void);
+
+ virtual ::Throughput::ThroughputTestConn::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual ::Throughput::ThroughputCommandConn::CCM_Listener_ptr
+ get_command_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_command_listen_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Throughput::CCM_Receiver_Context_var context_;
+
+ CORBA::ULongLong count_;
+ ACE_UINT64 interval_time_;
+ CORBA::ULongLong interval_messages_received_;
+ CORBA::ULongLong interval_bytes_received_;
+ CORBA::ULong interval_data_length_;
+ CORBA::ULong run_;
+ ACE_UINT64 first_time_;
+ CORBA::ULongLong demand_;
+ CORBA::ULongLong seq_num_;
+ CORBA::ULongLong messages_lost_;
+ Atomic_Bool log_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Throughput_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.idl
new file mode 100644
index 00000000000..0ec6de8e1c8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file Throughput_Sec_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand translation of the idl3p.
+ */
+
+#ifndef THROUGHPUT_SEC_CONNECTOR_IDL_
+#define THROUGHPUT_SEC_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Throughput_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "SecConnector/Throughput_Sec_ConnectorE.idl"
+
+module Throughput
+{
+ module ::CCM_DDS::Typed < ::ThroughputCommand, ::ThroughputCommandSeq> ThroughputCommandConn;
+ connector Throughput_Sec_Connector : ThroughputCommandConn::DDS_Event
+ {
+ };
+};
+
+#endif /* Throughput_Sec_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.mpc
new file mode 100644
index 00000000000..ffc3b1bbf17
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/SecConnector/Throughput_Sec_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Throughput_Base -l .. -o ../lib -u DDS Throughput_Sec_Connector"
+
+project(DDS_TP_Sec_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=THROUGHPUT_SEC_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Throughput_Sec_Connector_stub_export.h \
+ -Wb,skel_export_macro=THROUGHPUT_SEC_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Throughput_Sec_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=THROUGHPUT_SEC_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Throughput_Sec_Connector_svnt_export.h \
+ -Wb,conn_export_macro=THROUGHPUT_SEC_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Throughput_Sec_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Throughput_Sec_Connector.idl
+ }
+}
+
+project(DDS_TP_Sec_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_TP_Sec_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=THROUGHPUT_SEC_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Throughput_Sec_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I .. -I $(CIAO_ROOT)/connectors -I$(CIAO_ROOT)/connectors/dds4ccm/idl
+
+ IDL_Files {
+ Throughput_Sec_ConnectorE.idl
+ }
+}
+
+project(DDS_TP_Sec_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_TP_Sec_Connector_lem_gen DDS_Throughput_Sec_Connector_stub DDS_Throughput_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Throughput_Base_stub DDS_Throughput_Sec_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_TP_Sec_Connector_lem_stub
+ dynamicflags = THROUGHPUT_SEC_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Sec_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Throughput_Sec_ConnectorEC.h
+ Throughput_Sec_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_Sec_ConnectorEC.inl
+ }
+}
+
+project(DDS_Throughput_Sec_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_TP_Sec_Connector_idl_gen DDS_Throughput_Base_stub
+ libs += DDS_Throughput_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Throughput_Sec_Connector_stub
+ dynamicflags = THROUGHPUT_SEC_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Sec_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Throughput_Sec_ConnectorC.h
+ Throughput_Sec_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_Sec_ConnectorC.inl
+ }
+}
+
+project(DDS_Throughput_Sec_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_TP_Sec_Connector_lem_stub DDS_Throughput_Sec_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Throughput_Sec_Connector_exec
+ libs += DDS_Throughput_Sec_Connector_stub DDS_TP_Sec_Connector_lem_stub DDS_Throughput_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = THROUGHPUT_SEC_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Sec_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Throughput_Sec_Connector_conn.h
+ Throughput_Sec_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(DDS_Throughput_Sec_Connector_svnt) : ciao_servant, dds4ccm_skel {
+ after += DDS_TP_Sec_Connector_lem_stub DDS_Throughput_Sec_Connector_exec DDS_Throughput_Sec_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Throughput_Sec_Connector_svnt
+ libs += DDS_Throughput_Sec_Connector_stub \
+ DDS_TP_Sec_Connector_lem_stub \
+ DDS_Throughput_Base_stub \
+ DDS_Throughput_Sec_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = THROUGHPUT_SEC_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Sec_ConnectorS.cpp
+ Throughput_Sec_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Throughput_Sec_ConnectorS.h
+ Throughput_Sec_Connector_svnt.h
+ Throughput_Sec_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Throughput_Sec_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.idl
new file mode 100644
index 00000000000..53e2a5f83fd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_THROUGHPUT_SENDER_IDL
+#define DDS_THROUGHPUT_SENDER_IDL
+
+#include "Connector/Throughput_Connector.idl"
+#include "SecConnector/Throughput_Sec_Connector.idl"
+
+module Throughput
+{
+ component Sender
+ {
+ port ThroughputTestConn::DDS_Write info_write;
+ port ThroughputCommandConn::DDS_Write command_write;
+
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+
+ attribute unsigned long start_load;
+ attribute unsigned long incr_load;
+ attribute unsigned long long max_load;
+ attribute unsigned short recover_time;
+ attribute unsigned short datalen; //minimal 24
+ attribute unsigned short number_of_sub; //number of subscribers
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.mpc
new file mode 100644
index 00000000000..7f1a332d958
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender.mpc
@@ -0,0 +1,152 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Throughput_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Throughput_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Throughput_Connector_idl_gen DDS_Throughput_Sec_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Throughput_Sender.idl
+ }
+}
+
+project(DDS_Throughput_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Throughput_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Throughput_SenderE.idl
+ }
+}
+
+project(DDS_Throughput_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Throughput_Sender_lem_gen DDS_Throughput_Sender_stub \
+ DDS_Throughput_Base_stub
+ libs += DDS_Throughput_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_SenderEC.cpp
+ }
+
+ Header_Files {
+ Throughput_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_SenderEC.inl
+ }
+}
+
+project(DDS_Throughput_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Throughput_Sender_idl_gen DDS_Throughput_Base_stub \
+ DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub
+ libs += DDS_Throughput_Base_stub DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_SenderC.cpp
+ }
+
+ Header_Files {
+ Throughput_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Throughput_SenderC.inl
+ }
+}
+
+project(DDS_Throughput_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Throughput_Sender_lem_stub DDS_Throughput_Sender_stub \
+ DDS_TP_Test_Connector_lem_stub DDS_Throughput_Connector_stub \
+ DDS_TP_Sec_Connector_lem_stub DDS_Throughput_Sec_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Throughput_Base_stub \
+ DDS_TP_Test_Connector_lem_stub DDS_Throughput_Connector_stub \
+ DDS_TP_Sec_Connector_lem_stub DDS_Throughput_Sec_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Throughput_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project(DDS_Throughput_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Throughput_Base_stub DDS_Throughput_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Throughput_Connector_stub DDS_Throughput_Sec_Connector_stub \
+ DDS_Throughput_Connector_svnt DDS_TP_Test_Connector_lem_stub \
+ DDS_Throughput_Sec_Connector_svnt DDS_TP_Sec_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_Throughput_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_Throughput_Connector_stub DDS_Throughput_Connector_svnt \
+ DDS4CCM_skel DDS_Throughput_Sec_Connector_stub DDS_Throughput_Sec_Connector_svnt \
+ DDS_TP_Test_Connector_lem_stub DDS_TP_Sec_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Throughput_SenderS.cpp
+ Throughput_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Throughput_SenderS.h
+ Throughput_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Throughput_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.cpp
new file mode 100644
index 00000000000..4c8a63e6e32
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.cpp
@@ -0,0 +1,454 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Throughput_Sender_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "tao/ORB_Core.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+#include "ace/High_Res_Timer.h"
+
+namespace CIAO_Throughput_Sender_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ int number_of_subscribers,
+ Sender_exec_i &callback)
+ : callback_ (callback),
+ number_of_subscribers_ (number_of_subscribers),
+ started_ (false)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (!CORBA::is_nil (the_entity) &&
+ status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ ::DDS::PublicationMatchedStatus_var stat;
+ DDS::DataWriter_var wr = ::DDS::DataWriter::_narrow(the_entity);
+ if(CORBA::is_nil(wr.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ ::DDS::ReturnCode_t retval =
+ wr->get_publication_matched_status(stat.out());
+ if (retval == DDS::RETCODE_OK)
+ {
+ if (stat.in ().current_count >= this->number_of_subscribers_ &&
+ !this->started_.value ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "ConnectorStatusListener_exec_i::on_unexpected_status - "
+ "on_publication_matched status received. Starting application\n"));
+ this->started_ = true;
+ this->callback_.start();
+ }
+ }
+ }
+ }
+
+ //============================================================
+ // WriteTickerHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback,
+ Atomic_Boolean &running)
+ : callback_ (callback),
+ running_ (running)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ if (!this->running_.value ())
+ {
+ this->callback_.write();
+ }
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : ticker_ (0),
+ max_load_ (1000),
+ start_load_ (100),
+ incr_load_ (100),
+ datalen_ (1024),
+ recover_time_ (1), // Specifies how long (in s) to sleep after writing a
+ // specific effort specified by start_load , incr_load
+ duration_run_ (10),
+ number_of_subscribers_ (1),
+ number_of_msg_ (0),
+ load_ (0),
+ overhead_size_ (0),
+ running_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write(void)
+ {
+ this->running_ = true;
+ CORBA::Boolean test_complete = false;
+ this->load_ += this->incr_load_;
+ if (this->load_ >= this->max_load_)
+ {
+ this->stop();
+ }
+ else
+ {
+ this->test_topic_cmd_.command = THROUGHPUT_COMMAND_START;
+ this->test_topic_cmd_.data_length = this->datalen_;
+ this->test_topic_cmd_.current_publisher_effort = this->load_;
+ this->test_topic_cmd_.final_publisher_effort = this->max_load_;
+ try
+ {
+ this->cmd_writer_->write_one(this->test_topic_cmd_,
+ ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while writing command.\n")));
+ }
+ test_complete = false;
+ // get start time
+ ACE_UINT64 start_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (start_time);
+ while (!test_complete)
+ {
+ for (CORBA::ULongLong current_load = 0;
+ current_load < this->load_ && !test_complete;
+ ++current_load, ++this->test_topic_.seq_num)
+ {
+ try
+ {
+ this->writer_->write_one(this->test_topic_,
+ ::DDS::HANDLE_NIL);
+ ++this->number_of_msg_;
+ }
+ catch (const CCM_DDS::InternalError& err)
+ {
+ if (err.error_code == DDS::RETCODE_TIMEOUT)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("Write Timeout please increase "
+ "-maxBlockingTime parameter for "
+ "test\n")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer ")
+ ACE_TEXT ("info for <%u>.\n"),
+ this->test_topic_.seq_num));
+ test_complete= true;
+ }
+ }
+ }
+ ACE_UINT64 end_time;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (end_time);
+ ACE_UINT64 interval = end_time - start_time;
+ if(interval > (this->duration_run_ * 1000 * 1000))
+ {
+ test_complete = true;
+ this->test_topic_cmd_.command = THROUGHPUT_COMMAND_COMPLETE;
+ this->cmd_writer_->write_one (this->test_topic_cmd_,
+ ::DDS::HANDLE_NIL);
+ }
+ if (!test_complete)
+ {
+ ACE_OS::sleep (this->recover_time_);
+ }
+ }
+ }
+ this->running_ = false;
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (
+ this->number_of_subscribers_,
+ *this);
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ ACE_UINT64 const sec = this->duration_run_ + 5;
+ (void) ACE_High_Res_Timer::global_scale_factor ();
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->timer_queue()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr);
+ this->ticker_ = new WriteTicker (*this, this->running_);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 0),
+ ACE_Time_Value (sec, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ ::CORBA::ULongLong
+ Sender_exec_i::max_load (void)
+ {
+ return this->max_load_;
+ }
+
+ void
+ Sender_exec_i::max_load (::CORBA::ULongLong max_load)
+ {
+ if ((max_load <= 100) || (max_load > 90000))
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: max_load must be greater as '100' "
+ "and smaller as '90001'\n")));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ else
+ {
+ this->max_load_ = max_load;
+ }
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::start_load (void)
+ {
+ return this->start_load_;
+ }
+
+ void
+ Sender_exec_i::start_load (::CORBA::ULong start_load)
+ {
+ if (start_load < 100)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: start_load must be greater as '100' "
+ "and smaller as max_load\n")));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ else
+ {
+ this->start_load_ = start_load;
+ }
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::incr_load (void)
+ {
+ return this->incr_load_;
+ }
+
+ void
+ Sender_exec_i::incr_load (::CORBA::ULong incr_load)
+ {
+ if (incr_load < 100)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR:incr_load must be greater as '99'\n")));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ else
+ {
+ this->incr_load_ = incr_load;
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::recover_time (void)
+ {
+ return this->recover_time_;
+ }
+
+ void
+ Sender_exec_i::recover_time (::CORBA::UShort recover_time)
+ {
+ this->recover_time_ = recover_time;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::number_of_sub (void)
+ {
+ return this->number_of_subscribers_;
+ }
+
+ void
+ Sender_exec_i::number_of_sub (::CORBA::UShort number_of_sub)
+ {
+ if (number_of_sub > 0)
+ {
+ this->number_of_subscribers_ = number_of_sub;
+ }
+ else
+ {
+ this->number_of_subscribers_ = 1;
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::datalen (void)
+ {
+ return this->datalen_;
+ }
+
+ void
+ Sender_exec_i::datalen (::CORBA::UShort datalen)
+ {
+ this->overhead_size_ = sizeof(CORBA::ULong) + sizeof(CORBA::ULongLong);
+ if (datalen <= this->overhead_size_ ||
+ datalen > MAX_DATA_SEQUENCE_LENGTH)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: datalen has to be bigger"
+ " as %u and smaller as %u\n"),
+ this->overhead_size_,
+ MAX_DATA_SEQUENCE_LENGTH));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ this->datalen_ = datalen;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Throughput::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ this->cmd_writer_ =
+ this->context_->get_connection_command_write_data ();
+ if(CORBA::is_nil (this->writer_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::configuration_complete: "
+ "Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::configuration_complete:"
+ " Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ // Make instances of Topic
+ this->test_topic_.key = 1;
+ this->test_topic_.seq_num = 0;
+ this->test_topic_.data.length (this->datalen_ - this->overhead_size_);
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (this->number_of_msg_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SENDER: No messages "
+ "sent during test.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n",
+ this->number_of_msg_));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Throughput_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.h
new file mode 100644
index 00000000000..c22b75926d3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/Sender/Throughput_Sender_exec.h
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+#include "Throughput_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Throughput_Sender_Impl
+{
+ class Sender_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (int, Sender_exec_i &callback_);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Sender_exec_i &callback_;
+ int number_of_subscribers_;
+ Atomic_Boolean started_;
+ };
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback,
+ Atomic_Boolean &running);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ Atomic_Boolean running_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual ::CORBA::ULong start_load (void);
+ virtual void start_load (::CORBA::ULong start_load);
+
+ virtual ::CORBA::ULongLong max_load (void);
+ virtual void max_load (::CORBA::ULongLong max_load);
+
+ virtual ::CORBA::ULong incr_load (void);
+ virtual void incr_load (::CORBA::ULong incr_load);
+
+ virtual ::CORBA::UShort recover_time (void);
+ virtual void recover_time (::CORBA::UShort recover_time);
+
+ virtual ::CORBA::UShort number_of_sub (void);
+ virtual void number_of_sub (::CORBA::UShort number_of_sub);
+
+ virtual ::CORBA::UShort datalen (void);
+ virtual void datalen (::CORBA::UShort datalen);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start(void);
+ void stop (void);
+ void write(void);
+
+ private:
+ ::Throughput::CCM_Sender_Context_var context_;
+ ::Throughput::ThroughputTestConn::Writer_var writer_;
+ ::Throughput::ThroughputCommandConn::Writer_var cmd_writer_;
+
+ WriteTicker *ticker_;
+
+ CORBA::ULongLong max_load_;
+ CORBA::ULong start_load_;
+ CORBA::ULong incr_load_;
+ CORBA::UShort datalen_;
+ CORBA::UShort recover_time_;
+ ACE_UINT64 duration_run_;
+ CORBA::UShort number_of_subscribers_;
+ CORBA::ULongLong number_of_msg_;
+ CORBA::ULongLong load_;
+ CORBA::UShort overhead_size_;
+
+ ThroughputTest test_topic_;
+ ThroughputCommand test_topic_cmd_;
+ CORBA::Octet* buffer_;
+
+ Atomic_Boolean running_;
+};
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Throughput_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_pub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_pub.cdp
new file mode 100644
index 00000000000..7854bb3b806
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_pub.cdp
@@ -0,0 +1,414 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Throughput_Depl_2</label>
+ <UUID>Throughput_Depl_2</UUID>
+
+
+ <implementation xmi:id="Throughput_ConnectorComponentImplementation">
+ <name>Throughput_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Throughput_Connector_ExecArtifact" />
+ <artifact xmi:idref="Throughput_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Throughput_Sec_ConnectorComponentImplementation">
+ <name>Throughput_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Throughput_Sec_Connector_ExecArtifact" />
+ <artifact xmi:idref="Throughput_Sec_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Sec_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Sec_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Sec_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Sec_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="Throughput_ConnectorComponentInstance">
+ <name>Throughput_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Throughput_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TP_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#ThroughputQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Throughput_Sec_ConnectorComponentInstance">
+ <name>Throughput_Sec_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Throughput_Sec_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TP_Command</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#ThroughputCmdQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>start_load</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>1000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>max_load</name>
+ <value>
+ <type>
+ <kind>tk_ulonglong</kind>
+ </type>
+ <value>
+ <ulonglong>9000</ulonglong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>incr_load</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>1000</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <!-- Specifies how long (in ms) to sleep after writing a specific-->
+ <!-- effort specified by start_load and incr_load -->
+ <name>recover_time</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>number_of_sub</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>datalen</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1024</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Throughput_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_sec_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>command_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Throughput_Sec_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Throughput_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Connector_ExecArtifact">
+ <name>Throughput_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Connector_SvntArtifact">
+ <name>Throughput_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Connector_StubArtifact">
+ <name>Throughput_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Sec_Connector_ExecArtifact">
+ <name>Throughput_Sec_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Sec_Connector_SvntArtifact">
+ <name>Throughput_Sec_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Sec_Connector_StubArtifact">
+ <name>Throughput_Sec_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_stub</location>
+ </artifact>
+ </Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_sub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_sub.cdp
new file mode 100644
index 00000000000..fb6809035f0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/Plan_sub.cdp
@@ -0,0 +1,368 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Throughput_Depl_1</label>
+ <UUID>Throughput_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Throughput_ConnectorComponentImplementation">
+ <name>Throughput_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Throughput_Connector_ExecArtifact" />
+ <artifact xmi:idref="Throughput_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Throughput_Sec_ConnectorComponentImplementation">
+ <name>Throughput_Sec_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Throughput_Sec_Connector_ExecArtifact" />
+ <artifact xmi:idref="Throughput_Sec_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Sec_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Throughput_Throughput_Sec_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Sec_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Throughput_Sec_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Throughput_ConnectorComponentInstance2">
+ <name>Throughput_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Throughput_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TP_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#ThroughputQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Throughput_Sec_ConnectorComponentInstance2">
+ <name>Throughput_Sec_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Throughput_Sec_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TP_Command</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#ThroughputCmdQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Throughput_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Throughput_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>command_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>command_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Throughput_Sec_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>command_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>command_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Throughput_Sec_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Throughput_Connector_ExecArtifact">
+ <name>Throughput_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Connector_SvntArtifact">
+ <name>Throughput_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Connector_StubArtifact">
+ <name>Throughput_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Throughput_Sec_Connector_ExecArtifact">
+ <name>Throughput_Sec_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Sec_Connector_SvntArtifact">
+ <name>Throughput_Sec_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Throughput_Sec_Connector_StubArtifact">
+ <name>Throughput_Sec_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Throughput_Sec_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..bcb9f6abbe0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="ThroughputQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <buffer_size>92160</buffer_size>
+ </receiver_pool>
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.builtin.mask</name>
+ <value>DDS_TRANSPORTBUILTIN_UDPv4</value>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>UDP_SIZE_MAX</value>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>UDP_SOCKET_RECV_BUFFER_SIZE</value>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>UDP_SOCKET_SEND_BUFFER_SIZE</value>
+ </element>
+ </value>
+ </property>
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+
+ <qos_profile name="ThroughputCmdQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <participant_qos>
+ <receiver_pool>
+ <buffer_size>92160</buffer_size>
+ </receiver_pool>
+ <property>
+ <value>
+ <element>
+ <name>dds.transport.builtin.mask</name>
+ <value>DDS_TRANSPORTBUILTIN_UDPv4</value>
+ <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
+ <value>UDP_SIZE_MAX</value>
+ <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
+ <value>UDP_SOCKET_RECV_BUFFER_SIZE</value>
+ <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
+ <value>UDP_SOCKET_SEND_BUFFER_SIZE</value>
+ </element>
+ </value>
+ </property>
+ </participant_qos>
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/run_test.pl
new file mode 100644
index 00000000000..3eee53ba374
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Throughput/descriptors/run_test.pl
@@ -0,0 +1,252 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "ReceiverNode","SenderNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$E2 = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan_sub.cdp";
+$cdp_file_two = "Plan_pub.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Start dance_plan_launcher.exe with -x $cdp_file_two -k file://$ior_emfile\n";
+$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file_two -k file://$ior_emfile");
+$E2->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 180 seconds to allow task to complete\n";
+sleep (180);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file_two -s\n";
+
+$E2 = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file_two -s");
+$E2->SpawnWaitKill (5 * $tg_executor->ProcessStopWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl
new file mode 100644
index 00000000000..80c19976e0b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file CSL_DeadlineTest_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_DEADLINETEST_BASE_IDL
+#define CSL_DEADLINETEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CSL_DeadlineTest_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc
new file mode 100644
index 00000000000..40aac3f95d9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Base/CSL_DeadlineTest_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_CSL_DeadlineTest_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_CSL_DeadlineTest_Base_stub
+ dynamicflags += CSL_DEADLINETEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=CSL_DEADLINETEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CSL_DeadlineTest_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CSL_DeadlineTest_Base.idl
+ }
+
+ opendds_ts_flags += --export=CSL_DEADLINETEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CSL_DeadlineTest_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl
new file mode 100644
index 00000000000..92070bfb8d4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file CSL_DeadlineTest_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_DeadlineTest_CONNECTOR_IDL_
+#define CSL_DeadlineTest_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CSL_DeadlineTest_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CSL_DeadlineTest_ConnectorE.idl"
+
+module CSL_DeadlineTest
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector CSL_DeadlineTest_Connector : TestTopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* CSL_DeadlineTest_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc
new file mode 100644
index 00000000000..5ec42ccda2e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_DeadlineTest_Base -l .. -o ../lib -u DDS CSL_DeadlineTest_Connector"
+
+project(DDS_CSL_DT_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=CSL_DEADLINETEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CSL_DeadlineTest_Connector_stub_export.h \
+ -Wb,skel_export_macro=CSL_DEADLINETEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CSL_DeadlineTest_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=CSL_DEADLINETEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CSL_DeadlineTest_Connector_svnt_export.h \
+ -Wb,conn_export_macro=CSL_DEADLINETEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CSL_DeadlineTest_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_DeadlineTest_Connector.idl
+ }
+}
+
+project(DDS_CSL_DT_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_DT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=CSL_DEADLINETEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CSL_DeadlineTest_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CSL_DeadlineTest_ConnectorE.idl
+ }
+}
+
+project(DDS_CSL_DT_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_DT_Connector_lem_gen DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub
+ libs += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_DT_Connector_lem_stub
+ dynamicflags = CSL_DEADLINETEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ConnectorEC.h
+ CSL_DeadlineTest_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ConnectorEC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_DT_Connector_idl_gen DDS_CSL_DeadlineTest_Base_stub
+ libs += DDS_CSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_DeadlineTest_Connector_stub
+ dynamicflags = CSL_DEADLINETEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ConnectorC.h
+ CSL_DeadlineTest_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ConnectorC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_DeadlineTest_Connector_exec
+ libs += DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_DEADLINETEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_Connector_conn.h
+ CSL_DeadlineTest_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_DeadlineTest_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_exec DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_DeadlineTest_Connector_svnt
+ libs += DDS_CSL_DeadlineTest_Connector_stub \
+ DDS_CSL_DT_Connector_lem_stub \
+ DDS_CSL_DeadlineTest_Base_stub \
+ DDS_CSL_DeadlineTest_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_DEADLINETEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ConnectorS.cpp
+ CSL_DeadlineTest_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ConnectorS.h
+ CSL_DeadlineTest_Connector_svnt.h
+ CSL_DeadlineTest_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl
new file mode 100644
index 00000000000..9779bddbc23
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CSL_DeadlineTest_Connector.idl"
+
+module CSL_DeadlineTest
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc
new file mode 100644
index 00000000000..f071c196131
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_CSL_DeadlineTest_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_DT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CSL_DeadlineTest_Receiver.idl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_DeadlineTest_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CSL_DeadlineTest_ReceiverE.idl
+ }
+}
+
+project(DDS_CSL_DT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Receiver_lem_gen DDS_CSL_DeadlineTest_Receiver_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub
+ libs += Receiver_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ReceiverEC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Receiver_idl_gen DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DT_Connector_lem_gen
+ libs += DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ReceiverC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_DT_Receiver_lem_stub DDS_CSL_DeadlineTest_Receiver_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_DeadlineTest_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_DT_Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DeadlineTest_Receiver_exec DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt Receiver_exec DDS_CSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_ReceiverS.cpp
+ CSL_DeadlineTest_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_ReceiverS.h
+ CSL_DeadlineTest_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp
new file mode 100644
index 00000000000..3ed0c09801e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.cpp
@@ -0,0 +1,193 @@
+// -*- C++ -*-
+// $Id$
+
+#include "CSL_DeadlineTest_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_CSL_DeadlineTest_Receiver_Impl
+{
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &deadline_missed)
+ : deadline_missed_ (deadline_missed)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ this->deadline_missed_ = true;
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (Atomic_ULong &received)
+ : received_ (received)
+ {
+ }
+
+ TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::TestTopic_RawListener
+
+ void
+ TestTopic_RawListener_exec_i::on_one_data (
+ const TestTopic & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ++this->received_;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ")
+ ACE_TEXT ("received test_topic_info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.x));
+ }
+
+ void
+ TestTopic_RawListener_exec_i::on_many_data (
+ const TestTopicSeq & /*an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : deadline_missed_ (false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ // Component attributes.
+ // Port operations.
+ ::CSL_DeadlineTest::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return new TestTopic_RawListener_exec_i (this->received_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->deadline_missed_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CSL_DeadlineTest::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->deadline_missed_.value ())
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Didn't receive ")
+ ACE_TEXT ("'on_offered_deadline_missed'\n")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: Received the unexpected ")
+ ACE_TEXT ("'on_offered_deadline_missed'\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_DeadlineTest_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h
new file mode 100644
index 00000000000..1f673465fb1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver_exec.h
@@ -0,0 +1,130 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CSL_DeadlineTest_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_CSL_DeadlineTest_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Boolean;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i
+ : public virtual ::CSL_DeadlineTest::TestTopicConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ TestTopic_RawListener_exec_i (Atomic_ULong &);
+ virtual ~TestTopic_RawListener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+
+ virtual void
+ on_many_data (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & info);
+
+ private:
+ Atomic_ULong &received_;
+ };
+
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &deadline_missed_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CSL_DeadlineTest::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CSL_DeadlineTest::CCM_Receiver_Context_var context_;
+ Atomic_ULong received_;
+ Atomic_Boolean deadline_missed_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_DeadlineTest_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl
new file mode 100644
index 00000000000..78837331b98
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_CSL_DEADLINETEST_SENDER_IDL
+#define DDS_CSL_DEADLINETEST_SENDER_IDL
+
+#include "Connector/CSL_DeadlineTest_Connector.idl"
+
+module CSL_DeadlineTest
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Write test_topic_write;
+ provides CCM_DDS::ConnectorStatusListener test_topic_connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc
new file mode 100644
index 00000000000..a35d1f4f89d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_DeadlineTest_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_CSL_DeadlineTest_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_CSL_DT_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_DeadlineTest_Sender.idl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_DeadlineTest_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CSL_DeadlineTest_SenderE.idl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Sender_lem_gen DDS_CSL_DeadlineTest_Sender_stub DDS_CSL_DeadlineTest_Base_stub
+ libs += DDS_CSL_DeadlineTest_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_SenderEC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_SenderEC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Sender_idl_gen DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub
+ libs += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_SenderC.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_SenderC.inl
+ }
+}
+
+project(DDS_CSL_DeadlineTest_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Sender_lem_stub DDS_CSL_DeadlineTest_Sender_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DT_Connector_lem_stub DDS_CSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_DeadlineTest_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_DeadlineTest_Base_stub DDS_CSL_DeadlineTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DT_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_CSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_DeadlineTest_Connector_stub DDS_CSL_DeadlineTest_Connector_svnt DDS_CSL_DT_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_DeadlineTest_SenderS.cpp
+ CSL_DeadlineTest_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_DeadlineTest_SenderS.h
+ CSL_DeadlineTest_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_DeadlineTest_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp
new file mode 100644
index 00000000000..5b26849663b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.cpp
@@ -0,0 +1,235 @@
+// -*- C++ -*-
+// $Id$
+
+// Test for OFFERED_DEADLINE_MISSED status : Writer failed to write data within the deadline time period set in the profile.
+
+#include "CSL_DeadlineTest_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_DeadlineTest_Sender_Impl
+{
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &deadline_missed,
+ Atomic_ThreadId &thread_id)
+ : deadline_missed_ (deadline_missed),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ if(status.last_instance_handle.isValid && ! ::CORBA::is_nil (the_writer))
+ {
+ this->deadline_missed_ = true;
+ }
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : deadline_missed_ (false),
+ thread_id_listener_ (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_test_topic_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->deadline_missed_,
+ this->thread_id_listener_);
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::CSL_DeadlineTest::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_test_topic_write_data ();
+ }
+
+ void
+ Sender_exec_i::write (void)
+ {
+ //to force an 'offered_deadline_missed' write the topics with a pause of 2 sec in between and
+ //in the profile the deadline is set to 1 sec.
+ for (CSL_QoSTest_Table::iterator i = this->_ktests_.begin ();
+ i != this->_ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->writer_) )
+ {
+ ACE_OS::sleep (2);
+ ::DDS::InstanceHandle_t hnd = this->writer_->register_instance (i->second);
+ this->writer_->write_one(i->second,hnd);
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while writing topic for <%C>.\n"),
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::add_instance_of_topic (const char * key, int x)
+ {
+ TestTopic *new_key = new TestTopic;
+ new_key->key = CORBA::string_dup(key);
+ new_key->x = x;
+ this->_ktests_[key] = new_key;
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ //add 2 different instances of topic
+ this->add_instance_of_topic ("ONE",1);
+ this->add_instance_of_topic ("TWO",2);
+
+ //write the instances once for the test
+ this->write();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (this->deadline_missed_.value ())
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'on_offered_deadline_missed'\n")
+ ));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_offered_deadline_missed'\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_DeadlineTest_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h
new file mode 100644
index 00000000000..8638d2f3332
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/Sender/CSL_DeadlineTest_Sender_exec.h
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CSL_DeadlineTest_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CSL_DeadlineTest_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Sender_exec_i;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &deadline_missed_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+//============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_test_topic_connector_status(void);
+
+ private:
+ ::CSL_DeadlineTest::CCM_Sender_Context_var context_;
+ ::CSL_DeadlineTest::TestTopicConn::Writer_var writer_;
+
+ Atomic_Boolean deadline_missed_;
+ Atomic_ThreadId thread_id_listener_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, TestTopic_var> CSL_QoSTest_Table;
+ CSL_QoSTest_Table _ktests_;
+
+ void add_instance_of_topic (const char *, int x );
+ void write (void);
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_DeadlineTest_Sender_Impl (void);
+
+
+
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp
new file mode 100644
index 00000000000..f5943bb1d47
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/Plan.cdp
@@ -0,0 +1,411 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CSL_DeadlineTest_Depl_1</label>
+ <UUID>CSL_DeadlineTest_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CSL_DeadlineTest_ConnectorComponentImplementation">
+ <name>CSL_DeadlineTest_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CSL_DeadlineTest_Connector_ExecArtifact" />
+ <artifact xmi:idref="CSL_DeadlineTest_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_CSL_DeadlineTest_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_DeadlineTest_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_DeadlineTest_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_DeadlineTest_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="CSL_DeadlineTest_ConnectorComponentInstance">
+ <name>CSL_DeadlineTest_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_DeadlineTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CSL_DeadlineTest_ConnectorComponentInstance2">
+ <name>CSL_DeadlineTest_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_DeadlineTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_topic_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_DeadlineTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CSL_DeadlineTest_Connector_ExecArtifact">
+ <name>CSL_DeadlineTest_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_DeadlineTest_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CSL_DeadlineTest_Connector_SvntArtifact">
+ <name>CSL_DeadlineTest_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_DeadlineTest_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CSL_DeadlineTest_Connector_StubArtifact">
+ <name>CSL_DeadlineTest_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_DeadlineTest_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..0ce3f46ffdf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Hello_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>2</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ <deadline>
+ <period>
+ <sec>1</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ <deadline>
+ <period>
+ <sec>1</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datareader_qos>
+
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl
new file mode 100755
index 00000000000..b2a5229d554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLDeadline/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl
new file mode 100644
index 00000000000..829b30a0587
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file CSL_QoSTest_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_QOSTEST_BASE_IDL
+#define CSL_QOSTEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CSL_QoSTest_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc
new file mode 100644
index 00000000000..63ab9a3f374
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Base/CSL_QoSTest_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_CSL_QoSTest_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_CSL_QoSTest_Base_stub
+ dynamicflags += CSL_QOSTEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=CSL_QOSTEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CSL_QoSTest_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CSL_QoSTest_Base.idl
+ }
+
+ opendds_ts_flags += --export=CSL_QOSTEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CSL_QoSTest_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl
new file mode 100644
index 00000000000..90ad8006fb5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file CSL_QoSTest_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_QOSTEST_CONNECTOR_IDL_
+#define CSL_QOSTEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CSL_QoSTest_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CSL_QoSTest_ConnectorE.idl"
+
+module CSL_QoSTest
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector CSL_QoSTest_Connector : TestTopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* CSL_QoSTest_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc
new file mode 100644
index 00000000000..65082f10cc9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_QoSTest_Base -l .. -o ../lib -u DDS CSL_QoSTest_Connector"
+
+project(DDS_CSL_QoSTest_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=CSL_QOSTEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CSL_QoSTest_Connector_stub_export.h \
+ -Wb,skel_export_macro=CSL_QOSTEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CSL_QoSTest_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=CSL_QOSTEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CSL_QoSTest_Connector_svnt_export.h \
+ -Wb,conn_export_macro=CSL_QOSTEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CSL_QoSTest_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_QoSTest_Connector.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_QoSTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=CSL_QOSTEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CSL_QoSTest_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CSL_QoSTest_ConnectorE.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Connector_lem_gen DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub
+ libs += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_QoSTest_Connector_lem_stub
+ dynamicflags = CSL_QOSTEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ConnectorEC.h
+ CSL_QoSTest_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ConnectorEC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Connector_idl_gen DDS_CSL_QoSTest_Base_stub
+ libs += DDS_CSL_QoSTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_QoSTest_Connector_stub
+ dynamicflags = CSL_QOSTEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ConnectorC.h
+ CSL_QoSTest_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ConnectorC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_QoSTest_Connector_exec
+ libs += DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_QOSTEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_Connector_conn.h
+ CSL_QoSTest_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_QoSTest_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_exec DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_QoSTest_Connector_svnt
+ libs += DDS_CSL_QoSTest_Connector_stub \
+ DDS_CSL_QoSTest_Connector_lem_stub \
+ DDS_CSL_QoSTest_Base_stub \
+ DDS_CSL_QoSTest_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_QOSTEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ConnectorS.cpp
+ CSL_QoSTest_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ConnectorS.h
+ CSL_QoSTest_Connector_svnt.h
+ CSL_QoSTest_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl
new file mode 100644
index 00000000000..caf1bcab8ea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CSL_QoSTest_Connector.idl"
+
+module CSL_QoSTest
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc
new file mode 100644
index 00000000000..abf97c993e8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_CSL_QoSTest_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_QoSTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CSL_QoSTest_Receiver.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_QoSTest_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CSL_QoSTest_ReceiverE.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Receiver_lem_gen DDS_CSL_QoSTest_Receiver_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub
+ libs += Receiver_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ReceiverEC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Receiver_idl_gen DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_lem_gen
+ libs += DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ReceiverC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Receiver_lem_stub DDS_CSL_QoSTest_Receiver_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_QoSTest_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Receiver_exec DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt Receiver_exec DDS_CSL_QoSTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_ReceiverS.cpp
+ CSL_QoSTest_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_ReceiverS.h
+ CSL_QoSTest_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp
new file mode 100644
index 00000000000..5f778789fb7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp
@@ -0,0 +1,205 @@
+// -*- C++ -*-
+//
+// $Id$
+
+//Test for ConnectorStatusListener: on_requested_incompatible_qos
+
+#include "CSL_QoSTest_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_QoSTest_Receiver_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &incompatible,
+ Atomic_ThreadId &thread_id)
+ : incompatible_ (incompatible),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ if(! ::CORBA::is_nil(the_reader))
+ {
+ this->incompatible_ = true;
+ }
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind */)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : incompatible_ (false),
+ thread_id_listener_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CSL_QoSTest::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return ::CSL_QoSTest::TestTopicConn::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->incompatible_,
+ this->thread_id_listener_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CSL_QoSTest::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->incompatible_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_requested_incompatible_Qos' in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Received the expected ")
+ ACE_TEXT ("'on_requested_incompatible_Qos' in Receiver\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_QoSTest_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h
new file mode 100644
index 00000000000..f9d59483c21
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.h
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CSL_QoSTest_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_CSL_QoSTest_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &incompatible_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CSL_QoSTest::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CSL_QoSTest::CCM_Receiver_Context_var context_;
+ Atomic_Boolean incompatible_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_QoSTest_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl
new file mode 100644
index 00000000000..fd8f7b1c770
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_CSL_QOSTEST_SENDER_IDL
+#define DDS_CSL_QOSTEST_SENDER_IDL
+
+#include "Connector/CSL_QoSTest_Connector.idl"
+
+module CSL_QoSTest
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Write info_write;
+ provides CCM_DDS::ConnectorStatusListener test_topic_connector_status;
+
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc
new file mode 100644
index 00000000000..19398ae21f6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_QoSTest_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_CSL_QoSTest_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_CSL_QoSTest_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_QoSTest_Sender.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_QoSTest_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CSL_QoSTest_SenderE.idl
+ }
+}
+
+project(DDS_CSL_QoSTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Sender_lem_gen DDS_CSL_QoSTest_Sender_stub DDS_CSL_QoSTest_Base_stub
+ libs += DDS_CSL_QoSTest_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_SenderEC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_SenderEC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Sender_idl_gen DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub
+ libs += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_SenderC.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_SenderC.inl
+ }
+}
+
+project(DDS_CSL_QoSTest_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Sender_lem_stub DDS_CSL_QoSTest_Sender_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Connector_lem_stub DDS_CSL_QoSTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_QoSTest_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_QoSTest_Base_stub DDS_CSL_QoSTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_CSL_QoSTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_QoSTest_Connector_stub DDS_CSL_QoSTest_Connector_svnt DDS_CSL_QoSTest_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_QoSTest_SenderS.cpp
+ CSL_QoSTest_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_QoSTest_SenderS.h
+ CSL_QoSTest_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_QoSTest_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp
new file mode 100644
index 00000000000..501be3c9d3b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp
@@ -0,0 +1,195 @@
+// -*- C++ -*-
+// $Id$
+
+//Test for ConnectorStatusListener: on_offered_incompatible_qos
+
+#include "CSL_QoSTest_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_QoSTest_Sender_Impl
+{
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &incompatible,
+ Atomic_ThreadId &thread_id)
+ : incompatible_ (incompatible),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ if(! ::CORBA::is_nil(the_writer))
+ {
+ this->incompatible_ = true;
+ }
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : incompatible_ (false),
+ thread_id_listener_ (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_test_topic_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->incompatible_,
+ this->thread_id_listener_);
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CSL_QoSTest::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (!this->incompatible_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_offered_incompatible_qos'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'on_offered_incompatible_qos'\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_QoSTest_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h
new file mode 100644
index 00000000000..4606c9ce5df
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.h
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CSL_QoSTest_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CSL_QoSTest_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Sender_exec_i;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &incompatible_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_test_topic_connector_status(void);
+
+ private:
+ ::CSL_QoSTest::CCM_Sender_Context_var context_;
+
+ Atomic_Boolean incompatible_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_QoSTest_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp
new file mode 100644
index 00000000000..3a38cc88104
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/Plan.cdp
@@ -0,0 +1,372 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CSL_QoSTest_Depl_1</label>
+ <UUID>CSL_QoSTest_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CSL_QoSTest_ConnectorComponentImplementation">
+ <name>CSL_QoSTest_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CSL_QoSTest_Connector_ExecArtifact" />
+ <artifact xmi:idref="CSL_QoSTest_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_CSL_QoSTest_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_CSL_QoSTest_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_QoSTest_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_QoSTest_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_QoSTest_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="CSL_QoSTest_ConnectorComponentInstance">
+ <name>CSL_QoSTest_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_QoSTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QoSTest_Library#Sender_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CSL_QoSTest_ConnectorComponentInstance2">
+ <name>CSL_QoSTest_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_QoSTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QoSTest_Library#Receiver_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_QoSTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_QoSTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_topic_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_QoSTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_topic_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_QoSTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CSL_QoSTest_Connector_ExecArtifact">
+ <name>CSL_QoSTest_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_QoSTest_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CSL_QoSTest_Connector_SvntArtifact">
+ <name>CSL_QoSTest_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_QoSTest_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CSL_QoSTest_Connector_StubArtifact">
+ <name>CSL_QoSTest_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_QoSTest_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..00209f072de
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="QoSTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Sender_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>2</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <liveliness>
+ <kind>DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS</kind>
+ </liveliness>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ </qos_profile>
+
+ <qos_profile name="Receiver_Profile" is_default_qos="true">
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <liveliness>
+ <kind>DDS_MANUAL_BY_TOPIC_LIVELINESS_QOS</kind>
+ </liveliness>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl
new file mode 100755
index 00000000000..b2a5229d554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLQoS/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl
new file mode 100644
index 00000000000..0ca498b542d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+/**
+ * @file CSL_SRTest_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_SRTEST_BASE_IDL
+#define CSL_SRTEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CSL_SRTest_BaseSupport.h"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc
new file mode 100644
index 00000000000..ce968a4a7eb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Base/CSL_SRTest_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_CSL_SRTest_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_CSL_SRTest_Base_stub
+ dynamicflags += CSL_SRTEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=CSL_SRTEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CSL_SRTest_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CSL_SRTest_Base.idl
+ }
+
+ opendds_ts_flags += --export=CSL_SRTEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CSL_SRTest_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl
new file mode 100644
index 00000000000..aebb35751bb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file CSL_SRTest_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_SRTEST_CONNECTOR_IDL_
+#define CSL_SRTEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CSL_SRTest_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CSL_SRTest_ConnectorE.idl"
+
+module CSL_SRTest
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector CSL_SRTest_Connector : TestTopicConn::DDS_Event
+ {
+ };
+
+};
+
+#endif /* CSL_SRTEST_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc
new file mode 100644
index 00000000000..eba1bec9072
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Connector/CSL_SRTest_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_SRTest_Base -l .. -o ../lib -u DDS CSL_SRTest_Connector"
+
+project(DDS_CSL_SRTest_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=CSL_SRTEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CSL_SRTest_Connector_stub_export.h \
+ -Wb,skel_export_macro=CSL_SRTEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CSL_SRTest_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=CSL_SRTEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CSL_SRTest_Connector_svnt_export.h \
+ -Wb,conn_export_macro=CSL_SRTEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CSL_SRTest_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_SRTest_Connector.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_SRTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=CSL_SRTEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CSL_SRTest_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CSL_SRTest_ConnectorE.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_SRTest_Connector_lem_gen DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub
+ libs += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_SRTest_Connector_lem_stub
+ dynamicflags = CSL_SRTEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ConnectorEC.h
+ CSL_SRTest_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ConnectorEC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_SRTest_Connector_idl_gen DDS_CSL_SRTest_Base_stub
+ libs += DDS_CSL_SRTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_SRTest_Connector_stub
+ dynamicflags = CSL_SRTEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ConnectorC.h
+ CSL_SRTest_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ConnectorC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_SRTest_Connector_exec
+ libs += DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_SRTEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_Connector_conn.h
+ CSL_SRTest_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_SRTest_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_exec DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_SRTest_Connector_svnt
+ libs += DDS_CSL_SRTest_Connector_stub \
+ DDS_CSL_SRTest_Connector_lem_stub \
+ DDS_CSL_SRTest_Base_stub \
+ DDS_CSL_SRTest_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_SRTEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ConnectorS.cpp
+ CSL_SRTest_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ConnectorS.h
+ CSL_SRTest_Connector_svnt.h
+ CSL_SRTest_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl
new file mode 100644
index 00000000000..c8eb57ca52f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CSL_SRTest_Connector.idl"
+
+module CSL_SRTest
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ attribute unsigned long rate;
+ attribute boolean read_data;//if true, read_all is invoked.
+ attribute boolean raw_listen; //if true, raw listen port is enabled.
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc
new file mode 100644
index 00000000000..3481260f7d7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_CSL_SRTest_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_SRTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CSL_SRTest_Receiver.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_SRTest_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CSL_SRTest_ReceiverE.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_SRTest_Receiver_lem_gen DDS_CSL_SRTest_Receiver_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub
+ libs += Receiver_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ReceiverEC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_SRTest_Receiver_idl_gen DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_lem_gen
+ libs += DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ReceiverC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_SRTest_Receiver_lem_stub DDS_CSL_SRTest_Receiver_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_SRTest_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_SRTest_Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Receiver_exec DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt Receiver_exec DDS_CSL_SRTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_ReceiverS.cpp
+ CSL_SRTest_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_ReceiverS.h
+ CSL_SRTest_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp
new file mode 100644
index 00000000000..00552835afb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.cpp
@@ -0,0 +1,373 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for ConnectorStatusListener:REJECTED_SAMPLE status through too much instances
+// in Sender <max_instances>2</max_instances>, in Receiver <max_instances>1</max_instances>
+
+#include "CSL_SRTest_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_SRTest_Receiver_Impl
+{
+
+//============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &rejected,
+ Atomic_ThreadId &thread_id)
+ : rejected_ (rejected),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ if (status.last_reason == DDS::REJECTED_BY_INSTANCES_LIMIT &&
+ ! ::CORBA::is_nil(the_reader))
+ {
+ this->rejected_ = true;
+ }
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ try
+ {
+ if (pulse_callback_.read_data ())
+ {
+ this->pulse_callback_.read_all();
+ }
+ }
+ catch (...)
+ {
+ }
+ return 0;
+ }
+
+ //============================================================
+ // Facet Executor Implementation Class: TestTopic_Listener_exec_i
+ //============================================================
+
+ TestTopic_Listener_exec_i::TestTopic_Listener_exec_i (Atomic_ULong &received)
+ : received_ (received)
+ {
+ }
+
+ TestTopic_Listener_exec_i::~TestTopic_Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::TestTopic_Listener
+ void
+ TestTopic_Listener_exec_i::on_many_data (
+ const TestTopicSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ void
+ TestTopic_Listener_exec_i::on_one_data (
+ const TestTopic & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ++this->received_;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_Listener: ")
+ ACE_TEXT ("received testtopic_info for <%C> at %dl\n"),
+ an_instance.key.in (),
+ an_instance.x));
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iTestTopic_Listener_exec_i ();
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (0),
+ read_data_ (true),
+ raw_listen_ (false),
+ received_ (0),
+ rejected_(0),
+ thread_id_listener_ (0)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ TestTopicSeq_var TestTopic_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out());
+ for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i)
+ {
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ TestTopic_infos[i].key.in (),
+ TestTopic_infos[i].x));
+ }
+ }
+
+ // Component attributes.
+ ::CORBA::ULong
+ Receiver_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Receiver_exec_i::rate (::CORBA::ULong rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::Boolean
+ Receiver_exec_i::read_data (void)
+ {
+ return this->read_data_;
+ }
+
+ void
+ Receiver_exec_i::read_data (
+ ::CORBA::Boolean read_data)
+ {
+ this->read_data_ = read_data;
+ }
+
+ ::CORBA::Boolean
+ Receiver_exec_i::raw_listen (void)
+ {
+ return this->raw_listen_;
+ }
+
+ void
+ Receiver_exec_i::raw_listen (
+ ::CORBA::Boolean raw_listen)
+ {
+ this->raw_listen_ = raw_listen;
+ }
+
+ // Port operations.
+ ::CSL_SRTest::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return new TestTopic_Listener_exec_i (this->received_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->rejected_,
+ this->thread_id_listener_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CSL_SRTest::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ if (this->read_data ())
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (this->raw_listen_ ? ::CCM_DDS::ONE_BY_ONE : ::CCM_DDS::NOT_ENABLED);
+
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(0, usec),
+ ACE_Time_Value(0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->rejected_.value ())
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Have received the expected ")
+ ACE_TEXT ("'on_sample_rejected'\n")
+ ));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: did not receive the expected ")
+ ACE_TEXT ("warning 'on_sample_rejected'\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_SRTest_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h
new file mode 100644
index 00000000000..f36ecafe6a8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Receiver/CSL_SRTest_Receiver_exec.h
@@ -0,0 +1,169 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CSL_SRTest_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_CSL_SRTest_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &rejected_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ Receiver_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // TestTopic_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export TestTopic_Listener_exec_i
+ : public virtual ::CSL_SRTest::TestTopicConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ TestTopic_Listener_exec_i (Atomic_ULong &);
+ virtual ~TestTopic_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const TestTopicSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ void read_all (void);
+
+ // Component attributes.
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+ virtual ::CORBA::Boolean read_data (void);
+
+ virtual void read_data (::CORBA::Boolean read_data);
+
+ virtual ::CORBA::Boolean raw_listen (void);
+
+ virtual void raw_listen (::CORBA::Boolean raw_listen);
+
+ // Port operations.
+ virtual ::CSL_SRTest::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CSL_SRTest::CCM_Receiver_Context_var context_;
+ ::CSL_SRTest::TestTopicConn::Reader_var reader_;
+
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+ CORBA::Boolean read_data_, raw_listen_;
+ Atomic_ULong received_;
+ Atomic_Boolean rejected_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_SRTest_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl
new file mode 100644
index 00000000000..53134ceaec5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_CSL_SRTEST_SENDER_IDL
+#define DDS_CSL_SRTEST_SENDER_IDL
+
+#include "Connector/CSL_SRTest_Connector.idl"
+
+module CSL_SRTest
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Write test_topic_write;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc
new file mode 100644
index 00000000000..ba7649d7040
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_SRTest_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_CSL_SRTest_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_CSL_SRTest_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_SRTest_Sender.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_SRTest_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CSL_SRTest_SenderE.idl
+ }
+}
+
+project(DDS_CSL_SRTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_SRTest_Sender_lem_gen DDS_CSL_SRTest_Sender_stub DDS_CSL_SRTest_Base_stub
+ libs += DDS_CSL_SRTest_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_SenderEC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_SenderEC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_SRTest_Sender_idl_gen DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub
+ libs += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_SenderC.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_SenderC.inl
+ }
+}
+
+project(DDS_CSL_SRTest_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_SRTest_Sender_lem_stub DDS_CSL_SRTest_Sender_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Connector_lem_stub DDS_CSL_SRTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_SRTest_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_SRTest_Base_stub DDS_CSL_SRTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_CSL_SRTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_SRTest_Connector_stub DDS_CSL_SRTest_Connector_svnt DDS_CSL_SRTest_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_SRTest_SenderS.cpp
+ CSL_SRTest_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_SRTest_SenderS.h
+ CSL_SRTest_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_SRTest_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp
new file mode 100644
index 00000000000..70a74d28775
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.cpp
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+// $Id$
+
+
+// Test for ConnectorStatusListener:REJECTED_SAMPLE status through too much instances
+// in Sender <max_instances>2</max_instances>, in Receiver <max_instances>1</max_instances>
+
+#include "CSL_SRTest_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_SRTest_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (100)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::tick ()
+ {
+ for (CSL_SRTest_Table::iterator i = this->_ktests_.begin ();
+ i != this->_ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->writer_))
+ {
+ this->writer_->write_one(i->second,::DDS::HANDLE_NIL);
+ i->second->x++;
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"),
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // calculate the interval time
+ long usec = 10000000 / this->rate_;
+
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::CSL_SRTest::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_test_topic_write_data ();
+ }
+
+ void
+ Sender_exec_i::add_instance_of_topic (const char * key, int x)
+ {
+ TestTopic *new_key = new TestTopic;
+ new_key->key = CORBA::string_dup(key);
+ new_key->x = x;
+ this->_ktests_[key] = new_key;
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ //add 2 different instances of topic
+ this->add_instance_of_topic ("ONE", 1);
+ this->add_instance_of_topic ("TWO", 2);
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_SRTest_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h
new file mode 100644
index 00000000000..d74e8feac3f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/Sender/CSL_SRTest_Sender_exec.h
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CSL_SRTest_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CSL_SRTest_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ void tick (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ void start (void);
+ void stop (void);
+
+ ::CSL_SRTest::TestTopicConn::Writer_var writer_;
+ ::CSL_SRTest::CCM_Sender_Context_var context_;
+ pulse_Generator * ticker_;
+
+ CORBA::ULong rate_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, TestTopic_var> CSL_SRTest_Table;
+ CSL_SRTest_Table _ktests_;
+
+ void add_instance_of_topic (const char *, int x);
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_SRTest_Sender_Impl (void);
+
+
+
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp
new file mode 100644
index 00000000000..0d7d955a648
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/Plan.cdp
@@ -0,0 +1,457 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CSL_SRTest_Depl_1</label>
+ <UUID>CSL_SRTest_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CSL_SRTest_ConnectorComponentImplementation">
+ <name>CSL_SRTest_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CSL_SRTest_Connector_ExecArtifact" />
+ <artifact xmi:idref="CSL_SRTest_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_CSL_SRTest_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_CSL_SRTest_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_SRTest_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_SRTest_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_SRTest_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>1</long>
+ </value>
+ </value>
+ </configProperty>
+ <!--configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty-->
+ <!--configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10</ulong>
+ </value>
+ </value>
+ </configProperty-->
+ <!--configProperty>
+ <name>get_data</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty-->
+ <configProperty>
+ <name>read_data</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>raw_listen</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>false</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="CSL_SRTest_ConnectorComponentInstance">
+ <name>CSL_SRTest_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_SRTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CSL_SRTest_ConnectorComponentInstance2">
+ <name>CSL_SRTest_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_SRTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_SRTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_SRTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_SRTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_SRTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_SRTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CSL_SRTest_Connector_ExecArtifact">
+ <name>CSL_SRTest_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_SRTest_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CSL_SRTest_Connector_SvntArtifact">
+ <name>CSL_SRTest_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_SRTest_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CSL_SRTest_Connector_StubArtifact">
+ <name>CSL_SRTest_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_SRTest_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..2ebc1749f3f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+This file is used to create a situation which causes an on_rejected_sample event.
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Hello_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>0</sec>
+ <nanosec>100000000</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <durability_service>
+ <history_kind>KEEP_LAST_HISTORY_QOS</history_kind>
+ <history_depth>10</history_depth>
+ <max_samples>10</max_samples>
+ <max_samples_per_instance>5</max_samples_per_instance>
+ <max_instances>2</max_instances>
+ </durability_service>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <durability>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ </durability>
+ <deadline>
+ <period>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </period>
+ </deadline>
+ <latency_budget>
+ <duration>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </duration>
+ </latency_budget>
+ <liveliness>
+ <kind>AUTOMATIC_LIVELINESS_QOS</kind>
+ <lease_duration>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </lease_duration>
+ </liveliness>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>0</sec>
+ <nanosec>100000000</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <destination_order>
+ <kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
+ </destination_order>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>10</depth>
+ </history>
+ <resource_limits>
+ <initial_samples>1</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>10</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>10</max_samples_per_instance>
+ </resource_limits>
+ <user_data>
+ <value></value>
+ </user_data>
+ <ownership>
+ <kind>SHARED_OWNERSHIP_QOS</kind>
+ </ownership>
+ <time_based_filter>
+ <minimum_separation>
+ <sec>0</sec>
+ <nanosec>0</nanosec>
+ </minimum_separation>
+ </time_based_filter>
+ <reader_data_lifecycle>
+ <autopurge_nowriter_samples_delay>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </autopurge_nowriter_samples_delay>
+ <autopurge_disposed_samples_delay>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </autopurge_disposed_samples_delay>
+ </reader_data_lifecycle>
+ </datareader_qos>
+
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl
new file mode 100755
index 00000000000..5d0ab35419d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLSampleRejected/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl
new file mode 100644
index 00000000000..fe3b049bc59
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+/**
+ * @file CSL_USTest_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_USTEST_BASE_IDL
+#define CSL_USTEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CSL_USTest_BaseSupport.h"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc
new file mode 100644
index 00000000000..d6df1c193f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Base/CSL_USTest_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_CSL_USTest_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_CSL_USTest_Base_stub
+ dynamicflags += CSL_USTEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=CSL_USTEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CSL_USTest_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CSL_USTest_Base.idl
+ }
+
+ opendds_ts_flags += --export=CSL_USTEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CSL_USTest_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl
new file mode 100644
index 00000000000..51fd2524919
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file CSL_USTest_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef CSL_USTEST_CONNECTOR_IDL_
+#define CSL_USTEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CSL_USTest_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CSL_USTest_ConnectorE.idl"
+
+module CSL_USTest
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector CSL_USTest_Connector : TestTopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* CSL_USTest_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc
new file mode 100644
index 00000000000..c59804238f9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Connector/CSL_USTest_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_USTest_Base -l .. -o ../lib -u DDS CSL_USTest_Connector"
+
+project(DDS_CSL_USTest_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=CSL_USTEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CSL_USTest_Connector_stub_export.h \
+ -Wb,skel_export_macro=CSL_USTEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CSL_USTest_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=CSL_USTEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CSL_USTest_Connector_svnt_export.h \
+ -Wb,conn_export_macro=CSL_USTEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CSL_USTest_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_USTest_Connector.idl
+ }
+}
+
+project(DDS_CSL_USTest_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_USTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=CSL_USTEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CSL_USTest_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CSL_USTest_ConnectorE.idl
+ }
+}
+
+project(DDS_CSL_USTest_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_USTest_Connector_lem_gen DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub
+ libs += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_USTest_Connector_lem_stub
+ dynamicflags = CSL_USTEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ConnectorEC.h
+ CSL_USTest_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ConnectorEC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_USTest_Connector_idl_gen DDS_CSL_USTest_Base_stub
+ libs += DDS_CSL_USTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_CSL_USTest_Connector_stub
+ dynamicflags = CSL_USTEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ConnectorC.h
+ CSL_USTest_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ConnectorC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_USTest_Connector_exec
+ libs += DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_USTEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_Connector_conn.h
+ CSL_USTest_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_USTest_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_exec DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_CSL_USTest_Connector_svnt
+ libs += DDS_CSL_USTest_Connector_stub \
+ DDS_CSL_USTest_Connector_lem_stub \
+ DDS_CSL_USTest_Base_stub \
+ DDS_CSL_USTest_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = CSL_USTEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ConnectorS.cpp
+ CSL_USTest_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ConnectorS.h
+ CSL_USTest_Connector_svnt.h
+ CSL_USTest_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl
new file mode 100644
index 00000000000..84a4fe8639a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CSL_USTest_Connector.idl"
+
+module CSL_USTest
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ port TestTopicConn::DDS_Read info_read;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc
new file mode 100644
index 00000000000..8071b999aa2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_CSL_USTest_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_CSL_USTest_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CSL_USTest_Receiver.idl
+ }
+}
+
+project(DDS_CSL_USTest_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_USTest_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CSL_USTest_ReceiverE.idl
+ }
+}
+
+project(DDS_CSL_USTest_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_USTest_Receiver_lem_gen DDS_CSL_USTest_Receiver_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub
+ libs += Receiver_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ReceiverEC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_USTest_Receiver_idl_gen DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_lem_gen
+ libs += DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ReceiverC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_USTest_Receiver_lem_stub DDS_CSL_USTest_Receiver_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_USTest_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_USTest_Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Receiver_exec DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt Receiver_exec DDS_CSL_USTest_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_ReceiverS.cpp
+ CSL_USTest_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_ReceiverS.h
+ CSL_USTest_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp
new file mode 100644
index 00000000000..bbf07fcd65f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.cpp
@@ -0,0 +1,425 @@
+// -*- C++ -*-
+//
+// $Id$
+
+//Test for on_unexpected_status with status LIVELINESS_CHANGED_STATUS' and 'SUBSCRIPTION_MATCHED_STATUS
+
+#include "CSL_USTest_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_USTest_Receiver_Impl
+{
+ //============================================================
+ // Pulser
+ //============================================================
+ Pulser::Pulser (Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ Pulser::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.read_all ();
+ return 0;
+ }
+
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &subscription_matched_received,
+ Atomic_Boolean &liveliness_changed_received,
+ Atomic_ThreadId &thread_id_subcription_matched,
+ Atomic_ThreadId &thread_id_liveliness_changed)
+ : subscription_matched_received_ (subscription_matched_received),
+ liveliness_changed_received_ (liveliness_changed_received),
+ thread_id_subcription_matched_ (thread_id_subcription_matched),
+ thread_id_liveliness_changed_ (thread_id_liveliness_changed)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER\tConnectorStatusListener_exec_i::on_unexpected_status: "
+ "received <%C>\n",
+ CIAO::DDS4CCM::translate_statuskind (status_kind)));
+
+ if (! ::CORBA::is_nil (the_entity) && status_kind == DDS::SUBSCRIPTION_MATCHED_STATUS)
+ {
+ this->subscription_matched_received_ = true;
+ this->thread_id_subcription_matched_ = ACE_Thread::self ();
+ }
+ else if (! ::CORBA::is_nil(the_entity) && status_kind == DDS::LIVELINESS_CHANGED_STATUS)
+ {
+ this->liveliness_changed_received_ = true;
+ this->thread_id_liveliness_changed_ = ACE_Thread::self ();
+ }
+ }
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (Atomic_ULong &received,
+ Receiver_exec_i &callback)
+ : received_ (received),
+ callback_ (callback)
+ {
+ }
+
+ TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::TestTopic_RawListener
+ void
+ TestTopic_RawListener_exec_i::on_one_data (
+ const TestTopic & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ++this->received_;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ")
+ ACE_TEXT ("received test_topic_info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.x));
+ if (this->received_ == 10)
+ this->callback_.stop ();
+ }
+
+ void
+ TestTopic_RawListener_exec_i::on_many_data (
+ const TestTopicSeq & /*an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : subscription_matched_received_ (false),
+ liveliness_changed_received_ (false),
+ thread_id_listener_subscription_matched_ (0),
+ thread_id_listener_liveliness_changed_ (0),
+ received_(0)
+ {
+ this->lc_ = ::CCM_DDS::DataListenerControl::_nil ();
+ this->pulser_= new Pulser (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_read_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CSL_USTest::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return new TestTopic_RawListener_exec_i (this->received_,
+ *this);
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->subscription_matched_received_,
+ this->liveliness_changed_received_,
+ this->thread_id_listener_subscription_matched_,
+ this->thread_id_listener_liveliness_changed_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CSL_USTest::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::stop (void)
+ {
+ if (::CORBA::is_nil (this->lc_.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ }
+ this->lc_->mode (::CCM_DDS::NOT_ENABLED);
+ }
+
+ void
+ Receiver_exec_i::start (void)
+ {
+ this->lc_ = this->context_->get_connection_info_out_data_control ();
+ if (::CORBA::is_nil (this->lc_.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ }
+ this->lc_->mode (::CCM_DDS::NOT_ENABLED);
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_read_data ();
+ }
+
+ void
+ Receiver_exec_i::read_all ()
+ {
+ try
+ {
+ TestTopicSeq *readertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ if (this->received_ < 30)
+ {
+ this->reader_->read_all (
+ readertest_info_seq,
+ readinfo_seq);
+ ACE_DEBUG ((LM_DEBUG, "Read %u samples\n",
+ readinfo_seq->length ()));
+ this->received_ += readinfo_seq->length ();
+ }
+ else
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->pulser_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::start :Stop reading.\n")));
+ delete this->pulser_;
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ALL: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ALL: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->pulser_,
+ 0,
+ ACE_Time_Value (6, 0),
+ ACE_Time_Value (3, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->subscription_matched_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'SUBSCRIPTION_MATCHED_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Received the expected ")
+ ACE_TEXT ("'SUBSCRIPTION_MATCHED_STATUS'\n")
+ ));
+ }
+ if (!this->liveliness_changed_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'LIVELINESS_CHANGED_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Received the expected ")
+ ACE_TEXT ("'LIVELINESS_CHANGED_STATUS' \n")
+ ));
+ }
+
+ //test thread switch for SUBSCRIPTION_MATCHED_STATUS
+ if (this->thread_id_listener_subscription_matched_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread ID for 'SUBSCRIPTION_MATCHED_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: "
+ "Thread switch for 'SUBSCRIPTION_MATCHED_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread switch for 'SUBSCRIPTION_MATCHED_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: 'SUBSCRIPTION_MATCHED_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: 'SUBSCRIPTION_MATCHED_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_subscription_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //test thread switch for LIVELINESS_CHANGED_STATUS
+ if (this->thread_id_listener_liveliness_changed_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread ID for 'LIVELINESS_CHANGED_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: "
+ "Thread switch for 'LIVELINESS_CHANGED_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread switch for 'LIVELINESS_CHANGED_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: 'LIVELINESS_CHANGED_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: 'LIVELINESS_CHANGED_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_USTest_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h
new file mode 100644
index 00000000000..8c3f05c5941
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Receiver/CSL_USTest_Receiver_exec.h
@@ -0,0 +1,167 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CSL_USTest_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_CSL_USTest_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // Pulser
+ //============================================================
+ class Pulser :
+ public ACE_Event_Handler
+ {
+ public:
+ Pulser (Receiver_exec_i &callback);
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i
+ : public virtual ::CSL_USTest::TestTopicConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ TestTopic_RawListener_exec_i (Atomic_ULong &,
+ Receiver_exec_i &callback);
+ virtual ~TestTopic_RawListener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+
+ virtual void
+ on_many_data (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & info);
+
+ private:
+ Atomic_ULong &received_;
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &);
+
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Atomic_Boolean &subscription_matched_received_;
+ Atomic_Boolean &liveliness_changed_received_;
+ Atomic_ThreadId &thread_id_subcription_matched_;
+ Atomic_ThreadId &thread_id_liveliness_changed_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ void stop (void);
+ void start (void);
+ void read_all (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CSL_USTest::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_read_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CSL_USTest::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::DataListenerControl_var lc_;
+ ::CSL_USTest::TestTopicConn::Reader_var reader_;
+
+ Pulser *pulser_;
+
+ Atomic_Boolean subscription_matched_received_;
+ Atomic_Boolean liveliness_changed_received_;
+ Atomic_ThreadId thread_id_listener_subscription_matched_;
+ Atomic_ThreadId thread_id_listener_liveliness_changed_;
+ Atomic_ULong received_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_USTest_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl
new file mode 100644
index 00000000000..9b12ba19106
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_CSL_USTEST_SENDER_IDL
+#define DDS_CSL_USTEST_SENDER_IDL
+
+#include "Connector/CSL_USTest_Connector.idl"
+
+module CSL_USTest
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Write test_topic_write;
+ provides CCM_DDS::ConnectorStatusListener test_topic_connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc
new file mode 100644
index 00000000000..676ed1d6a48
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_CSL_USTest_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_CSL_USTest_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_CSL_USTest_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CSL_USTest_Sender.idl
+ }
+}
+
+project(DDS_CSL_USTest_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_CSL_USTest_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CSL_USTest_SenderE.idl
+ }
+}
+
+project(DDS_CSL_USTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_CSL_USTest_Sender_lem_gen DDS_CSL_USTest_Sender_stub DDS_CSL_USTest_Base_stub
+ libs += DDS_CSL_USTest_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_SenderEC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_SenderEC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_CSL_USTest_Sender_idl_gen DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub
+ libs += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_SenderC.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_SenderC.inl
+ }
+}
+
+project(DDS_CSL_USTest_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_CSL_USTest_Sender_lem_stub DDS_CSL_USTest_Sender_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Connector_lem_stub DDS_CSL_USTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_CSL_USTest_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_CSL_USTest_Base_stub DDS_CSL_USTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_CSL_USTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_CSL_USTest_Connector_stub DDS_CSL_USTest_Connector_svnt DDS_CSL_USTest_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CSL_USTest_SenderS.cpp
+ CSL_USTest_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CSL_USTest_SenderS.h
+ CSL_USTest_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CSL_USTest_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp
new file mode 100644
index 00000000000..77b9d43c31e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.cpp
@@ -0,0 +1,485 @@
+// -*- C++ -*-
+// $Id$
+
+
+//Test for on_unexpected_status with status LIVELINESS_CHANGED_STATUS' and 'PUBLICATION_MATCHED_STATUS
+#include "CSL_USTest_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_CSL_USTest_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &publication_matched_received,
+ Atomic_Boolean &liveliness_lost_received,
+ Atomic_Boolean &reliable_dr_activity_changed_received,
+ Atomic_Boolean &reliable_writer_cache_changed_received,
+ Atomic_ThreadId &thread_id_publication_matched,
+ Atomic_ThreadId &thread_id_liveliness_lost,
+ Atomic_ThreadId &thread_id_reliable_dr_activity_changed,
+ Atomic_ThreadId &thread_id_reliable_writer_cache_changed)
+ : publication_matched_received_ (publication_matched_received),
+ liveliness_lost_received_ (liveliness_lost_received),
+ reliable_dr_activity_changed_received_ (reliable_dr_activity_changed_received),
+ reliable_writer_cache_changed_received_ (reliable_writer_cache_changed_received),
+ thread_id_publication_matched_ (thread_id_publication_matched),
+ thread_id_liveliness_lost_ (thread_id_liveliness_lost),
+ thread_id_reliable_dr_activity_changed_ (thread_id_reliable_dr_activity_changed),
+ thread_id_reliable_writer_cache_changed_ (thread_id_reliable_writer_cache_changed)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER\t\tConnectorStatusListener_exec_i::on_unexpected_status: "
+ "received <%C>\n",
+ CIAO::DDS4CCM::translate_statuskind (status_kind)));
+
+ if (! ::CORBA::is_nil(the_entity) && status_kind == DDS::LIVELINESS_LOST_STATUS)
+ {
+ this->liveliness_lost_received_ = true;
+ this->thread_id_liveliness_lost_ = ACE_Thread::self ();
+ }
+ else if (! ::CORBA::is_nil(the_entity) && status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ this->publication_matched_received_ = true;
+ this->thread_id_publication_matched_ = ACE_Thread::self ();
+ }
+ else if (! ::CORBA::is_nil(the_entity) && status_kind == DDS::RELIABLE_READER_ACTIVITY_CHANGED_STATUS)
+ {
+ this->reliable_dr_activity_changed_received_ = true;
+ this->thread_id_reliable_dr_activity_changed_ = ACE_Thread::self ();
+ }
+ else if (! ::CORBA::is_nil(the_entity) && status_kind == DDS::RELIABLE_WRITER_CACHE_CHANGED_STATUS)
+ {
+ this->reliable_writer_cache_changed_received_ = true;
+ this->thread_id_reliable_writer_cache_changed_ = ACE_Thread::self ();
+ }
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : publication_matched_received_ (false),
+ liveliness_lost_received_ (false),
+ reliable_dr_activity_changed_received_ (false),
+ reliable_writer_cache_changed_received_ (false),
+ thread_id_listener_publication_matched_ (0),
+ thread_id_listener_liveliness_lost_ (0),
+ thread_id_reliable_dr_activity_changed_ (0),
+ thread_id_reliable_writer_cache_changed_ (0)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_test_topic_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->publication_matched_received_,
+ this->liveliness_lost_received_,
+ this->reliable_dr_activity_changed_received_,
+ this->reliable_writer_cache_changed_received_,
+ this->thread_id_listener_publication_matched_,
+ this->thread_id_listener_liveliness_lost_,
+ this->thread_id_reliable_dr_activity_changed_,
+ this->thread_id_reliable_writer_cache_changed_);
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::tick ()
+ {
+ for (CSL_SRTest_Table::iterator i = this->_ktests_.begin ();
+ i != this->_ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->writer_))
+ {
+ this->writer_->write_one(i->second,::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Written sample: <%C> - <%d>\n",
+ i->first.c_str (),
+ i->second->x));
+ i->second->x++;
+ }
+ else ACE_ERROR ((LM_ERROR, "Unable to write sample: <%C> - <%d>\n",
+ i->first.c_str (),
+ i->second->x));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"),
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::add_instance_of_topic (const char * key, int x)
+ {
+ TestTopic *new_key = new TestTopic;
+ new_key->key = CORBA::string_dup(key);
+ new_key->x = x;
+ this->_ktests_[key] = new_key;
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::CSL_USTest::CCM_Sender_Context::_narrow (ctx);
+
+ if (::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_test_topic_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ //add 2 different instances of topic
+ this->add_instance_of_topic ("ONE", 1);
+ this->add_instance_of_topic ("TWO", 2);
+ // calculate the interval time
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (3, 0),
+ ACE_Time_Value (1, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (!this->publication_matched_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'PUBLICATION_MATCHED_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'PUBLICATION_MATCHED_STATUS'\n")
+ ));
+ }
+ if (!this->liveliness_lost_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'LIVELINESS_LOST_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'LIVELINESS_LOST_STATUS'\n")
+ ));
+ }
+ if (!this->reliable_dr_activity_changed_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'RELIABLE_READER_ACTIVITY_CHANGED_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'RELIABLE_READER_ACTIVITY_CHANGED_STATUS'\n")
+ ));
+ }
+ if (!this->reliable_writer_cache_changed_received_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: Didn't receive the expected ")
+ ACE_TEXT ("'RELIABLE_WRITER_CACHE_CHANGED_STATUS'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'RELIABLE_WRITER_CACHE_CHANGED_STATUS'\n")
+ ));
+ }
+
+ //test thread switch for PUBLICATION_MATCHED_STATUS
+ if (this->thread_id_listener_publication_matched_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for 'PUBLICATION_MATCHED_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for 'PUBLICATION_MATCHED_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for 'PUBLICATION_MATCHED_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: 'PUBLICATION_MATCHED_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: 'PUBLICATION_MATCHED_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_publication_matched_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //test thread switch for LIVELINESS_LOST_STATUS
+ if (this->thread_id_listener_liveliness_lost_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for 'LIVELINESS_LOST_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for 'LIVELINESS_LOST_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for 'LIVELINESS_LOST_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: 'LIVELINESS_LOST_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: 'LIVELINESS_LOST_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //test thread switch for RELIABLE_READER_ACTIVITY_CHANGED_STATUS
+ if (this->thread_id_reliable_dr_activity_changed_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for 'RELIABLE_READER_ACTIVITY_CHANGED_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_reliable_dr_activity_changed_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for 'RELIABLE_READER_ACTIVITY_CHANGED_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_dr_activity_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for 'RELIABLE_READER_ACTIVITY_CHANGED_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_dr_activity_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: 'RELIABLE_READER_ACTIVITY_CHANGED_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_dr_activity_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: 'RELIABLE_READER_ACTIVITY_CHANGED_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_dr_activity_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //test thread switch for RELIABLE_WRITER_CACHE_CHANGED_STATUS
+ if (this->thread_id_reliable_writer_cache_changed_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for 'RELIABLE_WRITER_CACHE_CHANGED_STATUS' not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_reliable_writer_cache_changed_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for 'RELIABLE_WRITER_CACHE_CHANGED_STATUS' seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_writer_cache_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for 'RELIABLE_WRITER_CACHE_CHANGED_STATUS' "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_writer_cache_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_liveliness_lost_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: 'RELIABLE_WRITER_CACHE_CHANGED_STATUS': "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_writer_cache_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: 'RELIABLE_WRITER_CACHE_CHANGED_STATUS': "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_reliable_writer_cache_changed_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_USTest_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h
new file mode 100644
index 00000000000..6cb1d5b2cc6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/Sender/CSL_USTest_Sender_exec.h
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CSL_USTest_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CSL_USTest_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &);
+
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Atomic_Boolean &publication_matched_received_;
+ Atomic_Boolean &liveliness_lost_received_;
+ Atomic_Boolean &reliable_dr_activity_changed_received_;
+ Atomic_Boolean &reliable_writer_cache_changed_received_;
+ Atomic_ThreadId &thread_id_publication_matched_;
+ Atomic_ThreadId &thread_id_liveliness_lost_;
+ Atomic_ThreadId &thread_id_reliable_dr_activity_changed_;
+ Atomic_ThreadId &thread_id_reliable_writer_cache_changed_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_test_topic_connector_status (void);
+
+ private:
+ ::CSL_USTest::CCM_Sender_Context_var context_;
+ ::CSL_USTest::TestTopicConn::Writer_var writer_;
+
+ Atomic_Boolean publication_matched_received_;
+ Atomic_Boolean liveliness_lost_received_;
+ Atomic_Boolean reliable_dr_activity_changed_received_;
+ Atomic_Boolean reliable_writer_cache_changed_received_;
+ Atomic_ThreadId thread_id_listener_publication_matched_;
+ Atomic_ThreadId thread_id_listener_liveliness_lost_;
+ Atomic_ThreadId thread_id_reliable_dr_activity_changed_;
+ Atomic_ThreadId thread_id_reliable_writer_cache_changed_;
+
+ pulse_Generator * ticker_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, TestTopic_var> CSL_SRTest_Table;
+ CSL_SRTest_Table _ktests_;
+
+ void add_instance_of_topic (const char *, int x);
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CSL_USTest_Sender_Impl (void);
+
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp
new file mode 100644
index 00000000000..83306d7eb0c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/Plan.cdp
@@ -0,0 +1,431 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CSL_USTest_Depl_1</label>
+ <UUID>CSL_USTest_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CSL_USTest_ConnectorComponentImplementation">
+ <name>CSL_USTest_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CSL_USTest_Connector_ExecArtifact" />
+ <artifact xmi:idref="CSL_USTest_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_CSL_USTest_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_CSL_USTest_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_USTest_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_USTest_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CSL_USTest_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="CSL_USTest_ConnectorComponentInstance">
+ <name>CSL_USTest_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_USTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_Library#CSL_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CSL_USTest_ConnectorComponentInstance2">
+ <name>CSL_USTest_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CSL_USTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CSL_Library#CSL_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_topic_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_read_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_read_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CSL_USTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CSL_USTest_Connector_ExecArtifact">
+ <name>CSL_USTest_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_USTest_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CSL_USTest_Connector_SvntArtifact">
+ <name>CSL_USTest_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_USTest_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CSL_USTest_Connector_StubArtifact">
+ <name>CSL_USTest_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_CSL_USTest_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..72769833b96
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="CSL_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="CSL_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>200</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>1</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ <liveliness>
+ <kind>DDS_MANUAL_BY_TOPIC_LIVELINESS_QOS</kind>
+ <lease_duration>
+ <sec>1</sec>
+ <nanosec>0</nanosec>
+ </lease_duration>
+ </liveliness>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl
new file mode 100755
index 00000000000..66cc403a1fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CSLUnexpStat/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.idl
new file mode 100644
index 00000000000..32be383c4c2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file CoherentUpdate_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_UPDATE_TEST_BASE_IDL
+#define COHERENT_UPDATE_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CoherentUpdate_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "CoherentUpdateTest"
+#pragma DCPS_DATA_KEY "CoherentUpdateTest symbol"
+
+struct CoherentUpdateTest {
+ string symbol; //@key
+ long iteration;
+};
+
+typedef sequence<CoherentUpdateTest> CoherentUpdateTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.mpc
new file mode 100755
index 00000000000..490646069a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/CoherentUpdate_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (CoherentUpdate_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = CoherentUpdate_Test_Base_stub
+ dynamicflags += COHERENT_UPDATE_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=COHERENT_UPDATE_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CoherentUpdate_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CoherentUpdate_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=COHERENT_UPDATE_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CoherentUpdate_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.idl
new file mode 100644
index 00000000000..ed1e8a6ea10
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file Reader_Starter.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_WRITE_STARTER_IDL
+#define COHERENT_WRITE_STARTER_IDL
+
+#pragma ciao lem "Base/Reader_StarterE.idl"
+
+interface CoherentUpdateStarter
+{
+ void set_reader_properties (in unsigned short nr_iterations);
+ void start_read (in unsigned short run);
+};
+
+interface CoherentUpdateRestarter
+{
+ void restart_update ();
+};
+
+#endif /* COHERENT_WRITE_STARTER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.mpc
new file mode 100755
index 00000000000..ba32ea8ba26
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Base/Reader_Starter.mpc
@@ -0,0 +1,114 @@
+// $Id$
+
+project(DDS_Coh_Update_ReaderStarter_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_stub_export.h \
+ -Wb,skel_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,skel_export_include=Reader_Starter_svnt_export.h \
+ -Wb,svnt_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,svnt_export_include=Reader_Starter_svnt_export.h \
+ -Wb,exec_export_macro=READER_STARTER_EXEC_Export \
+ -Wb,exec_export_include=Reader_Starter_exec_export.h -I..
+
+ IDL_Files {
+ Reader_Starter.idl
+ }
+}
+
+project(DDS_Coh_Update_ReaderStarter_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Coh_Update_ReaderStarter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_LEM_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Reader_StarterE.idl
+ }
+}
+
+project(DDS_Coh_Update_ReaderStarter_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Coh_Update_ReaderStarter_lem_gen DDS_Coh_Update_ReaderStarter_stub
+ libs += Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_lem_stub
+ dynamicflags = READER_STARTER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterEC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterEC.h
+ Reader_Starter_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterEC.inl
+ }
+}
+
+project(DDS_Coh_Update_ReaderStarter_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Coh_Update_ReaderStarter_idl_gen
+ libs +=
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_stub
+ dynamicflags = READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterC.h
+ Reader_Starter_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterC.inl
+ }
+}
+
+
+project(DDS_Coh_Update_ReaderStarter_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Coh_Update_ReaderStarter_lem_stub DDS_Coh_Update_ReaderStarter_stub\
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Reader_Starter_svnt
+ libs += Reader_Starter_stub Reader_Starter_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_STARTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterS.cpp
+ Reader_Starter_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_StarterS.h
+ Reader_Starter_svnt.h
+ Reader_Starter_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.idl
new file mode 100644
index 00000000000..3d446b66a3d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file CoherentUpdate_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_UPDATE_TEST_CONNECTOR_IDL_
+#define COHERENT_UPDATE_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CoherentUpdate_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CoherentUpdate_Test_ConnectorE.idl"
+
+module CoherentUpdate_Test
+{
+ module ::CCM_DDS::Typed < ::CoherentUpdateTest, ::CoherentUpdateTestSeq> CoherentUpdateTestConn;
+ connector CoherentUpdate_Test_Connector : CoherentUpdateTestConn::DDS_State
+ {
+ };
+};
+
+#endif /* CoherentUpdate_TestCONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.mpc
new file mode 100755
index 00000000000..cdb14074760
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Connector/CoherentUpdate_Test_Connector.mpc
@@ -0,0 +1,148 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p CoherentUpdate_TestBase -l .. -o ../lib -u DDS CoherentUpdate_Test_Connector"
+
+project(CoherentUpdate_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COHERENT_UPDATE_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CoherentUpdate_Connector_stub_export.h \
+ -Wb,skel_export_macro=COHERENT_UPDATE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CoherentUpdate_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=COHERENT_UPDATE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CoherentUpdate_Connector_svnt_export.h \
+ -Wb,conn_export_macro=COHERENT_UPDATE_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CoherentUpdate_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CoherentUpdate_Test_Connector.idl
+ }
+}
+
+project(CoherentUpdate_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += CoherentUpdate_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COHERENT_UPDATE_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CoherentUpdate_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CoherentUpdate_Test_ConnectorE.idl
+ }
+}
+
+project(CoherentUpdate_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentUpdate_Connector_lem_gen CoherentUpdate_Connector_stub CoherentUpdate_Test_Base_stub DDS4CCM_lem_stub
+ libs += CoherentUpdate_Test_Base_stub CoherentUpdate_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = CoherentUpdate_Connector_lem_stub
+ dynamicflags = COHERENT_UPDATE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ConnectorEC.h
+ CoherentUpdate_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ConnectorEC.inl
+ }
+}
+
+project(CoherentUpdate_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentUpdate_Connector_idl_gen CoherentUpdate_Test_Base_stub
+ libs += CoherentUpdate_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = CoherentUpdate_Connector_stub
+ dynamicflags = COHERENT_UPDATE_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ConnectorC.h
+ CoherentUpdate_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ConnectorC.inl
+ }
+}
+
+project(CoherentUpdate_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += CoherentUpdate_Connector_lem_stub CoherentUpdate_Connector_stub \
+ DDS4CCM_lem_stub CoherentUpdate_Test_Base_stub
+ sharedname = CoherentUpdate_Connector_exec
+ libs += CoherentUpdate_Connector_stub CoherentUpdate_Connector_lem_stub \
+ CoherentUpdate_Test_Base_stub DDS4CCM_lem_stub CoherentUpdate_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_UPDATE_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_Connector_conn.h
+ CoherentUpdate_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentUpdate_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += CoherentUpdate_Connector_lem_stub CoherentUpdate_Connector_exec \
+ CoherentUpdate_Connector_stub DDS4CCM_lem_stub
+ sharedname = CoherentUpdate_Connector_svnt
+ libs += CoherentUpdate_Connector_stub \
+ CoherentUpdate_Connector_lem_stub \
+ CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_UPDATE_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ConnectorS.cpp
+ CoherentUpdate_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ConnectorS.h
+ CoherentUpdate_Test_Connector_svnt.h
+ CoherentUpdate_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.idl
new file mode 100644
index 00000000000..cd877185448
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CoherentUpdate_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module CoherentUpdate_Test
+{
+ component Receiver
+ {
+ port CoherentUpdateTestConn::DDS_Read info_out;
+
+ provides CoherentUpdateStarter reader_start;
+ uses CoherentUpdateRestarter updater_restart;
+
+ attribute unsigned short nr_runs;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.mpc
new file mode 100755
index 00000000000..864d8a6e6e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver.mpc
@@ -0,0 +1,157 @@
+// $Id$
+
+project(CoherentUpdate_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += CoherentUpdate_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CoherentUpdate_Test_Receiver.idl
+ }
+}
+
+project(CoherentUpdate_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += CoherentUpdate_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CoherentUpdate_Test_ReceiverE.idl
+ }
+}
+
+project(CoherentUpdate_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentUpdate_Test_Receiver_lem_gen CoherentUpdate_Test_Receiver_stub \
+ CoherentUpdate_Connector_stub CoherentUpdate_Test_Base_stub \
+ DDS_Coh_Update_ReaderStarter_stub
+ libs += Receiver_stub CoherentUpdate_Connector_stub \
+ CoherentUpdate_Test_Base_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ReceiverEC.inl
+ }
+}
+
+project(CoherentUpdate_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentUpdate_Test_Receiver_idl_gen CoherentUpdate_Connector_stub \
+ CoherentUpdate_Test_Base_stub CoherentUpdate_Connector_lem_gen \
+ DDS_Coh_Update_ReaderStarter_stub DDS_Coh_Update_ReaderStarter_lem_stub
+ libs += CoherentUpdate_Connector_stub CoherentUpdate_Test_Base_stub \
+ Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ReceiverC.inl
+ }
+}
+
+project(CoherentUpdate_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += CoherentUpdate_Test_Receiver_lem_stub CoherentUpdate_Test_Receiver_stub \
+ CoherentUpdate_Test_Base_stub CoherentUpdate_Connector_stub \
+ CoherentUpdate_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_Coh_Update_ReaderStarter_lem_stub DDS_Coh_Update_ReaderStarter_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_stub CoherentUpdate_Connector_lem_stub \
+ DDS4CCM_lem_stub Reader_Starter_lem_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentUpdate_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += CoherentUpdate_Test_Receiver_lem_stub CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_stub CoherentUpdate_Connector_svnt \
+ CoherentUpdate_Test_Receiver_exec CoherentUpdate_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Coh_Update_ReaderStarter_stub \
+ DDS_Coh_Update_ReaderStarter_svnt DDS_Coh_Update_ReaderStarter_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_stub CoherentUpdate_Connector_svnt \
+ Receiver_exec CoherentUpdate_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel Reader_Starter_stub Reader_Starter_svnt \
+ Reader_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_ReceiverS.cpp
+ CoherentUpdate_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_ReceiverS.h
+ CoherentUpdate_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..15a21ed84ff
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.cpp
@@ -0,0 +1,305 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "CoherentUpdate_Test_Receiver_exec.h"
+
+#include "ace/OS_NS_unistd.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_CoherentUpdate_Test_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback,
+ int run)
+ : callback_ (callback),
+ run_ (run)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Checking if last sample "
+ "is available in DDS...\n"));
+ if (this->callback_.check_last ())
+ this->callback_.run (this->run_);
+ return 0;
+ }
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ Starter_exec_i::Starter_exec_i (Receiver_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Starter_exec_i::~Starter_exec_i (void)
+ {
+ }
+
+ void
+ Starter_exec_i::set_reader_properties (CORBA::UShort nr_iterations)
+ {
+ this->callback_.iterations (nr_iterations);
+ }
+
+ void
+ Starter_exec_i::start_read (CORBA::UShort run)
+ {
+ this->callback_.start_read (run);
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (10),
+ run_ (0),
+ nr_runs_ (5),
+ last_iter_ (0),
+ ticker_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+
+ bool
+ Receiver_exec_i::check_last ()
+ {
+ try
+ {
+ CoherentUpdateTest coherentwrite_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ coherentwrite_info.symbol = CORBA::string_dup ("KEY_1");
+ this->reader_->read_one_last (
+ coherentwrite_info,
+ readinfo,
+ ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::check_last - "
+ "last iteration <%d> - <%d>\n",
+ coherentwrite_info.iteration,
+ (this->run_ + 1) * this->iterations_ - 1));
+ return coherentwrite_info.iteration >= (this->run_ + 1) * this->iterations_ - 1;
+ }
+ catch (...)
+ {
+ // no need to catch. An error is given
+ // when this example didn't run at all.
+ ACE_DEBUG ((LM_INFO, "CRASH !\n"));
+ }
+ return false;
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ try
+ {
+ CoherentUpdateTestSeq *coherentwrite_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_all (
+ coherentwrite_info_seq,
+ readinfo_seq);
+
+ for (CORBA::ULong it = 0; it < coherentwrite_info_seq->length (); ++it)
+ {
+ if ((*coherentwrite_info_seq)[it].iteration > this->last_iter_)
+ {
+ if ((*coherentwrite_info_seq)[it].iteration == ++this->last_iter_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK: "));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "));
+ }
+ ACE_DEBUG ((LM_DEBUG, "expected: <%u> - "
+ "received <%d>\n",
+ this->last_iter_,
+ (*coherentwrite_info_seq)[it].iteration));
+ }
+ }
+ if (this->run_ < this->nr_runs () + 1)
+ {
+ this->restarter_->restart_update ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Finished: wait for shutdown\n"));
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ALL: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ALL: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::start_read (CORBA::UShort run)
+ {
+ this->ticker_ = new read_action_Generator (*this, run);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(1, 0),
+ ACE_Time_Value(1, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::run (CORBA::UShort run)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::run - "
+ "Starting run number <%d>\n",
+ run));
+ this->run_ = run;
+ read_all ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::nr_runs (void)
+ {
+ return this->nr_runs_;
+ }
+
+ void
+ Receiver_exec_i::nr_runs (::CORBA::UShort nr_runs)
+ {
+ this->nr_runs_ = nr_runs;
+ }
+
+ // Port operations.
+ ::CoherentUpdate_Test::CoherentUpdateTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return ::CoherentUpdate_Test::CoherentUpdateTestConn::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_CoherentUpdateStarter_ptr
+ Receiver_exec_i::get_reader_start ()
+ {
+ return new Starter_exec_i (*this);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CoherentUpdate_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ this->restarter_ = this->context_->get_connection_updater_restart ();
+}
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ if (this->run_ == 1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("Test did not run")
+ ACE_TEXT ("events.\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Finished coherent update test.\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentUpdate_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.h
new file mode 100644
index 00000000000..c41fe38f9ce
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Receiver/CoherentUpdate_Test_Receiver_exec.h
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CoherentUpdate_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CoherentUpdate_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback,
+ int run);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &callback_;
+ int run_;
+ };
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ class Starter_exec_i
+ : public virtual ::CCM_CoherentUpdateStarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Starter_exec_i (Receiver_exec_i & callback);
+ virtual ~Starter_exec_i (void);
+
+ virtual void set_reader_properties (CORBA::UShort nr_iterations);
+ virtual void start_read (CORBA::UShort run);
+
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Component attributes.
+
+ // Port operations.
+ virtual ::CoherentUpdate_Test::CoherentUpdateTestConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_CoherentUpdateStarter_ptr
+ get_reader_start ();
+
+ bool check_last ();
+ void start_read (CORBA::UShort run);
+ void run (CORBA::UShort run);
+
+ ::CORBA::UShort iterations (void);
+ void iterations (::CORBA::UShort iterations);
+
+ ::CORBA::UShort nr_runs (void);
+ void nr_runs (::CORBA::UShort nr_runs);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CoherentUpdate_Test::CCM_Receiver_Context_var context_;
+ ::CoherentUpdate_Test::CoherentUpdateTestConn::Reader_var reader_;
+ CoherentUpdateRestarter_var restarter_;
+ CORBA::UShort iterations_;
+ CORBA::UShort run_;
+ CORBA::UShort nr_runs_;
+ CORBA::Long last_iter_;
+
+ read_action_Generator *ticker_;
+
+ void read_all (void);
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentUpdate_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.idl
new file mode 100644
index 00000000000..8874e90249b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_COHERENT_UPDATE_TEST_SENDER_IDL
+#define DDS_COHERENT_UPDATE_TEST_SENDER_IDL
+
+#include "Connector/CoherentUpdate_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module CoherentUpdate_Test
+{
+ component Sender
+ {
+ port CoherentUpdateTestConn::DDS_Update info_update;
+
+ uses CoherentUpdateStarter start_reader;
+ provides CoherentUpdateRestarter restart_updater;
+
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.mpc
new file mode 100755
index 00000000000..5e0c28c040a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender.mpc
@@ -0,0 +1,155 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p CoherentUpdate_TestBase -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(CoherentUpdate_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += CoherentUpdate_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CoherentUpdate_Test_Sender.idl
+ }
+}
+
+project(CoherentUpdate_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += CoherentUpdate_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CoherentUpdate_Test_SenderE.idl
+ }
+}
+
+project(CoherentUpdate_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentUpdate_Test_Sender_lem_gen CoherentUpdate_Test_Sender_stub \
+ CoherentUpdate_Test_Base_stub DDS_Coh_Update_ReaderStarter_stub
+ libs += CoherentUpdate_Test_Base_stub Sender_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_SenderEC.inl
+ }
+}
+
+project(CoherentUpdate_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentUpdate_Test_Sender_idl_gen CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_stub DDS_Coh_Update_ReaderStarter_stub \
+ DDS_Coh_Update_ReaderStarter_lem_stub
+ libs += CoherentUpdate_Test_Base_stub CoherentUpdate_Connector_stub \
+ Reader_Starter_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_SenderC.inl
+ }
+}
+
+project(CoherentUpdate_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += CoherentUpdate_Test_Sender_lem_stub CoherentUpdate_Test_Sender_stub \
+ CoherentUpdate_Connector_lem_stub CoherentUpdate_Connector_stub \
+ DDS4CCM_lem_stub DDS_Coh_Update_ReaderStarter_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub CoherentUpdate_Test_Base_stub \
+ CoherentUpdate_Connector_lem_stub CoherentUpdate_Connector_stub \
+ Reader_Starter_stub DDS4CCM_lem_stub Reader_Starter_lem_stub \
+ Reader_Starter_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentUpdate_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += CoherentUpdate_Test_Base_stub CoherentUpdate_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel CoherentUpdate_Connector_stub \
+ CoherentUpdate_Connector_svnt CoherentUpdate_Connector_lem_stub \
+ DDS_Coh_Update_ReaderStarter_stub DDS_Coh_Update_ReaderStarter_svnt \
+ DDS_Coh_Update_ReaderStarter_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub CoherentUpdate_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel CoherentUpdate_Connector_stub CoherentUpdate_Connector_svnt \
+ CoherentUpdate_Connector_lem_stub Reader_Starter_stub \
+ Reader_Starter_svnt Reader_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentUpdate_Test_SenderS.cpp
+ CoherentUpdate_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentUpdate_Test_SenderS.h
+ CoherentUpdate_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentUpdate_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..7b46b4ece6a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.cpp
@@ -0,0 +1,188 @@
+// -*- C++ -*-
+// $Id$
+
+#include "CoherentUpdate_Test_Sender_exec.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+#define SAMPLE_KEY_NAME "KEY_1"
+
+namespace CIAO_CoherentUpdate_Test_Sender_Impl
+{
+ //============================================================
+ // WriteHandler
+ //============================================================
+ WriteHandler::WriteHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.start ();
+ return 0;
+ }
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ Restarter_exec_i::Restarter_exec_i (Sender_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Restarter_exec_i::~Restarter_exec_i (void)
+ {
+ }
+
+ void
+ Restarter_exec_i::restart_update ()
+ {
+ this->callback_.restart ();
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (3),
+ run_ (1),
+ total_iter (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::restart (void)
+ {
+ ++this->run_;
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ if (! ::CORBA::is_nil (this->starter_))
+ {
+ this->starter_->set_reader_properties (this->iterations_);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to start the reader\n")));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Start run <%d> with <%u> iterations\n",
+ this->run_,
+ this->iterations ()));
+
+ CoherentUpdateTestSeq update_many_seq;
+ update_many_seq.length (this->iterations_);
+ for (int i = 1; i < this->iterations_ + 1; ++i)
+ {
+ CoherentUpdateTest new_key;
+ new_key.symbol = CORBA::string_dup(SAMPLE_KEY_NAME);
+ new_key.iteration = ++total_iter;
+ update_many_seq[i-1] = new_key;
+ }
+ this->updater_->update_many (update_many_seq);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written <%u> keys uptil now\n"),
+ total_iter));
+ ACE_OS::sleep (2);
+ this->starter_->start_read (this->run_);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CCM_CoherentUpdateRestarter_ptr
+ Sender_exec_i::get_restart_updater (void)
+ {
+ return new Restarter_exec_i (*this);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CoherentUpdate_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->updater_ = this->context_->get_connection_info_update_data ();
+ this->updater_->is_coherent_write (true);
+
+ //first create an instance for consecutive updating.
+ CoherentUpdateTest new_key;
+ new_key.symbol = CORBA::string_dup(SAMPLE_KEY_NAME);
+ new_key.iteration = 0;
+ this->updater_->create_one (new_key);
+
+ this->starter_ = this->context_->get_connection_start_reader ();
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentUpdate_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.h
new file mode 100644
index 00000000000..e942c781a79
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/Sender/CoherentUpdate_Test_Sender_exec.h
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CoherentUpdate_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_CoherentUpdate_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteHandler
+ //============================================================
+ class WriteHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ class Restarter_exec_i
+ : public virtual ::CCM_CoherentUpdateRestarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Restarter_exec_i (Sender_exec_i & callback);
+ virtual ~Restarter_exec_i (void);
+
+ virtual void restart_update ();
+
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CCM_CoherentUpdateRestarter_ptr
+ get_restart_updater (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void restart (void);
+
+ private:
+ ::CoherentUpdate_Test::CCM_Sender_Context_var context_;
+ ::CoherentUpdate_Test::CoherentUpdateTestConn::Updater_var updater_;
+ CoherentUpdateStarter_var starter_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort run_;
+ CORBA::ULong total_iter;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentUpdate_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/Plan.cdp
new file mode 100644
index 00000000000..76c0cd7dde1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/Plan.cdp
@@ -0,0 +1,404 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CoherentUpdate_TestDepl_1</label>
+ <UUID>CoherentUpdate_TestDepl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CoherentUpdate_Test_ConnectorComponentImplementation">
+ <name>CoherentUpdate_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CoherentUpdate_Connector_ExecArtifact" />
+ <artifact xmi:idref="CoherentUpdate_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_CoherentUpdate_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_CoherentUpdate_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdate_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdate_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentUpdate_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>nr_runs</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CoherentUpdate_Test_ConnectorComponentInstance">
+ <name>CoherentUpdate_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CoherentUpdate_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdater_Library#CoherentUpdater_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdate_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CoherentUpdate_Test_ConnectorComponentInstance2">
+ <name>CoherentUpdate_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CoherentUpdate_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdater_Library#CoherentUpdater_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentUpdate_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>4</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CoherentUpdate_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_out_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_update_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="CoherentUpdate_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CoherentUpdate_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>reader_starter</name>
+ <internalEndpoint>
+ <portName>start_reader</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>reader_start</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>restart_updater</name>
+ <internalEndpoint>
+ <portName>updater_restart</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>restart_updater</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CoherentUpdate_Connector_ExecArtifact">
+ <name>CoherentUpdate_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>CoherentUpdate_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CoherentUpdate_Connector_SvntArtifact">
+ <name>CoherentUpdate_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>CoherentUpdate_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CoherentUpdate_Connector_StubArtifact">
+ <name>CoherentUpdate_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>CoherentUpdate_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..a19958a9ef2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="CoherentUpdater_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="CoherentUpdater_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/run_test.pl
new file mode 100755
index 00000000000..4d9ba95b5f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentUpdater/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -q");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.idl
new file mode 100644
index 00000000000..9f4c18ebbd2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file CoherentWrite_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_WRITE_TEST_BASE_IDL
+#define COHERENT_WRITE_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/CoherentWrite_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "CoherentWriteTest"
+#pragma DCPS_DATA_KEY "CoherentWriteTest symbol"
+
+struct CoherentWriteTest {
+ string symbol; //@key
+ long iteration;
+};
+
+typedef sequence<CoherentWriteTest> CoherentWriteTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.mpc
new file mode 100755
index 00000000000..03aaeccd529
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/CoherentWrite_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (CoherentWrite_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = CoherentWrite_Test_Base_stub
+ dynamicflags += COHERENT_WRITE_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=COHERENT_WRITE_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=CoherentWrite_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ CoherentWrite_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=COHERENT_WRITE_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ CoherentWrite_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.idl
new file mode 100644
index 00000000000..46dd49922d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file Reader_Starter.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_WRITE_STARTER_IDL
+#define COHERENT_WRITE_STARTER_IDL
+
+#pragma ciao lem "Base/Reader_StarterE.idl"
+
+interface CoherentWriteStarter
+{
+ void set_reader_properties (in unsigned short nr_iterations);
+ void start_read (in unsigned short run);
+};
+
+interface CoherentWriteRestarter
+{
+ void restart_write ();
+};
+
+#endif /* COHERENT_WRITE_STARTER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.mpc
new file mode 100755
index 00000000000..325e84a8554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Base/Reader_Starter.mpc
@@ -0,0 +1,114 @@
+// $Id$
+
+project(DDS_Coherent_Reader_Starter_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_stub_export.h \
+ -Wb,skel_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,skel_export_include=Reader_Starter_svnt_export.h \
+ -Wb,svnt_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,svnt_export_include=Reader_Starter_svnt_export.h \
+ -Wb,exec_export_macro=READER_STARTER_EXEC_Export \
+ -Wb,exec_export_include=Reader_Starter_exec_export.h -I..
+
+ IDL_Files {
+ Reader_Starter.idl
+ }
+}
+
+project(DDS_Coherent_Reader_Starter_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Coherent_Reader_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_LEM_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Reader_StarterE.idl
+ }
+}
+
+project(DDS_Coherent_Reader_Starter_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Coherent_Reader_Starter_lem_gen DDS_Coherent_Reader_Starter_stub
+ libs += Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_lem_stub
+ dynamicflags = READER_STARTER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterEC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterEC.h
+ Reader_Starter_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterEC.inl
+ }
+}
+
+project(DDS_Coherent_Reader_Starter_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Coherent_Reader_Starter_idl_gen
+ libs +=
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_stub
+ dynamicflags = READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterC.h
+ Reader_Starter_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterC.inl
+ }
+}
+
+
+project(DDS_Coherent_Reader_Starter_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Coherent_Reader_Starter_lem_stub DDS_Coherent_Reader_Starter_stub\
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Reader_Starter_svnt
+ libs += Reader_Starter_stub Reader_Starter_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_STARTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterS.cpp
+ Reader_Starter_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_StarterS.h
+ Reader_Starter_svnt.h
+ Reader_Starter_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.idl
new file mode 100644
index 00000000000..d77da8dfe86
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file CoherentWrite_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_WRITE_TEST_CONNECTOR_IDL_
+#define COHERENT_WRITE_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/CoherentWrite_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/CoherentWrite_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::CoherentWriteTest, ::CoherentWriteTestSeq> CoherentWriteTest;
+};
+
+module CoherentWrite_Test
+{
+ connector CoherentWrite_Test_Connector : ::CCM_DDS::CoherentWriteTest::DDS_Event
+ {
+ };
+};
+
+#endif /* CoherentWrite_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.mpc
new file mode 100755
index 00000000000..e1f0128a57d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Connector/CoherentWrite_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p CoherentWrite_Test_Base -l .. -o ../lib -u DDS CoherentWrite_Test_Connector"
+
+project(CoherentWrite_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COHERENT_WRITE_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=CoherentWrite_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=COHERENT_WRITE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=CoherentWrite_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=COHERENT_WRITE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=CoherentWrite_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=COHERENT_WRITE_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=CoherentWrite_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ CoherentWrite_Test_Connector.idl
+ }
+}
+
+project(CoherentWrite_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += CoherentWrite_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COHERENT_WRITE_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=CoherentWrite_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ CoherentWrite_Test_ConnectorE.idl
+ }
+}
+
+project(CoherentWrite_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentWrite_Test_Connector_lem_gen CoherentWrite_Test_Connector_stub CoherentWrite_Test_Base_stub DDS4CCM_lem_stub
+ libs += CoherentWrite_Test_Base_stub CoherentWrite_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = CoherentWrite_Test_Connector_lem_stub
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ConnectorEC.h
+ CoherentWrite_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ConnectorEC.inl
+ }
+}
+
+project(CoherentWrite_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentWrite_Test_Connector_idl_gen CoherentWrite_Test_Base_stub
+ libs += CoherentWrite_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = CoherentWrite_Test_Connector_stub
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ConnectorC.h
+ CoherentWrite_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ConnectorC.inl
+ }
+}
+
+project(CoherentWrite_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += CoherentWrite_Test_Connector_lem_stub CoherentWrite_Test_Connector_stub DDS4CCM_lem_stub CoherentWrite_Test_Base_stub
+ sharedname = CoherentWrite_Test_Connector_exec
+ libs += CoherentWrite_Test_Connector_stub CoherentWrite_Test_Connector_lem_stub CoherentWrite_Test_Base_stub DDS4CCM_lem_stub CoherentWrite_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_Connector_conn.h
+ CoherentWrite_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentWrite_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += CoherentWrite_Test_Connector_lem_stub CoherentWrite_Test_Connector_exec CoherentWrite_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = CoherentWrite_Test_Connector_svnt
+ libs += CoherentWrite_Test_Connector_stub \
+ CoherentWrite_Test_Connector_lem_stub \
+ CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ConnectorS.cpp
+ CoherentWrite_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ConnectorS.h
+ CoherentWrite_Test_Connector_svnt.h
+ CoherentWrite_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.idl
new file mode 100644
index 00000000000..9d464e71125
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/CoherentWrite_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module CoherentWrite_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::CoherentWriteTest::DDS_Read info_out;
+
+ provides CoherentWriteStarter reader_start;
+ uses CoherentWriteRestarter writer_restart;
+
+ attribute unsigned short nr_runs;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.mpc
new file mode 100755
index 00000000000..f4b55360304
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver.mpc
@@ -0,0 +1,157 @@
+// $Id$
+
+project(CoherentWrite_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += CoherentWrite_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ CoherentWrite_Test_Receiver.idl
+ }
+}
+
+project(CoherentWrite_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += CoherentWrite_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ CoherentWrite_Test_ReceiverE.idl
+ }
+}
+
+project(CoherentWrite_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentWrite_Test_Receiver_lem_gen CoherentWrite_Test_Receiver_stub \
+ CoherentWrite_Test_Connector_stub CoherentWrite_Test_Base_stub \
+ DDS_Coherent_Reader_Starter_stub
+ libs += Receiver_stub CoherentWrite_Test_Connector_stub \
+ CoherentWrite_Test_Base_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ReceiverEC.inl
+ }
+}
+
+project(CoherentWrite_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentWrite_Test_Receiver_idl_gen CoherentWrite_Test_Connector_stub \
+ CoherentWrite_Test_Base_stub CoherentWrite_Test_Connector_lem_gen \
+ DDS_Coherent_Reader_Starter_stub DDS_Coherent_Reader_Starter_lem_stub
+ libs += CoherentWrite_Test_Connector_stub CoherentWrite_Test_Base_stub \
+ Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ReceiverC.inl
+ }
+}
+
+project(CoherentWrite_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += CoherentWrite_Test_Receiver_lem_stub CoherentWrite_Test_Receiver_stub \
+ CoherentWrite_Test_Base_stub CoherentWrite_Test_Connector_stub \
+ CoherentWrite_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_Coherent_Reader_Starter_lem_stub DDS_Coherent_Reader_Starter_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_stub CoherentWrite_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub Reader_Starter_lem_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentWrite_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += CoherentWrite_Test_Receiver_lem_stub CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_stub CoherentWrite_Test_Connector_svnt \
+ CoherentWrite_Test_Receiver_exec CoherentWrite_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Coherent_Reader_Starter_stub \
+ DDS_Coherent_Reader_Starter_svnt DDS_Coherent_Reader_Starter_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_stub CoherentWrite_Test_Connector_svnt \
+ Receiver_exec CoherentWrite_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel Reader_Starter_stub Reader_Starter_svnt \
+ Reader_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_ReceiverS.cpp
+ CoherentWrite_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_ReceiverS.h
+ CoherentWrite_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..4e7ad5f5f79
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.cpp
@@ -0,0 +1,305 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "CoherentWrite_Test_Receiver_exec.h"
+
+#include "ace/OS_NS_unistd.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_CoherentWrite_Test_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback,
+ int run)
+ : callback_ (callback),
+ run_ (run)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Checking if last sample "
+ "is available in DDS...\n"));
+ if (this->callback_.check_last ())
+ this->callback_.run (this->run_);
+ return 0;
+ }
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ Starter_exec_i::Starter_exec_i (Receiver_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Starter_exec_i::~Starter_exec_i (void)
+ {
+ }
+
+ void
+ Starter_exec_i::set_reader_properties (CORBA::UShort nr_iterations)
+ {
+ this->callback_.iterations (nr_iterations);
+ }
+
+ void
+ Starter_exec_i::start_read (CORBA::UShort run)
+ {
+ this->callback_.start_read (run);
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (10),
+ run_ (0),
+ nr_runs_ (5),
+ last_iter_ (0),
+ ticker_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+
+ bool
+ Receiver_exec_i::check_last ()
+ {
+ try
+ {
+ CoherentWriteTest coherentwrite_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ coherentwrite_info.symbol = CORBA::string_dup ("KEY_1");
+ this->reader_->read_one_last (
+ coherentwrite_info,
+ readinfo,
+ ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::check_last - "
+ "last iteration <%d> - <%d>\n",
+ coherentwrite_info.iteration,
+ (this->run_ + 1) * this->iterations_ - 1));
+ return coherentwrite_info.iteration >= (this->run_ + 1) * this->iterations_ - 1;
+ }
+ catch (...)
+ {
+ // no need to catch. An error is given
+ // when this example didn't run at all.
+ ACE_DEBUG ((LM_INFO, "CRASH !\n"));
+ }
+ return false;
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ try
+ {
+ CoherentWriteTestSeq *coherentwrite_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_all (
+ coherentwrite_info_seq,
+ readinfo_seq);
+
+ for (CORBA::ULong it = 0; it < coherentwrite_info_seq->length (); ++it)
+ {
+ if ((*coherentwrite_info_seq)[it].iteration > this->last_iter_)
+ {
+ if ((*coherentwrite_info_seq)[it].iteration == ++this->last_iter_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK: "));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "));
+ }
+ ACE_DEBUG ((LM_DEBUG, "expected: <%u> - "
+ "received <%d>\n",
+ this->last_iter_,
+ (*coherentwrite_info_seq)[it].iteration));
+ }
+ }
+ if (this->run_ < this->nr_runs () + 1)
+ {
+ this->restarter_->restart_write ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Finished: wait for shutdown\n"));
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ALL: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ALL: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::start_read (CORBA::UShort run)
+ {
+ this->ticker_ = new read_action_Generator (*this, run);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(1, 0),
+ ACE_Time_Value(1, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::run (CORBA::UShort run)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::run - "
+ "Starting run number <%d>\n",
+ run));
+ this->run_ = run;
+ read_all ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::nr_runs (void)
+ {
+ return this->nr_runs_;
+ }
+
+ void
+ Receiver_exec_i::nr_runs (::CORBA::UShort nr_runs)
+ {
+ this->nr_runs_ = nr_runs;
+ }
+
+ // Port operations.
+ ::CCM_DDS::CoherentWriteTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return ::CCM_DDS::CoherentWriteTest::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_CoherentWriteStarter_ptr
+ Receiver_exec_i::get_reader_start ()
+ {
+ return new Starter_exec_i (*this);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CoherentWrite_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ this->restarter_ = this->context_->get_connection_writer_restart ();
+}
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ if (this->run_ == 1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("Test did not run")
+ ACE_TEXT ("events.\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Finished coherent write test.\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.h
new file mode 100644
index 00000000000..efceb8b3c7b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Receiver/CoherentWrite_Test_Receiver_exec.h
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "CoherentWrite_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_CoherentWrite_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback,
+ int run);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &callback_;
+ int run_;
+ };
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ class Starter_exec_i
+ : public virtual ::CCM_CoherentWriteStarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Starter_exec_i (Receiver_exec_i & callback);
+ virtual ~Starter_exec_i (void);
+
+ virtual void set_reader_properties (CORBA::UShort nr_iterations);
+ virtual void start_read (CORBA::UShort run);
+
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Component attributes.
+
+ // Port operations.
+ virtual ::CCM_DDS::CoherentWriteTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_CoherentWriteStarter_ptr
+ get_reader_start ();
+
+ bool check_last ();
+ void start_read (CORBA::UShort run);
+ void run (CORBA::UShort run);
+
+ ::CORBA::UShort iterations (void);
+ void iterations (::CORBA::UShort iterations);
+
+ ::CORBA::UShort nr_runs (void);
+ void nr_runs (::CORBA::UShort nr_runs);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::CoherentWrite_Test::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::CoherentWriteTest::Reader_var reader_;
+ CoherentWriteRestarter_var restarter_;
+ CORBA::UShort iterations_;
+ CORBA::UShort run_;
+ CORBA::UShort nr_runs_;
+ CORBA::Long last_iter_;
+
+ read_action_Generator *ticker_;
+
+ void read_all (void);
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.idl
new file mode 100644
index 00000000000..c496b47d1cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_COHERENT_WRITE_TEST_SENDER_IDL
+#define DDS_COHERENT_WRITE_TEST_SENDER_IDL
+
+#include "Connector/CoherentWrite_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module CoherentWrite_Test
+{
+ component Sender
+ {
+ port CCM_DDS::CoherentWriteTest::DDS_Write info_write;
+
+ uses CoherentWriteStarter start_reader;
+ provides CoherentWriteRestarter restart_writer;
+
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.mpc
new file mode 100755
index 00000000000..c986fdb963c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender.mpc
@@ -0,0 +1,155 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p CoherentWrite_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(CoherentWrite_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += CoherentWrite_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ CoherentWrite_Test_Sender.idl
+ }
+}
+
+project(CoherentWrite_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += CoherentWrite_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ CoherentWrite_Test_SenderE.idl
+ }
+}
+
+project(CoherentWrite_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += CoherentWrite_Test_Sender_lem_gen CoherentWrite_Test_Sender_stub \
+ CoherentWrite_Test_Base_stub DDS_Coherent_Reader_Starter_stub
+ libs += CoherentWrite_Test_Base_stub Sender_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_SenderEC.inl
+ }
+}
+
+project(CoherentWrite_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += CoherentWrite_Test_Sender_idl_gen CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_stub DDS_Coherent_Reader_Starter_stub \
+ DDS_Coherent_Reader_Starter_lem_stub
+ libs += CoherentWrite_Test_Base_stub CoherentWrite_Test_Connector_stub \
+ Reader_Starter_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_SenderC.inl
+ }
+}
+
+project(CoherentWrite_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += CoherentWrite_Test_Sender_lem_stub CoherentWrite_Test_Sender_stub \
+ CoherentWrite_Test_Connector_lem_stub CoherentWrite_Test_Connector_stub \
+ DDS4CCM_lem_stub DDS_Coherent_Reader_Starter_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub CoherentWrite_Test_Base_stub \
+ CoherentWrite_Test_Connector_lem_stub CoherentWrite_Test_Connector_stub \
+ Reader_Starter_stub DDS4CCM_lem_stub Reader_Starter_lem_stub \
+ Reader_Starter_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(CoherentWrite_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += CoherentWrite_Test_Base_stub CoherentWrite_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel CoherentWrite_Test_Connector_stub \
+ CoherentWrite_Test_Connector_svnt CoherentWrite_Test_Connector_lem_stub \
+ DDS_Coherent_Reader_Starter_stub DDS_Coherent_Reader_Starter_svnt \
+ DDS_Coherent_Reader_Starter_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub CoherentWrite_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel CoherentWrite_Test_Connector_stub CoherentWrite_Test_Connector_svnt \
+ CoherentWrite_Test_Connector_lem_stub Reader_Starter_stub \
+ Reader_Starter_svnt Reader_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CoherentWrite_Test_SenderS.cpp
+ CoherentWrite_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ CoherentWrite_Test_SenderS.h
+ CoherentWrite_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ CoherentWrite_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..0c3a464c95d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.cpp
@@ -0,0 +1,179 @@
+// -*- C++ -*-
+// $Id$
+
+#include "CoherentWrite_Test_Sender_exec.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_CoherentWrite_Test_Sender_Impl
+{
+ //============================================================
+ // WriteHandler
+ //============================================================
+ WriteHandler::WriteHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.start ();
+ return 0;
+ }
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ Restarter_exec_i::Restarter_exec_i (Sender_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Restarter_exec_i::~Restarter_exec_i (void)
+ {
+ }
+
+ void
+ Restarter_exec_i::restart_write ()
+ {
+ this->callback_.restart ();
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (3),
+ run_ (1),
+ total_iter (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::restart (void)
+ {
+ ++this->run_;
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ if (! ::CORBA::is_nil (this->starter_))
+ {
+ this->starter_->set_reader_properties (this->iterations_);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to start the reader\n")));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Start run <%d> with <%u> iterations\n",
+ this->run_,
+ this->iterations ()));
+
+ CoherentWriteTestSeq write_many_seq;
+ write_many_seq.length (this->iterations_);
+ for (int i = 1; i < this->iterations_ + 1; ++i)
+ {
+ CoherentWriteTest new_key;
+ new_key.symbol = CORBA::string_dup("KEY_1");
+ new_key.iteration = ++total_iter;
+ write_many_seq[i-1] = new_key;
+ }
+ this->writer_->write_many (write_many_seq);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written <%u> keys uptil now\n"),
+ total_iter));
+ ACE_OS::sleep (2);
+ this->starter_->start_read (this->run_);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CCM_CoherentWriteRestarter_ptr
+ Sender_exec_i::get_restart_writer (void)
+ {
+ return new Restarter_exec_i (*this);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CoherentWrite_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ this->writer_->is_coherent_write (true);
+ this->starter_ = this->context_->get_connection_start_reader ();
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.h
new file mode 100644
index 00000000000..d86c551b456
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/Sender/CoherentWrite_Test_Sender_exec.h
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "CoherentWrite_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_CoherentWrite_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteHandler
+ //============================================================
+ class WriteHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ class Restarter_exec_i
+ : public virtual ::CCM_CoherentWriteRestarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Restarter_exec_i (Sender_exec_i & callback);
+ virtual ~Restarter_exec_i (void);
+
+ virtual void restart_write ();
+
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CCM_CoherentWriteRestarter_ptr
+ get_restart_writer (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void restart (void);
+
+ private:
+ ::CoherentWrite_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::CoherentWriteTest::Writer_var writer_;
+ CoherentWriteStarter_var starter_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort run_;
+ CORBA::ULong total_iter;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..521972a9fab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/Plan.cdp
@@ -0,0 +1,384 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>CoherentWrite_Test_Depl_1</label>
+ <UUID>CoherentWrite_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="CoherentWrite_Test_ConnectorComponentImplementation">
+ <name>CoherentWrite_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="CoherentWrite_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="CoherentWrite_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_CoherentWrite_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_CoherentWrite_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWrite_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWrite_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CoherentWrite_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>nr_runs</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CoherentWrite_Test_ConnectorComponentInstance">
+ <name>CoherentWrite_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CoherentWrite_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWriter_Library#CoherentWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWrite_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="CoherentWrite_Test_ConnectorComponentInstance2">
+ <name>CoherentWrite_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="CoherentWrite_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWriter_Library#CoherentWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>CoherentWrite_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>4</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CoherentWrite_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="CoherentWrite_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>reader_starter</name>
+ <internalEndpoint>
+ <portName>start_reader</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>reader_start</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>restart_writer</name>
+ <internalEndpoint>
+ <portName>writer_restart</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>restart_writer</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="CoherentWrite_Test_Connector_ExecArtifact">
+ <name>CoherentWrite_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>CoherentWrite_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="CoherentWrite_Test_Connector_SvntArtifact">
+ <name>CoherentWrite_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>CoherentWrite_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="CoherentWrite_Test_Connector_StubArtifact">
+ <name>CoherentWrite_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>CoherentWrite_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..97da5d0ee8a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="CoherentWriter_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="CoherentWriter_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/run_test.pl
new file mode 100755
index 00000000000..708c17b2051
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/CoherentWriter/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.idl
new file mode 100644
index 00000000000..81d03950b3f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file Writer_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_BASE_IDL
+#define WRITER_BASE_IDL
+
+#pragma ndds typesupport "Base/Writer_BaseSupport.h"
+
+struct WriterTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<WriterTest> WriterTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.mpc
new file mode 100644
index 00000000000..3b14f5ee862
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Base/Writer_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_DDSWriterEntityBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_DDSWriterEntityBase_stub
+ dynamicflags += WRITER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=WRITER_BASE_STUB_Export \
+ -Wb,stub_export_include=Writer_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Writer_Base.idl
+ }
+
+ opendds_ts_flags += --export=WRITER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Writer_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.idl
new file mode 100644
index 00000000000..a5894738606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Writer_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_CONNECTOR_IDL_
+#define WRITER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Writer_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Writer_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::WriterTest, ::WriterTestSeq> WriterTest;
+};
+
+module Writer
+{
+ connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Writer_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.mpc
new file mode 100644
index 00000000000..80b36b1213e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Connector/Writer_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_DDSWriterEntityBase -l .. -o ../lib -u DDS Writer_Connector"
+
+project(DDS_DDSWriterEntityConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_stub_export.h \
+ -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Writer_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Writer_Connector_svnt_export.h \
+ -Wb,conn_export_macro=WRITER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Writer_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Connector.idl
+ }
+}
+
+project(DDS_DDSWriterEntityConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_DDSWriterEntityConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Writer_ConnectorE.idl
+ }
+}
+
+project(DDS_DDSWriterEntityConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_DDSWriterEntityConnector_lem_gen DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityBase_stub DDS4CCM_lem_stub
+ libs += DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_DDSWriterEntityConnector_lem_stub
+ dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorEC.h
+ Writer_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorEC.inl
+ }
+}
+
+project(DDS_DDSWriterEntityConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_DDSWriterEntityConnector_idl_gen DDS_DDSWriterEntityBase_stub
+ libs += DDS_DDSWriterEntityBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_DDSWriterEntityConnector_stub
+ dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorC.h
+ Writer_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorC.inl
+ }
+}
+
+project(DDS_DDSWriterEntityConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_DDSWriterEntityConnector_lem_stub DDS_DDSWriterEntityConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_DDSWriterEntityConnector_exec
+ libs += DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_lem_stub DDS_DDSWriterEntityBase_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Writer_Connector_conn.h
+ Writer_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_DDSWriterEntityConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_DDSWriterEntityConnector_lem_stub DDS_DDSWriterEntityConnector_exec DDS_DDSWriterEntityConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_DDSWriterEntityConnector_svnt
+ libs += DDS_DDSWriterEntityConnector_stub \
+ DDS_DDSWriterEntityConnector_lem_stub \
+ DDS_DDSWriterEntityBase_stub \
+ DDS_DDSWriterEntityConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorS.cpp
+ Writer_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorS.h
+ Writer_Connector_svnt.h
+ Writer_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/README b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/README
new file mode 100644
index 00000000000..38242380f34
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/README
@@ -0,0 +1,6 @@
+# $Id$
+
+Test which shows how to use the DDSDataWriter directly.
+
+We use the Datawriter from the DDS4CCM library. After typecasting
+it can be used to perform operations on DDS directly.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.idl
new file mode 100644
index 00000000000..959d6ded63e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Receiver
+ {
+ port CCM_DDS::WriterTest::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.mpc
new file mode 100644
index 00000000000..36cbc7c960a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_DDSWriterEntityReceiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_DDSWriterEntityConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Writer_Receiver.idl
+ }
+}
+
+project(DDS_DDSWriterEntityReceiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_DDSWriterEntityReceiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Writer_ReceiverE.idl
+ }
+}
+
+project(DDS_DDSWriterEntityReceiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_DDSWriterEntityReceiver_lem_gen DDS_DDSWriterEntityReceiver_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityBase_stub
+ libs += Receiver_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverEC.inl
+ }
+}
+
+project(DDS_DDSWriterEntityReceiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_DDSWriterEntityReceiver_idl_gen DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_lem_gen
+ libs += DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverC.inl
+ }
+}
+
+project(DDS_DDSWriterEntityReceiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_DDSWriterEntityReceiver_lem_stub DDS_DDSWriterEntityReceiver_stub DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_DDSWriterEntityReceiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_DDSWriterEntityReceiver_lem_stub DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_svnt DDS_DDSWriterEntityReceiver_exec DDS_DDSWriterEntityConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_svnt Receiver_exec DDS_DDSWriterEntityConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverS.cpp
+ Writer_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverS.h
+ Writer_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.cpp
new file mode 100644
index 00000000000..cae3ee568e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.cpp
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Writer_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ //============================================================
+ // WriterTest_Listener_exec_i
+ //============================================================
+ WriterTest_Listener_exec_i::WriterTest_Listener_exec_i ()
+ {
+ }
+
+ WriterTest_Listener_exec_i::~WriterTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ WriterTest_Listener_exec_i::on_one_data (
+ const WriterTest & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+
+ void
+ WriterTest_Listener_exec_i::on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ for (unsigned int i = 0; i < an_instance.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ }
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new WriterTest RAW listener\n")));
+ return new WriterTest_Listener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.h
new file mode 100644
index 00000000000..a6dd0077a1c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Receiver/Writer_Receiver_exec.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Writer_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ //============================================================
+ // WriterTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export WriterTest_Listener_exec_i
+ : public virtual ::CCM_DDS::WriterTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ WriterTest_Listener_exec_i ();
+ virtual ~WriterTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const WriterTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ virtual ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Writer::CCM_Receiver_Context_var context_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.idl
new file mode 100644
index 00000000000..e5289951f37
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_WRITER_ENTITY_SENDER_IDL
+#define DDS_WRITER_ENTITY_SENDER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Sender
+ {
+ port CCM_DDS::WriterTest::DDS_Write info_write;
+ attribute unsigned short rate;
+ attribute unsigned short iterations;
+ attribute unsigned short keys;
+ };
+};
+
+#endif /* DDS_WRITER_ENTITY_SENDER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.mpc
new file mode 100644
index 00000000000..87658cd8967
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_DDSWriterEntityBase -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_DDSWriterEntitySender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_DDSWriterEntityConnector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Sender.idl
+ }
+}
+
+project(DDS_DDSWriterEntitySender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_DDSWriterEntitySender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Writer_SenderE.idl
+ }
+}
+
+project(DDS_DDSWriterEntitySender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_DDSWriterEntitySender_lem_gen DDS_DDSWriterEntitySender_stub \
+ DDS_DDSWriterEntityBase_stub
+ libs += DDS_DDSWriterEntityBase_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderEC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderEC.inl
+ }
+}
+
+project(DDS_DDSWriterEntitySender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_DDSWriterEntitySender_idl_gen DDS_DDSWriterEntityBase_stub \
+ DDS_DDSWriterEntityConnector_stub
+ libs += DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntityConnector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderC.inl
+ }
+}
+
+project(DDS_DDSWriterEntitySender_exec) : ciao_executor, dds4ccm_base, dds4ccm_impl {
+ after += DDS_DDSWriterEntitySender_lem_stub DDS_DDSWriterEntitySender_stub \
+ DDS_DDSWriterEntityConnector_lem_stub DDS_DDSWriterEntityConnector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_DDSWriterEntityBase_stub \
+ DDS_DDSWriterEntityConnector_lem_stub DDS_DDSWriterEntityConnector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_DDSWriterEntitySender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_DDSWriterEntityBase_stub DDS_DDSWriterEntitySender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_DDSWriterEntityConnector_stub \
+ DDS_DDSWriterEntityConnector_svnt DDS_DDSWriterEntityConnector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_DDSWriterEntityBase_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_DDSWriterEntityConnector_stub DDS_DDSWriterEntityConnector_svnt \
+ DDS_DDSWriterEntityConnector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderS.cpp
+ Writer_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_SenderS.h
+ Writer_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.cpp
new file mode 100644
index 00000000000..e34834a215f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.cpp
@@ -0,0 +1,268 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Writer_Sender_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+#include "Base/Writer_BaseSupport.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_Writer_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::unregister_handles ()
+ {
+ for (Writer_Table::iterator i = this->ktests_.begin ();
+ i != this->ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ DDS_InstanceHandle_t hnd = this->handles_[i->first.c_str ()];
+ this->writer_->unregister_instance (i->second, hnd);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Unregistered <%C> - iteration <%d> - valid handle <%d>\n"),
+ i->first.c_str (),
+ i->second->iteration,
+ hnd.isValid));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("unknown exception caught during unregister_instance.\n")));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::register_handles()
+ {
+ Writer_Table::iterator i = this->ktests_.begin ();
+ for (i = this->ktests_.begin(); i != this->ktests_.end(); ++i)
+ {
+ DDS_InstanceHandle_t hnd = this->writer_->register_instance (i->second);
+ if (!hnd.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to register handle for <%C> - iteration <%d>\n"),
+ i->first.c_str (), i->second->iteration));
+ }
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Registering instance for <%C>\n"),
+ i->second->key.in ()));
+ this->handles_[i->first.c_str ()] = hnd;
+ }
+ }
+
+ void
+ Sender_exec_i::write_keyed ()
+ {
+ if (this->last_key != this->ktests_.end ())
+ {
+ ++this->last_key->second->iteration;
+ DDS_InstanceHandle_t hnd = this->handles_[this->last_key->first.c_str ()];
+ DDS_ReturnCode_t const retval = this->writer_->write (this->last_key->second, hnd);
+ if (retval == DDS_RETCODE_OK)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written keyed <%C> - iteration <%d> - valid handle <%d>\n"),
+ this->last_key->first.c_str (),
+ this->last_key->second->iteration,
+ hnd.isValid));
+ }
+ else ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error writing key <%C> - retcode %C\n"),
+ CIAO::DDS4CCM::translate_retcode (retval)));
+
+ ++this->last_key;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key = this->ktests_.begin ();
+ while (this->last_key != this->ktests_.end ())
+ {
+ if (this->last_key->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key == this->ktests_.end ())
+ {
+ unregister_handles ();
+ this->stop ();
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ write_keyed ();
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::UShort rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ DDS::DataWriter_var dds_dw =
+ this->context_->get_connection_info_write_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dds_dw.in ());
+ DDSDataWriter * p = ccm_dds_rd->get_impl ();
+ this->writer_ = dynamic_cast <WriterTestDataWriter *> (p);
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ WriterTest *new_key = new WriterTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->ktests_[key] = new_key;
+ }
+ this->last_key = this->ktests_.begin ();
+ register_handles ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.h
new file mode 100644
index 00000000000..9fb2d84eccc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/Sender/Writer_Sender_exec.h
@@ -0,0 +1,108 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Writer_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+
+#include <map>
+
+class WriterTestDataWriter;
+
+namespace CIAO_Writer_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort rate (void);
+
+ virtual void rate (::CORBA::UShort rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ WriterTestDataWriter * writer_;
+
+ pulse_Generator * ticker_;
+ ::Writer::CCM_Sender_Context_var context_;
+ CORBA::UShort rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ void register_handles ();
+ void unregister_handles ();
+ void write_keyed ();
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, WriterTest_var> Writer_Table;
+ Writer_Table ktests_;
+
+ typedef std::map<ACE_CString, DDS_InstanceHandle_t> Writer_Table_Handles;
+ Writer_Table_Handles handles_;
+
+ Writer_Table::iterator last_key;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/Plan.cdp
new file mode 100644
index 00000000000..6799bd6785d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/Plan.cdp
@@ -0,0 +1,361 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>DDSWriterEntity_Depl_1</label>
+ <UUID>DDSWriterEntity_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Writer_ConnectorComponentImplementation">
+ <name>Writer_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Writer_Connector_ExecArtifact" />
+ <artifact xmi:idref="Writer_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance">
+ <name>Writer_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDSWriterEntity</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance2">
+ <name>Writer_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDSWriterEntity</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_datacontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_ExecArtifact">
+ <name>Writer_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_DDSWriterEntityConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_SvntArtifact">
+ <name>Writer_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_DDSWriterEntityConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_StubArtifact">
+ <name>Writer_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_DDSWriterEntityConnector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/run_test.pl
new file mode 100755
index 00000000000..3ca8a0ee149
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DDSWriterEntity/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.idl
new file mode 100644
index 00000000000..8527e5392d8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file DNM_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef DOUBLE_NESTED_MODULE_BASE_IDL
+#define DOUBLE_NESTED_MODULE_BASE_IDL
+
+#pragma ndds typesupport "Base/DNM_BaseSupport.h"
+
+module X
+{
+ module Y
+ {
+ module Z
+ {
+ struct DNM_Test_Struct {
+ string key; //@key
+ long iter;
+ };
+ typedef sequence<DNM_Test_Struct> DNM_Test_StructSeq;
+ };
+ };
+};
+
+
+#endif /* DOUBLE_NESTED_MODULE_BASE_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.mpc
new file mode 100755
index 00000000000..d6ebc846c64
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Base/DNM_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_DNM_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_DNM_Base_stub
+ dynamicflags += DOUBLE_NESTED_MODULE_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=DOUBLE_NESTED_MODULE_BASE_STUB_Export \
+ -Wb,stub_export_include=DNM_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ DNM_Base.idl
+ }
+
+ opendds_ts_flags += --export=DOUBLE_NESTED_MODULE_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ DNM_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.idl
new file mode 100644
index 00000000000..7de844b7231
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file DNM_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef DOUBLE_NESTED_MODULE_CONNECTOR_IDL_
+#define DOUBLE_NESTED_MODULE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/DNM_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/DNM_ConnectorE.idl"
+#pragma ndds typesupport "Base/DNM_BaseSupport.h"
+
+module DNM_Test_Connector
+{
+ module Nested_Connector
+ {
+ module ::CCM_DDS::Typed < X::Y::Z::DNM_Test_Struct, X::Y::Z::DNM_Test_StructSeq> DNM_TestConn;
+ connector Double_Nested_Module_Connector : DNM_TestConn::DDS_Event
+ {
+ };
+ };
+};
+
+#endif /* DOUBLE_NESTED_MODULE_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.mpc
new file mode 100755
index 00000000000..9a78c3acff8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Connector/DNM_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_DNM_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=DOUBLE_NESTED_MODULE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=DNM_Connector_stub_export.h \
+ -Wb,skel_export_macro=DOUBLE_NESTED_MODULE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=DNM_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=DOUBLE_NESTED_MODULE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=DNM_Connector_svnt_export.h \
+ -Wb,conn_export_macro=DOUBLE_NESTED_MODULE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=DNM_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ DNM_Connector.idl
+ }
+}
+
+project(DDS_DNM_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_DNM_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=DOUBLE_NESTED_MODULE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=DNM_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ DNM_ConnectorE.idl
+ }
+}
+
+project(DDS_DNM_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_DNM_Connector_lem_gen DDS_DNM_Connector_stub DDS_DNM_Base_stub DDS4CCM_lem_stub
+ libs += DDS_DNM_Base_stub DDS_DNM_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_DNM_Connector_lem_stub
+ dynamicflags = DOUBLE_NESTED_MODULE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ DNM_ConnectorEC.h
+ DNM_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ DNM_ConnectorEC.inl
+ }
+}
+
+project(DDS_DNM_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_DNM_Connector_idl_gen DDS_DNM_Base_stub
+ libs += DDS_DNM_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_DNM_Connector_stub
+ dynamicflags = DOUBLE_NESTED_MODULE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_ConnectorC.cpp
+ }
+
+ Header_Files {
+ DNM_ConnectorC.h
+ DNM_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ DNM_ConnectorC.inl
+ }
+}
+
+project(DDS_DNM_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_DNM_Connector_lem_stub DDS_DNM_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_DNM_Connector_exec
+ libs += DDS_DNM_Connector_stub DDS_DNM_Connector_lem_stub DDS_DNM_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DOUBLE_NESTED_MODULE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_Connector_conn.cpp
+ }
+
+ Header_Files {
+ DNM_Connector_conn.h
+ DNM_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_DNM_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_DNM_Connector_lem_stub DDS_DNM_Connector_exec DDS_DNM_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_DNM_Connector_svnt
+ libs += DDS_DNM_Connector_stub \
+ DDS_DNM_Connector_lem_stub \
+ DDS_DNM_Base_stub \
+ DDS_DNM_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = DOUBLE_NESTED_MODULE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_ConnectorS.cpp
+ DNM_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ DNM_ConnectorS.h
+ DNM_Connector_svnt.h
+ DNM_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ DNM_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.idl
new file mode 100644
index 00000000000..eaeb8d71068
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file DNM_Sender.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DNM_SENDER_IDL
+#define DNM_SENDER_IDL
+
+#include "Connector/DNM_Connector.idl"
+
+module DNM_Test_Sender
+{
+ module Nested_Sender
+ {
+ component Sender
+ {
+ port DNM_Test_Connector::Nested_Connector::DNM_TestConn::DDS_Write info_write;
+ };
+ };
+};
+
+#endif /* DNM_SENDER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.mpc
new file mode 100755
index 00000000000..591979693a3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender.mpc
@@ -0,0 +1,147 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_DNM_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DNM_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_DNM_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ DNM_Sender.idl
+ }
+}
+
+project(DNM_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DNM_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ DNM_SenderE.idl
+ }
+}
+
+project(DNM_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DNM_Sender_lem_gen DNM_Sender_stub DDS_DNM_Base_stub
+ libs += DDS_DNM_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_SenderEC.cpp
+ }
+
+ Header_Files {
+ DNM_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ DNM_SenderEC.inl
+ }
+}
+
+project(DNM_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DNM_Sender_idl_gen DDS_DNM_Base_stub DDS_DNM_Connector_stub
+ libs += DDS_DNM_Base_stub DDS_DNM_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_SenderC.cpp
+ }
+
+ Header_Files {
+ DNM_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ DNM_SenderC.inl
+ }
+}
+
+project(DNM_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DNM_Sender_lem_stub DNM_Sender_stub \
+ DDS_DNM_Connector_lem_stub DDS_DNM_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_DNM_Base_stub \
+ DDS_DNM_Connector_lem_stub DDS_DNM_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_Sender_exec.cpp
+ }
+
+ Header_Files {
+ DNM_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DNM_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_DNM_Base_stub DNM_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_DNM_Connector_stub \
+ DDS_DNM_Connector_svnt DDS_DNM_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_DNM_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_DNM_Connector_stub DDS_DNM_Connector_svnt \
+ DDS_DNM_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ DNM_SenderS.cpp
+ DNM_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ DNM_SenderS.h
+ DNM_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ DNM_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.cpp
new file mode 100644
index 00000000000..c7d0c79c3d3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.cpp
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+// $Id$
+
+#include "DNM_Sender_exec.h"
+#include "Base/DNM_BaseC.h"
+
+namespace CIAO_DNM_Test_Sender_Nested_Sender_Sender_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::DNM_Test_Sender::Nested_Sender::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+
+ ::X::Y::Z::DNM_Test_Struct * dnm =
+ new ::X::Y::Z::DNM_Test_Struct;
+ dnm->key = CORBA::string_dup ("KEY_1");
+ dnm->iter = 10;
+ this->writer_->write_one (*dnm, ::DDS::HANDLE_NIL);
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.h
new file mode 100644
index 00000000000..9308e434562
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/DoubleNestedModule/Sender/DNM_Sender_exec.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "DNM_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_DNM_Test_Sender_Nested_Sender_Sender_Impl
+{
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::DNM_Test_Sender::Nested_Sender::CCM_Sender_Context_var context_;
+ ::DNM_Test_Connector::Nested_Connector::DNM_TestConn::Writer_var writer_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_CoherentWrite_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl
new file mode 100644
index 00000000000..d34e3bf965c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file Event_Connection_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef EVENT_CONNECTION_TEST_BASE_IDL
+#define EVENT_CONNECTION_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Event_Connection_Test_BaseSupport.h"
+
+struct Event_ConnectionTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<Event_ConnectionTest> Event_ConnectionTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc
new file mode 100644
index 00000000000..20cf270e105
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Base/Event_Connection_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_ECT_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_ECT_Base_stub
+ dynamicflags += EVENT_CONNECTION_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=EVENT_CONNECTION_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Event_Connection_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Event_Connection_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=EVENT_CONNECTION_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Event_Connection_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl
new file mode 100644
index 00000000000..0d6b36f298b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Event_Connection_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef KEYED_TEST_CONNECTOR_IDL_
+#define KEYED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Event_Connection_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Event_Connection_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::Event_ConnectionTest, ::Event_ConnectionTestSeq> Event_ConnectionTest;
+};
+
+module Event_Connection_Test
+{
+ connector Event_Connection_Test_Connector : ::CCM_DDS::Event_ConnectionTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Event_Connection_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc
new file mode 100644
index 00000000000..a4a974acfc6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Connector/Event_Connection_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_ECT_Base -l .. -o ../lib -u DDS Event_Connection_Test_Connector"
+
+project(DDS_ECT_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=EVENT_CONNECTION_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Event_Connection_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=EVENT_CONNECTION_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Event_Connection_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=EVENT_CONNECTION_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Event_Connection_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=EVENT_CONNECTION_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Event_Connection_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Event_Connection_Test_Connector.idl
+ }
+}
+
+project(DDS_ECT_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_ECT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=EVENT_CONNECTION_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Event_Connection_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Event_Connection_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_ECT_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_ECT_Connector_lem_gen DDS_ECT_Connector_stub DDS_ECT_Base_stub DDS4CCM_lem_stub
+ libs += DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_ECT_Connector_lem_stub
+ dynamicflags = EVENT_CONNECTION_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ConnectorEC.h
+ Event_Connection_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_ECT_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_ECT_Connector_idl_gen DDS_ECT_Base_stub
+ libs += DDS_ECT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_ECT_Connector_stub
+ dynamicflags = EVENT_CONNECTION_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ConnectorC.h
+ Event_Connection_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_ECT_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_ECT_Connector_exec
+ libs += DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS_ECT_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = EVENT_CONNECTION_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_Connector_conn.h
+ Event_Connection_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_ECT_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_ECT_Connector_lem_stub DDS_ECT_Connector_exec DDS_ECT_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_ECT_Connector_svnt
+ libs += DDS_ECT_Connector_stub \
+ DDS_ECT_Connector_lem_stub \
+ DDS_ECT_Base_stub \
+ DDS_ECT_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = EVENT_CONNECTION_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ConnectorS.cpp
+ Event_Connection_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ConnectorS.h
+ Event_Connection_Test_Connector_svnt.h
+ Event_Connection_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README
new file mode 100644
index 00000000000..02691d71506
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/README
@@ -0,0 +1,25 @@
+# $Id$
+
+This test tests all possible connections between
+a Sender and a DDS Event connector and a Receiver and a
+DDS Event connector.
+The Sender requests the following connections:
+ * A writer
+ * A DDS writer
+
+The Receiver expects the following listeners to be created:
+ * A ConnectorStatusListener
+ * A PortStatusListener for the DDS_Listen port
+ * A PortStatusListener for the DDS_Get port
+ * A 'normal' listener
+
+The Receiver requests the following connections:
+ * A reader
+ * A getter
+ * A DDS reader
+ * A DataControlListener
+
+This test tests every single connection and reports an error when
+a connections couldn't be esthablished.
+
+No actual read/write/listen operations are performed.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl
new file mode 100644
index 00000000000..548e06e7b25
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Event_Connection_Test_Connector.idl"
+
+module Event_Connection_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::Event_ConnectionTest::DDS_Listen info_listen;
+ port CCM_DDS::Event_ConnectionTest::DDS_Get info_get;
+ provides CCM_DDS::ConnectorStatusListener status_listener;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc
new file mode 100644
index 00000000000..cf4b41fa0e0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_ECT_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_ECT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Event_Connection_Test_Receiver.idl
+ }
+}
+
+project(DDS_ECT_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_ECT_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Event_Connection_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_ECT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_ECT_Receiver_lem_gen DDS_ECT_Receiver_stub DDS_ECT_Connector_stub DDS_ECT_Base_stub
+ libs += Receiver_stub DDS_ECT_Connector_stub DDS_ECT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_ECT_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_ECT_Receiver_idl_gen DDS_ECT_Connector_stub DDS_ECT_Base_stub DDS_ECT_Connector_lem_gen
+ libs += DDS_ECT_Connector_stub DDS_ECT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_ECT_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_ECT_Receiver_lem_stub DDS_ECT_Receiver_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_ECT_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_ECT_Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Receiver_exec DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_stub DDS_ECT_Connector_svnt Receiver_exec DDS_ECT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_ReceiverS.cpp
+ Event_Connection_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_ReceiverS.h
+ Event_Connection_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..0c6d1b8087f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.cpp
@@ -0,0 +1,233 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Event_Connection_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_Event_Connection_Test_Receiver_Impl
+{
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : //DDS_Get
+ getter_ok_ (false),
+ getter_dds_data_reader_ok_ (false),
+ getter_reader_ok_ (false),
+ //DDS_Listen
+ listen_data_control_ok_ (false),
+ listen_reader_ok_ (false),
+ listen_dds_data_reader_ok_ (false),
+ //Provides
+ listen_port_status_created_ (false),
+ get_port_status_created_ (false),
+ get_status_listener_created_ (false),
+ raw_listener_created_ (false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Port operations.
+ ::CCM_DDS::Event_ConnectionTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new Event_ConnectionTest RAW listener\n")));
+ this->raw_listener_created_ = true;
+ return ::CCM_DDS::Event_ConnectionTest::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener for DDS_Listen\n")));
+ this->listen_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ this->get_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_status_listener(void)
+ {
+ this->get_status_listener_created_ = true;
+ return ::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Event_Connection_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ //DDS_Get
+ this->getter_getter_ =
+ this->context_->get_connection_info_get_fresh_data ();
+ if (! ::CORBA::is_nil (this->getter_getter_))
+ {
+ this->getter_ok_ = true;
+ }
+ this->getter_dds_data_reader_ =
+ this->context_->get_connection_info_get_dds_entity ();
+ if (! ::CORBA::is_nil (this->getter_dds_data_reader_))
+ {
+ this->getter_dds_data_reader_ok_ = true;
+ }
+ this->getter_reader_ =
+ this->context_->get_connection_info_get_data ();
+ if (! ::CORBA::is_nil (this->getter_reader_))
+ {
+ this->getter_reader_ok_ = true;
+ }
+ //DDS_Listen
+ this->listen_data_control_ =
+ this->context_->get_connection_info_listen_data_control ();
+
+ if (! ::CORBA::is_nil (this->listen_data_control_))
+ {
+ this->listen_data_control_ok_ = true;
+ }
+ this->listen_reader_ =
+ this->context_->get_connection_info_listen_data ();
+ if (! ::CORBA::is_nil (this->listen_reader_))
+ {
+ this->listen_reader_ok_ = true;
+ }
+ this->listen_dds_data_reader_ =
+ this->context_->get_connection_info_listen_dds_entity ();
+ if (! ::CORBA::is_nil (this->listen_dds_data_reader_))
+ {
+ this->listen_dds_data_reader_ok_ = true;
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ //DDS_Get
+ if (!this->getter_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get getter failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get getter passed\n")));
+ }
+ if (!this->getter_dds_data_reader_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Get failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Get passed\n")));
+ }
+ if (!this->getter_reader_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Get failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Get passed\n")));
+ }
+ //DDS_Listen
+ if (!this->listen_data_control_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data listen control of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data listen control of DDS_Listen passed\n")));
+ }
+ if (!this->listen_reader_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Listen passed\n")));
+ }
+ if (!this->listen_dds_data_reader_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get dds reader of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get dds reader of DDS_Listen passed\n")));
+ }
+ //Provides
+ if (!this->raw_listener_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : listener not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Listener was created\n")));
+ }
+ if (!this->listen_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Listen not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Listen was created\n")));
+ }
+ if (!this->get_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Get not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Get was created\n")));
+ }
+ if (!this->get_status_listener_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : ConnectorStatusListener not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : ConnectorStatusListener was created\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Event_Connection_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h
new file mode 100644
index 00000000000..7536df834d0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Receiver/Event_Connection_Test_Receiver_exec.h
@@ -0,0 +1,87 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef EVENT_CONNECTION_RECEIVER_EXEC_H_
+#define EVENT_CONNECTION_RECEIVER_EXEC_H_
+
+#include "Event_Connection_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Event_Connection_Test_Receiver_Impl
+{
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::Event_ConnectionTest::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ //DDS_Get
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+
+ virtual CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_status_listener(void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Event_Connection_Test::CCM_Receiver_Context_var context_;
+ //DDS_Get
+ ::CCM_DDS::Event_ConnectionTest::Getter_var getter_getter_;
+ ::DDS::DataReader_var getter_dds_data_reader_;
+ ::CCM_DDS::Event_ConnectionTest::Reader_var getter_reader_;
+
+ bool getter_ok_;
+ bool getter_dds_data_reader_ok_;
+ bool getter_reader_ok_;
+
+ //DDS_Listen
+ ::CCM_DDS::DataListenerControl_var listen_data_control_;
+ ::CCM_DDS::Event_ConnectionTest::Reader_var listen_reader_;
+ ::DDS::DataReader_var listen_dds_data_reader_;
+
+ bool listen_data_control_ok_;
+ bool listen_reader_ok_;
+ bool listen_dds_data_reader_ok_;
+
+ //Provide checks
+ bool listen_port_status_created_;
+ bool get_port_status_created_;
+ bool get_status_listener_created_;
+ bool raw_listener_created_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Event_Connection_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl
new file mode 100644
index 00000000000..8ab214b9256
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_EVENT_CONNECTION_TEST_SENDER_IDL
+#define DDS_EVENT_CONNECTION_TEST_SENDER_IDL
+
+#include "Connector/Event_Connection_Test_Connector.idl"
+
+module Event_Connection_Test
+{
+ component Sender
+ {
+ port CCM_DDS::Event_ConnectionTest::DDS_Write info_write;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc
new file mode 100644
index 00000000000..8258674efe6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_ECT_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_ECT_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_ECT_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Event_Connection_Test_Sender.idl
+ }
+}
+
+project(DDS_ECT_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_ECT_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Event_Connection_Test_SenderE.idl
+ }
+}
+
+project(DDS_ECT_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_ECT_Sender_lem_gen DDS_ECT_Sender_stub DDS_ECT_Base_stub
+ libs += DDS_ECT_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_SenderEC.inl
+ }
+}
+
+project(DDS_ECT_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_ECT_Sender_idl_gen DDS_ECT_Base_stub DDS_ECT_Connector_stub
+ libs += DDS_ECT_Base_stub DDS_ECT_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_SenderC.inl
+ }
+}
+
+project(DDS_ECT_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_ECT_Sender_lem_stub DDS_ECT_Sender_stub DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_ECT_Base_stub DDS_ECT_Connector_lem_stub DDS_ECT_Connector_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_ECT_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_ECT_Base_stub DDS_ECT_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_ECT_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_ECT_Connector_stub DDS_ECT_Connector_svnt DDS_ECT_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Event_Connection_Test_SenderS.cpp
+ Event_Connection_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Event_Connection_Test_SenderS.h
+ Event_Connection_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Event_Connection_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..1fb938bcf5e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.cpp
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Event_Connection_Test_Sender_exec.h"
+
+namespace CIAO_Event_Connection_Test_Sender_Impl
+{
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : writer_ok_ (false),
+ writer_dds_datawriter_ok_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Event_Connection_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ =
+ this->context_->get_connection_info_write_data ();
+ if (! ::CORBA::is_nil (this->writer_))
+ {
+ this->writer_ok_ = true;
+ }
+ this->writer_dds_datawriter_ =
+ this->context_->get_connection_info_write_dds_entity ();
+ if (! ::CORBA::is_nil (this->writer_dds_datawriter_))
+ {
+ this->writer_dds_datawriter_ok_ = true;
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (!this->writer_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get writer failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get writer passed\n")));
+ }
+ if (!this->writer_dds_datawriter_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get dds writer failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get dds writer passed\n")));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Event_Connection_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h
new file mode 100644
index 00000000000..6a6e8f31f46
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/Sender/Event_Connection_Test_Sender_exec.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef EVENT_CONNECTION_SENDER_EXEC_H_
+#define EVENT_CONNECTION_SENDER_EXEC_H_
+
+
+#include "Event_Connection_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Event_Connection_Test_Sender_Impl
+{
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Event_Connection_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::Event_ConnectionTest::Writer_var writer_;
+ DDS::DataWriter_var writer_dds_datawriter_;
+
+ bool writer_ok_;
+ bool writer_dds_datawriter_ok_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Event_Connection_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp
new file mode 100644
index 00000000000..5d3530866a5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/Plan.cdp
@@ -0,0 +1,508 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Event_Connection_Test_Depl_1</label>
+ <UUID>Event_Connection_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Event_Connection_Test_ConnectorComponentImplementation">
+ <name>Event_Connection_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Event_Connection_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Event_Connection_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Event_Connection_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Event_Connection_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Event_Connection_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Event_Connection_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Event_Connection_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Event_Connection_Test_ConnectorComponentInstance">
+ <name>Event_Connection_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Event_Connection_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Event_Connection_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Event_Connection_Test_ConnectorComponentInstance2">
+ <name>Event_Connection_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Event_Connection_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Event_Connection_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_rawlistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_datacontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_dds_reader</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>getter_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>getter_fresh_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>getter_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>getter_dds_reader</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>status_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_dds_writer</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Event_Connection_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Event_Connection_Test_Connector_ExecArtifact">
+ <name>Event_Connection_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_ECT_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Event_Connection_Test_Connector_SvntArtifact">
+ <name>Event_Connection_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_ECT_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Event_Connection_Test_Connector_StubArtifact">
+ <name>Event_Connection_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_ECT_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl
new file mode 100755
index 00000000000..b2a5229d554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Event_Connection_Test/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.idl
new file mode 100644
index 00000000000..3a38fd77ea0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file FSS_Event_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef FIXED_SIZE_STRUCT_EVENT_BASE_IDL
+#define FIXED_SIZE_STRUCT_EVENT_BASE_IDL
+
+#pragma ndds typesupport "Base/FSS_Event_BaseSupport.h"
+
+struct FixedStructSizeTest {
+ long one;
+ long two;
+};
+
+typedef sequence<FixedStructSizeTest> FixedStructSizeTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.mpc
new file mode 100755
index 00000000000..ce3dc9811aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Base/FSS_Event_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_FSS_Event_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_FSS_Event_Base_stub
+ dynamicflags += FIXED_SIZE_STRUCT_EVENT_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=FIXED_SIZE_STRUCT_EVENT_BASE_STUB_Export \
+ -Wb,stub_export_include=FSS_Event_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ FSS_Event_Base.idl
+ }
+
+ opendds_ts_flags += --export=FIXED_SIZE_STRUCT_EVENT_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ FSS_Event_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.idl
new file mode 100644
index 00000000000..a6f5a4197fd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file FSS_Event_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef FIXED_SIZE_STRUCT_EVENT_CONNECTOR_IDL_
+#define FIXED_SIZE_STRUCT_EVENT_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/FSS_Event_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/FSS_Event_ConnectorE.idl"
+#pragma ndds typesupport "Base/FSS_Event_BaseSupport.h"
+
+module FSS_Event
+{
+ module ::CCM_DDS::Typed < ::FixedStructSizeTest, ::FixedStructSizeTestSeq> FixedStructSizeTestConn;
+ connector FSS_Event_Connector : FixedStructSizeTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* FSS_Event_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.mpc
new file mode 100755
index 00000000000..6e4dde9f70a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/EventConnector/Connector/FSS_Event_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_FSS_Event_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=FIXED_SIZE_STRUCT_EVENT_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=FSS_Event_Connector_stub_export.h \
+ -Wb,skel_export_macro=FIXED_SIZE_STRUCT_EVENT_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=FSS_Event_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=FIXED_SIZE_STRUCT_EVENT_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=FSS_Event_Connector_svnt_export.h \
+ -Wb,conn_export_macro=FIXED_SIZE_STRUCT_EVENT_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=FSS_Event_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ FSS_Event_Connector.idl
+ }
+}
+
+project(DDS_FSS_Event_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_FSS_Event_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=FIXED_SIZE_STRUCT_EVENT_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=FSS_Event_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ FSS_Event_ConnectorE.idl
+ }
+}
+
+project(DDS_FSS_Event_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_FSS_Event_Connector_lem_gen DDS_FSS_Event_Connector_stub DDS_FSS_Event_Base_stub DDS4CCM_lem_stub
+ libs += DDS_FSS_Event_Base_stub DDS_FSS_Event_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_FSS_Event_Connector_lem_stub
+ dynamicflags = FIXED_SIZE_STRUCT_EVENT_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_Event_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ FSS_Event_ConnectorEC.h
+ FSS_Event_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ FSS_Event_ConnectorEC.inl
+ }
+}
+
+project(DDS_FSS_Event_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_FSS_Event_Connector_idl_gen DDS_FSS_Event_Base_stub
+ libs += DDS_FSS_Event_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_FSS_Event_Connector_stub
+ dynamicflags = FIXED_SIZE_STRUCT_EVENT_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_Event_ConnectorC.cpp
+ }
+
+ Header_Files {
+ FSS_Event_ConnectorC.h
+ FSS_Event_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ FSS_Event_ConnectorC.inl
+ }
+}
+
+project(DDS_FSS_Event_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_FSS_Event_Connector_lem_stub DDS_FSS_Event_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_FSS_Event_Connector_exec
+ libs += DDS_FSS_Event_Connector_stub DDS_FSS_Event_Connector_lem_stub DDS_FSS_Event_Base_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = FIXED_SIZE_STRUCT_EVENT_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_Event_Connector_conn.cpp
+ }
+
+ Header_Files {
+ FSS_Event_Connector_conn.h
+ FSS_Event_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_FSS_Event_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_FSS_Event_Connector_lem_stub DDS_FSS_Event_Connector_exec DDS_FSS_Event_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_FSS_Event_Connector_svnt
+ libs += DDS_FSS_Event_Connector_stub \
+ DDS_FSS_Event_Connector_lem_stub \
+ DDS_FSS_Event_Base_stub \
+ DDS_FSS_Event_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = FIXED_SIZE_STRUCT_EVENT_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_Event_ConnectorS.cpp
+ FSS_Event_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ FSS_Event_ConnectorS.h
+ FSS_Event_Connector_svnt.h
+ FSS_Event_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ FSS_Event_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.idl
new file mode 100644
index 00000000000..754b6320aea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file FSS_State_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef FIXED_SIZE_STRUCT_STATE_BASE_IDL
+#define FIXED_SIZE_STRUCT_STATE_BASE_IDL
+
+#pragma ndds typesupport "Base/FSS_State_BaseSupport.h"
+
+struct FixedStructSizeTest {
+ long one;
+ long two;
+};
+
+typedef sequence<FixedStructSizeTest> FixedStructSizeTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.mpc
new file mode 100755
index 00000000000..ee553207732
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Base/FSS_State_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_FSS_State_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_FSS_State_Base_stub
+ dynamicflags += FIXED_SIZE_STRUCT_STATE_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=FIXED_SIZE_STRUCT_STATE_BASE_STUB_Export \
+ -Wb,stub_export_include=FSS_State_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ FSS_State_Base.idl
+ }
+
+ opendds_ts_flags += --export=FIXED_SIZE_STRUCT_STATE_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ FSS_State_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.idl
new file mode 100644
index 00000000000..c6d030b7ba4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file FSS_State_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef FIXED_SIZE_STRUCT_STATE_CONNECTOR_IDL_
+#define FIXED_SIZE_STRUCT_STATE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/FSS_State_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/FSS_State_ConnectorE.idl"
+#pragma ndds typesupport "Base/FSS_State_BaseSupport.h"
+
+module FSS_State
+{
+ module ::CCM_DDS::Typed < ::FixedStructSizeTest, ::FixedStructSizeTestSeq> FixedStructSizeTestConn;
+ connector FSS_State_Connector : FixedStructSizeTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* FSS_State_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.mpc
new file mode 100755
index 00000000000..12bf238e623
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/FixedSizeStruct/StateConnector/Connector/FSS_State_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_FSS_State_Base -l .. -o ../lib -u DDS FSS_State_Connector"
+
+project(DDS_FSS_State_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=FIXED_SIZE_STRUCT_STATE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=FSS_State_Connector_stub_export.h \
+ -Wb,skel_export_macro=FIXED_SIZE_STRUCT_STATE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=FSS_State_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=FIXED_SIZE_STRUCT_STATE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=FSS_State_Connector_svnt_export.h \
+ -Wb,conn_export_macro=FIXED_SIZE_STRUCT_STATE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=FSS_State_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ FSS_State_Connector.idl
+ }
+}
+
+project(DDS_FSS_State_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_FSS_State_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=FIXED_SIZE_STRUCT_STATE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=FSS_State_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ FSS_State_ConnectorE.idl
+ }
+}
+
+project(DDS_FSS_State_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_FSS_State_Connector_lem_gen DDS_FSS_State_Connector_stub DDS_FSS_State_Base_stub DDS4CCM_lem_stub
+ libs += DDS_FSS_State_Base_stub DDS_FSS_State_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_FSS_State_Connector_lem_stub
+ dynamicflags = FIXED_SIZE_STRUCT_STATE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_State_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ FSS_State_ConnectorEC.h
+ FSS_State_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ FSS_State_ConnectorEC.inl
+ }
+}
+
+project(DDS_FSS_State_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_FSS_State_Connector_idl_gen DDS_FSS_State_Base_stub
+ libs += DDS_FSS_State_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_FSS_State_Connector_stub
+ dynamicflags = FIXED_SIZE_STRUCT_STATE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_State_ConnectorC.cpp
+ }
+
+ Header_Files {
+ FSS_State_ConnectorC.h
+ FSS_State_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ FSS_State_ConnectorC.inl
+ }
+}
+
+project(DDS_FSS_State_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_FSS_State_Connector_lem_stub DDS_FSS_State_Connector_stub DDS4CCM_lem_stub DDS_FSS_State_Base_stub
+ sharedname = DDS_FSS_State_Connector_exec
+ libs += DDS_FSS_State_Connector_stub DDS_FSS_State_Connector_lem_stub DDS_FSS_State_Base_stub DDS4CCM_lem_stub DDS_FSS_State_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = FIXED_SIZE_STRUCT_STATE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_State_Connector_conn.cpp
+ }
+
+ Header_Files {
+ FSS_State_Connector_conn.h
+ FSS_State_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_FSS_State_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_FSS_State_Connector_lem_stub DDS_FSS_State_Connector_exec DDS_FSS_State_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_FSS_State_Connector_svnt
+ libs += DDS_FSS_State_Connector_stub \
+ DDS_FSS_State_Connector_lem_stub \
+ DDS_FSS_State_Base_stub \
+ DDS_FSS_State_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = FIXED_SIZE_STRUCT_STATE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ FSS_State_ConnectorS.cpp
+ FSS_State_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ FSS_State_ConnectorS.h
+ FSS_State_Connector_svnt.h
+ FSS_State_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ FSS_State_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl
new file mode 100644
index 00000000000..5709fe39c20
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file Get_Invoker.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef GETTER_INVOKER_IDL
+#define GETTER_INVOKER_IDL
+
+#pragma ciao lem "Base/Get_InvokerE.idl"
+
+interface GetInvoker
+{
+ void start_timeout_get_one ();
+ void start_timeout_get_many ();
+ void start_get_one (in string key, in long fixed_key, in long iteration);
+ void start_get_many (in short keys, in long iterations);
+};
+
+#endif /* SAMPLE_INFO_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc
new file mode 100755
index 00000000000..41f85b50ae1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Get_Invoker.mpc
@@ -0,0 +1,115 @@
+// $Id$
+
+project(DDS_Get_Invoker_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after +=
+ idlflags += -Wb,stub_export_macro=GET_INVOKER_STUB_Export \
+ -Wb,stub_export_include=Get_Invoker_stub_export.h \
+ -Wb,skel_export_macro=GET_INVOKER_SVNT_Export \
+ -Wb,skel_export_include=Get_Invoker_svnt_export.h \
+ -Wb,svnt_export_macro=GET_INVOKER_SVNT_Export \
+ -Wb,svnt_export_include=Get_Invoker_svnt_export.h \
+ -Wb,exec_export_macro=GET_INVOKER_EXEC_Export \
+ -Wb,exec_export_include=Get_Invoker_exec_export.h -I..
+
+ IDL_Files {
+ Get_Invoker.idl
+ }
+}
+
+project(DDS_Get_Invoker_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Get_Invoker_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=GET_INVOKER_LEM_STUB_Export \
+ -Wb,stub_export_include=Get_Invoker_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Get_InvokerE.idl
+ }
+}
+
+project(DDS_Get_Invoker_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Get_Invoker_lem_gen DDS_Get_Invoker_stub
+ libs += Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Get_Invoker_lem_stub
+ dynamicflags = GET_INVOKER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Get_InvokerEC.cpp
+ }
+
+ Header_Files {
+ Get_InvokerEC.h
+ Get_Invoker_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Get_InvokerEC.inl
+ }
+}
+
+project(DDS_Get_Invoker_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Get_Invoker_idl_gen
+ libs +=
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Get_Invoker_stub
+ dynamicflags = GET_INVOKER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Get_InvokerC.cpp
+ }
+
+ Header_Files {
+ Get_InvokerC.h
+ Get_Invoker_stub_export.h
+ }
+
+ Inline_Files {
+ Get_InvokerC.inl
+ }
+}
+
+
+project(DDS_Get_Invoker_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Get_Invoker_lem_stub DDS_Get_Invoker_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Get_Invoker_idl_gen
+ sharedname = Get_Invoker_svnt
+ libs += Get_Invoker_stub Get_Invoker_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = GET_INVOKER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Get_InvokerS.cpp
+ Get_Invoker_svnt.cpp
+ }
+
+ Header_Files {
+ Get_InvokerS.h
+ Get_Invoker_svnt.h
+ Get_Invoker_svnt_export.h
+ }
+
+ Inline_Files {
+ Get_InvokerS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl
new file mode 100644
index 00000000000..16be11dfb20
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+/**
+ * @file Getter_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef GETTER_TEST_BASE_IDL
+#define GETTER_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Getter_Test_BaseSupport.h"
+#pragma opendds typesupport "Base/Getter_Test_BaseTypeSupportC.h"
+
+#pragma DCPS_DATA_TYPE "GetterTest"
+
+struct GetterTest {
+ string key;
+ long iteration;
+};
+typedef sequence<GetterTest> GetterTestSeq;
+
+#pragma DCPS_DATA_TYPE "GetterFixed"
+
+struct GetterFixed {
+ long key;
+ long iteration;
+};
+typedef sequence<GetterFixed> GetterFixedSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc
new file mode 100755
index 00000000000..fa70eb16af0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Base/Getter_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Getter_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Getter_Test_Base_stub
+ dynamicflags += GETTER_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=GETTER_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Getter_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Getter_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=GETTER_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Getter_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl
new file mode 100644
index 00000000000..62b25c82de0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+/**
+ * @file Getter_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef GETTER_TEST_CONNECTOR_IDL_
+#define GETTER_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Getter_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Getter_Test_ConnectorE.idl"
+
+module Getter_Test
+{
+ module ::CCM_DDS::Typed < ::GetterTest, ::GetterTestSeq> GetterTestConn;
+ connector Getter_Test_Connector : GetterTestConn::DDS_Event
+ {
+ };
+
+ module ::CCM_DDS::Typed < ::GetterFixed, ::GetterFixedSeq> GetterFixedConn;
+ connector Getter_Fixed_Connector : GetterFixedConn::DDS_Event
+ {
+ };
+};
+
+#endif /* GETTER_TEST_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc
new file mode 100755
index 00000000000..4aeb2ae819f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Connector/Getter_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Getter_Test_Base -l .. -o ../lib -u DDS Getter_Test_Connector"
+
+project(DDS_Getter_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=GETTER_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Getter_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=GETTER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Getter_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=GETTER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Getter_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=GETTER_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Getter_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Getter_Test_Connector.idl
+ }
+}
+
+project(DDS_Getter_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Getter_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=GETTER_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Getter_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Getter_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_Getter_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Getter_Test_Connector_lem_gen DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Getter_Test_Connector_lem_stub
+ dynamicflags = GETTER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ConnectorEC.h
+ Getter_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_Getter_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Getter_Test_Connector_idl_gen DDS_Getter_Test_Base_stub
+ libs += DDS_Getter_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Getter_Test_Connector_stub
+ dynamicflags = GETTER_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ConnectorC.h
+ Getter_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_Getter_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub DDS_Getter_Test_Base_stub
+ sharedname = DDS_Getter_Test_Connector_exec
+ libs += DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub DDS_Getter_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = GETTER_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Getter_Test_Connector_conn.h
+ Getter_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Getter_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_exec DDS_Getter_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Getter_Test_Connector_svnt
+ libs += DDS_Getter_Test_Connector_stub \
+ DDS_Getter_Test_Connector_lem_stub \
+ DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = GETTER_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ConnectorS.cpp
+ Getter_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ConnectorS.h
+ Getter_Test_Connector_svnt.h
+ Getter_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/README b/modules/CIAO/connectors/dds4ccm/tests/Getter/README
new file mode 100644
index 00000000000..00bcdbee833
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/README
@@ -0,0 +1,15 @@
+# $Id$
+
+This test tests the Getter.
+
+Before the Sender starts writing samples to DDS, he informs the
+Receiver (via a 'normal' CCM interface) about how many keys and
+iterations to get from DDS. The receiver starts waiting on those
+samples by calling get_one or get_many, using a timeout.
+In the meantime the Sender will sleep for half a second before actual
+writing the samples to DDS.
+Once the DDS connector on the receiver side receives the written samples,
+he should wake up and should return the samples to the user code.
+
+To prevent deadlocks, both getting and writing takes place on the
+ORB reactor thread. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl
new file mode 100644
index 00000000000..a034cfa12cf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Getter_Test_Connector.idl"
+#include "Base/Get_Invoker.idl"
+
+module Getter_Test
+{
+ component Receiver
+ {
+ port GetterTestConn::DDS_Get info_get;
+ port GetterFixedConn::DDS_Get info_fixed;
+
+ provides GetInvoker getter_invoke;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc
new file mode 100755
index 00000000000..a6751e40f22
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver.mpc
@@ -0,0 +1,157 @@
+// $Id$
+
+project(DDS_Getter_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Getter_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Getter_Test_Receiver.idl
+ }
+}
+
+project(DDS_Getter_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Getter_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Getter_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_Getter_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Getter_Test_Receiver_lem_gen DDS_Getter_Test_Receiver_stub \
+ DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub \
+ DDS_Get_Invoker_stub
+ libs += Receiver_stub DDS_Getter_Test_Connector_stub \
+ DDS_Getter_Test_Base_stub Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_Getter_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Getter_Test_Receiver_idl_gen DDS_Getter_Test_Connector_stub \
+ DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_lem_gen \
+ DDS_Get_Invoker_stub DDS_Get_Invoker_lem_stub
+ libs += DDS_Getter_Test_Connector_stub DDS_Getter_Test_Base_stub \
+ Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_Getter_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Getter_Test_Receiver_lem_stub DDS_Getter_Test_Receiver_stub \
+ DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub \
+ DDS_Getter_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_Get_Invoker_lem_stub DDS_Get_Invoker_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub Get_Invoker_lem_stub Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Getter_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Getter_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Getter_Test_Receiver_lem_stub DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \
+ DDS_Getter_Test_Receiver_exec DDS_Getter_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Get_Invoker_stub \
+ DDS_Get_Invoker_svnt DDS_Get_Invoker_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \
+ Receiver_exec DDS_Getter_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel Get_Invoker_stub Get_Invoker_svnt \
+ Get_Invoker_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_ReceiverS.cpp
+ Getter_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Getter_Test_ReceiverS.h
+ Getter_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..90aa43a5aab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.cpp
@@ -0,0 +1,549 @@
+// // -*- C++ -*-
+//
+// $Id$
+
+#include "Getter_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/OS_NS_sys_time.h"
+
+namespace CIAO_Getter_Test_Receiver_Impl
+{
+ //============================================================
+ // Invoker_exec_i
+ //============================================================
+ Invoker_exec_i::Invoker_exec_i (Receiver_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Invoker_exec_i::~Invoker_exec_i (void)
+ {
+ }
+
+ void
+ Invoker_exec_i::start_timeout_get_one ()
+ {
+ this->callback_.timeout_get_one ();
+ }
+
+ void
+ Invoker_exec_i::start_timeout_get_many ()
+ {
+ this->callback_.timeout_get_many ();
+ }
+
+ void
+ Invoker_exec_i::start_get_one (const char * key,
+ ::CORBA::Long fixed_key,
+ ::CORBA::Long iteration)
+ {
+ this->callback_.start_get_one (key, fixed_key, iteration);
+ }
+
+ void
+ Invoker_exec_i::start_get_many (::CORBA::Short keys, ::CORBA::Long iterations)
+ {
+ this->callback_.start_get_many (keys, iterations);
+ }
+
+ //============================================================
+ // GetOneHandler
+ //============================================================
+ GetOneHandler::GetOneHandler (Receiver_exec_i &callback,
+ const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration)
+ : callback_ (callback),
+ key_ (key),
+ fixed_key_ (fixed_key),
+ iteration_ (iteration)
+ {
+ }
+
+ GetOneHandler::~GetOneHandler ()
+ {
+ }
+
+ int
+ GetOneHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.get_one (this->key_, this->fixed_key_, this->iteration_);
+ return 0;
+ }
+
+ //============================================================
+ // GetManyHandler
+ //============================================================
+ GetManyHandler::GetManyHandler (Receiver_exec_i &callback,
+ CORBA::UShort keys,
+ CORBA::Long iterations)
+ : callback_ (callback),
+ keys_ (keys),
+ iterations_ (iterations)
+ {
+ }
+
+ GetManyHandler::~GetManyHandler ()
+ {
+ }
+
+ int
+ GetManyHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.get_many (this->keys_, this->iterations_);
+ return 0;
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start_get_one (const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration)
+ {
+ GetOneHandler* rh = new GetOneHandler (*this,
+ CORBA::string_dup (key),
+ fixed_key,
+ iteration);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh);
+ }
+
+ void
+ Receiver_exec_i::start_get_many (CORBA::Short keys,
+ CORBA::Long iterations)
+ {
+ GetManyHandler* rh = new GetManyHandler (*this, keys, iterations);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh);
+ }
+
+ void
+ Receiver_exec_i::get_many (CORBA::Short keys , CORBA::Long iterations)
+ {
+ // this is very hard to test in a controlled environment.
+ // When data arrives in DDS, the waiting ends and the
+ // Getter starts to read the data. The number of samples
+ // read wil (almost) always be one.
+ // On the other hand, when the user want to have all the
+ // samples in DDS, one shouldn't use the wait method.
+ // Since the spec is not clear about this, the test will
+ // pass when at least one sample is returned.
+ // Also, max_delivered_data cannot be tested since only
+ // one sample is returned.
+ DDS::Duration_t to;
+ to.sec = 10;
+ to.nanosec = 0;
+ this->getter_->time_out (to);
+ this->getter_->max_delivered_data (40);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_many: "
+ "Start getting data from DDS: "
+ "#keys <%d> - #iterations <%d> with timeout: "
+ "sec <%d> - nanosec <%u>\n",
+ keys, iterations,
+ this->getter_->time_out ().sec,
+ this->getter_->time_out ().nanosec));
+
+ GetterTestSeq *gettertest_seq = 0;
+ ::CCM_DDS::ReadInfoSeq *readinfo = 0;
+ bool result = this->getter_->get_many (gettertest_seq, readinfo);
+ if (result)
+ {
+ if (gettertest_seq->length () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Receiver_exec_i::get_many: "
+ "No data returned. "
+ "number of samples: "
+ "expected at least one - received <0>\n"));
+ }
+ for (CORBA::ULong i = 0; i < gettertest_seq->length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_many: "
+ "Returned data : key <%C> - iteration <%d>\n",
+ (*gettertest_seq)[i].key.in (),
+ (*gettertest_seq)[i].iteration));
+ }
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: GET MANY: "
+ "Time out occurred\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::get_one_fixed (CORBA::Long fixed_key, CORBA::Long iteration)
+ {
+ DDS::Duration_t to;
+ to.sec = 5;
+ to.nanosec = 0;
+ this->fixed_->time_out (to);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_fixed: "
+ "Start getting data from DDS: "
+ "key <%u> - iteration <%d> "
+ " with timeout: "
+ "sec <%u> - nanosec <%u>\n",
+ fixed_key, iteration,
+ this->getter_->time_out ().sec,
+ this->getter_->time_out ().nanosec));
+ GetterFixed gettertest_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ ACE_Time_Value tv = ACE_OS::gettimeofday ();
+ bool result = this->fixed_->get_one (gettertest_info, readinfo);
+ if (result)
+ {
+ ACE_Time_Value dur = ACE_OS::gettimeofday () - tv;
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_fixed: "
+ "get_one took <%#T>\n",
+ &dur));
+ if (gettertest_info.key != fixed_key)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: GET ONE: "
+ "Expected key does "
+ "not match received key: "
+ "expected <%u> - received <%C>\n",
+ fixed_key,
+ gettertest_info.key));
+ }
+ if (gettertest_info.iteration != iteration)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: GET ONE: "
+ "Expected iteration does "
+ "not match received iteration: "
+ "expected <%d> - received <%d>\n",
+ iteration,
+ gettertest_info.iteration));
+ }
+ // check readinfo struct.
+ if (readinfo.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR FIXED: GET MANY: ")
+ ACE_TEXT ("received instance handle should be invalid ")
+ ACE_TEXT ("for unkeyed data: ")
+ ACE_TEXT ("key <%u> - iteration <%u>\n"),
+ gettertest_info.key,
+ gettertest_info.iteration));
+ }
+ if (readinfo.source_timestamp.sec == 0 &&
+ readinfo.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: READ ONE LAST: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%u> - iteration <%d>\n",
+ gettertest_info.key,
+ gettertest_info.iteration));
+ }
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_fixed: "
+ "Returned data : key <%u> - iteration <%d>\n",
+ gettertest_info.key,
+ gettertest_info.iteration));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: GET ONE: "
+ "Time out while waiting for "
+ "key <%u> - iteration <%d>\n",
+ fixed_key,
+ iteration));
+ }
+ }
+
+ void
+ Receiver_exec_i::get_one_variable (const char * key, CORBA::Long iteration)
+ {
+ DDS::Duration_t to;
+ to.sec = 5;
+ to.nanosec = 0;
+ this->getter_->time_out (to);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_variable: "
+ "Start getting data from DDS: "
+ "key <%C> - iteration <%d> "
+ " with timeout: "
+ "sec <%d> - nanosec <%u>\n",
+ key, iteration,
+ this->getter_->time_out ().sec,
+ this->getter_->time_out ().nanosec));
+ GetterTest *gettertest_info = new GetterTest;
+ ::CCM_DDS::ReadInfo readinfo;
+ ACE_Time_Value tv = ACE_OS::gettimeofday ();
+ bool result = this->getter_->get_one (gettertest_info, readinfo);
+ if (result)
+ {
+ ACE_Time_Value dur = ACE_OS::gettimeofday () - tv;
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_variable: "
+ "get_one took <%#T>\n",
+ &dur));
+ if (ACE_OS::strcmp (gettertest_info->key, key) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: GET ONE: "
+ "Expected key does "
+ "not match received key: "
+ "expected <%C> - received <%C>\n",
+ key,
+ gettertest_info->key.in ()));
+ }
+ if (gettertest_info->iteration != iteration)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: GET ONE: "
+ "Expected iteration does "
+ "not match received iteration: "
+ "expected <%d> - received <%d>\n",
+ iteration,
+ gettertest_info->iteration));
+ }
+ // check readinfo struct.
+ if (readinfo.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR VARIABLE: GET MANY: ")
+ ACE_TEXT ("received instance handle should be invalid ")
+ ACE_TEXT ("for unkeyed data: ")
+ ACE_TEXT ("key <%C> - iteration <%u>\n"),
+ gettertest_info->key.in (),
+ gettertest_info->iteration));
+ }
+ if (readinfo.source_timestamp.sec == 0 &&
+ readinfo.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: READ ONE LAST: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ gettertest_info->key.in (),
+ gettertest_info->iteration));
+ }
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::get_one_variable: "
+ "Returned data : key <%C> - iteration <%d>\n",
+ gettertest_info->key.in (),
+ gettertest_info->iteration));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: GET ONE: "
+ "Time out while waiting for "
+ "key <%C> - iteration <%d>\n",
+ key,
+ iteration));
+ }
+ }
+
+ void
+ Receiver_exec_i::get_one (const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration)
+ {
+ this->get_one_variable (key, iteration);
+ this->get_one_fixed (fixed_key, iteration);
+ }
+
+ void
+ Receiver_exec_i::timeout_get_one_fixed ()
+ {
+ try
+ {
+ DDS::Duration_t to;
+ to.sec = 1;
+ to.nanosec = 0;
+ this->fixed_->time_out (to);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_one_fixed: "
+ "Start getting data from DDS: timeout: "
+ "sec <%d> - nanosec <%u>\n",
+ this->fixed_->time_out ().sec,
+ this->fixed_->time_out ().nanosec));
+ GetterFixed gettertest_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ bool result = this->fixed_->get_one (gettertest_info, readinfo);
+ if (result)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: TIMEOUT GET ONE: "
+ "Returning true when get no data.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_one_fixed: "
+ "Expected to return no data.\n"));
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR FIXED: TIMEOUT GET ONE: "
+ "Caught unexcepted InternalError "
+ "exception\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR FIXED: TIMEOUT GET ONE:");
+ ACE_ERROR ((LM_ERROR,
+ "ERROR: Receiver_exec_i::timeout_get_one_fixed : Exception caught\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::timeout_get_one_variable ()
+ {
+ try
+ {
+ DDS::Duration_t to;
+ to.sec = 1;
+ to.nanosec = 0;
+ this->getter_->time_out (to);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_one_variable: "
+ "Start getting data from DDS: timeout: "
+ "sec <%d> - nanosec <%u>\n",
+ this->getter_->time_out ().sec,
+ this->getter_->time_out ().nanosec));
+ GetterTest *gettertest_info = new GetterTest;
+ ::CCM_DDS::ReadInfo readinfo;
+ bool result = this->getter_->get_one (gettertest_info, readinfo);
+ if (result)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: TIMEOUT GET ONE: "
+ "Returning true when get no data.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_one_variable: "
+ "Expected to return no data.\n"));
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR VARIABLE: TIMEOUT GET ONE: "
+ "Caught unexcepted InternalError "
+ "exception\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR VARIABLE: TIMEOUT GET ONE:");
+ ACE_ERROR ((LM_ERROR,
+ "ERROR: Receiver_exec_i::timeout_get_one_variable : Exception caught\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::timeout_get_one ()
+ {
+ this->timeout_get_one_variable ();
+ this->timeout_get_one_fixed ();
+ }
+
+ void
+ Receiver_exec_i::timeout_get_many ()
+ {
+ try
+ {
+ DDS::Duration_t to;
+ to.sec = 1;
+ to.nanosec = 0;
+ this->getter_->time_out (to);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_many: "
+ "Start getting data from DDS: timeout: "
+ "sec <%d> - nanosec <%u>\n",
+ this->getter_->time_out ().sec,
+ this->getter_->time_out ().nanosec));
+ GetterTestSeq *gettertest_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo;
+ bool result = this->getter_->get_many (gettertest_seq, readinfo);
+ if (result)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: TIMEOUT GET MANY: "
+ "Returning true when get no data.\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::timeout_get_many: "
+ "Expected to return no data.\n"));
+ }
+ }
+ catch (const CCM_DDS::InternalError&)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: TIMEOUT GET MANY: "
+ "Caught unexcepted InternalError "
+ "exception\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: TIMEOUT GET MANY:");
+ ACE_ERROR ((LM_ERROR,
+ "ERROR: Receiver_exec_i::timeout_get_many : Exception caught\n"));
+ }
+ }
+
+ ::Getter_Test::GetterTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return ::Getter_Test::GetterTestConn::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_fixed_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_GetInvoker_ptr
+ Receiver_exec_i::get_getter_invoke ()
+ {
+ return new Invoker_exec_i (*this);
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Getter_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->getter_ = this->context_->get_connection_info_get_fresh_data ();
+ this->fixed_ = this->context_->get_connection_info_fixed_fresh_data ();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Getter_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h
new file mode 100644
index 00000000000..f23118c7b86
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Receiver/Getter_Test_Receiver_exec.h
@@ -0,0 +1,153 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Getter_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Getter_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // GetOneHandler
+ //============================================================
+ class GetOneHandler
+ : public ACE_Event_Handler
+ {
+ public:
+ GetOneHandler (Receiver_exec_i &,
+ const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration);
+ virtual ~GetOneHandler ();
+
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+
+ private:
+ Receiver_exec_i &callback_;
+ const char * key_;
+ CORBA::Long fixed_key_;
+ CORBA::Long iteration_;
+ };
+
+ //============================================================
+ // GetManyHandler
+ //============================================================
+ class GetManyHandler
+ : public ACE_Event_Handler
+ {
+ public:
+ GetManyHandler (Receiver_exec_i &,
+ CORBA::UShort keys,
+ CORBA::Long iterations);
+ virtual ~GetManyHandler ();
+
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+
+ private:
+ Receiver_exec_i &callback_;
+ CORBA::UShort keys_;
+ CORBA::Long iterations_;
+ };
+
+ //============================================================
+ // Invoker_exec_i
+ //============================================================
+ class Invoker_exec_i
+ : public virtual ::CCM_GetInvoker,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Invoker_exec_i (Receiver_exec_i & callback);
+ virtual ~Invoker_exec_i (void);
+
+ virtual void start_timeout_get_one ();
+ virtual void start_timeout_get_many ();
+
+ virtual void start_get_one (const char * key,
+ ::CORBA::Long fixed_key,
+ ::CORBA::Long iteration);
+ virtual void start_get_many (::CORBA::Short keys , ::CORBA::Long iterations);
+
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ virtual ::Getter_Test::GetterTestConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_fixed_status (void);
+
+ virtual ::CCM_GetInvoker_ptr
+ get_getter_invoke ();
+
+
+ void start_get_one (const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration);
+ void timeout_get_one ();
+ void timeout_get_many ();
+ void get_one (const char * key,
+ CORBA::Long fixed_key,
+ CORBA::Long iteration);
+
+ void start_get_many (CORBA::Short keys,
+ CORBA::Long iterations);
+
+ void get_many (CORBA::Short keys,
+ CORBA::Long iterations);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Getter_Test::CCM_Receiver_Context_var context_;
+ ::Getter_Test::GetterTestConn::Getter_var getter_;
+ ::Getter_Test::GetterFixedConn::Getter_var fixed_;
+
+ void timeout_get_one_fixed ();
+ void timeout_get_one_variable ();
+
+ void get_one_fixed (CORBA::Long fixed_key,
+ CORBA::Long iteration);
+ void get_one_variable (const char * key,
+ CORBA::Long iteration);
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Getter_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl
new file mode 100644
index 00000000000..fa49687b75c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.idl
@@ -0,0 +1,32 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_GETTER_TEST_SENDER_IDL
+#define DDS_GETTER_TEST_SENDER_IDL
+
+#include "Connector/Getter_Test_Connector.idl"
+#include "Base/Get_Invoker.idl"
+
+module Getter_Test
+{
+ component Sender
+ {
+ port GetterTestConn::DDS_Write info_write;
+ port GetterFixedConn::DDS_Write info_fixed;
+
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+
+ uses GetInvoker invoke_getter;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc
new file mode 100755
index 00000000000..821ecd7deb8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender.mpc
@@ -0,0 +1,152 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Getter_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Getter_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Getter_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Getter_Test_Sender.idl
+ }
+}
+
+project(DDS_Getter_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Getter_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Getter_Test_SenderE.idl
+ }
+}
+
+project(DDS_Getter_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Getter_Test_Sender_lem_gen DDS_Getter_Test_Sender_stub \
+ DDS_Getter_Test_Base_stub DDS_Get_Invoker_stub
+ libs += DDS_Getter_Test_Base_stub Sender_stub Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_SenderEC.inl
+ }
+}
+
+project(DDS_Getter_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Getter_Test_Sender_idl_gen DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_stub DDS_Get_Invoker_stub \
+ DDS_Get_Invoker_lem_stub
+ libs += DDS_Getter_Test_Base_stub DDS_Getter_Test_Connector_stub \
+ Get_Invoker_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Getter_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_SenderC.inl
+ }
+}
+
+project(DDS_Getter_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Getter_Test_Sender_lem_stub DDS_Getter_Test_Sender_stub \
+ DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Getter_Test_Base_stub \
+ DDS_Getter_Test_Connector_lem_stub DDS_Getter_Test_Connector_stub \
+ Get_Invoker_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Getter_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Getter_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Getter_Test_Base_stub DDS_Getter_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Getter_Test_Connector_stub \
+ DDS_Getter_Test_Connector_svnt DDS_Getter_Test_Connector_lem_stub \
+ DDS_Get_Invoker_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_Getter_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_Getter_Test_Connector_stub DDS_Getter_Test_Connector_svnt \
+ DDS_Getter_Test_Connector_lem_stub Get_Invoker_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Getter_Test_SenderS.cpp
+ Getter_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Getter_Test_SenderS.h
+ Getter_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Getter_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..3988d462683
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.cpp
@@ -0,0 +1,287 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Getter_Test_Sender_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Getter_Test_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr ,
+ const DDS::InconsistentTopicStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr ,
+ const DDS::RequestedIncompatibleQosStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr ,
+ const DDS::SampleRejectedStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr ,
+ const DDS::OfferedDeadlineMissedStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr ,
+ const DDS::OfferedIncompatibleQosStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr ,
+ ::DDS::StatusKind status_kind)
+ {
+ if (status_kind == ::DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ this->callback_.start ();
+ }
+ }
+
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5),
+ done_ (false),
+ ccm_activated_ (false),
+ last_iter_ (1)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::start_timeout_tests (void)
+ {
+ this->invoker_->start_timeout_get_one ();
+ this->invoker_->start_timeout_get_many ();
+ }
+
+ void
+ Sender_exec_i::write_many (void)
+ {
+ GetterTestSeq write_many;
+ write_many.length (this->keys_ * this->iterations_);
+ for (CORBA::UShort key = 1; key < this->keys_ + 1; ++key)
+ {
+ GetterTest new_key;
+ char tmp[7];
+ ACE_OS::sprintf (tmp, "KEY_%d", key);
+ new_key.key = CORBA::string_dup(tmp);
+ for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter)
+ {
+ new_key.iteration = iter;
+ write_many[key + iter - 2] = new_key;
+ }
+ }
+ try
+ {
+ this->invoker_->start_get_many (this->keys_, this->iterations_);
+ ACE_Time_Value tv (1, 0);
+ ACE_OS::sleep (tv);
+ this->writer_->write_many (write_many);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"),
+ write_many.length ()));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ }
+ }
+
+
+ void
+ Sender_exec_i::start (void)
+ {
+ //start can be called more than once...
+ if (!this->done_ && this->ccm_activated_)
+ {
+ this->done_ = true;
+ start_timeout_tests ();
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, 500000),
+ ACE_Time_Value (0, 500000)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::tick (void)
+ {
+ if (this->last_iter_ <= this->iterations_)
+ {
+ GetterFixed fixed_key;
+ GetterTest *new_key = new GetterTest;
+ new_key->key = CORBA::string_dup("KEY_1");
+ fixed_key.key = 1;
+ this->invoker_->start_get_one (
+ CORBA::string_dup("KEY_1"),
+ 1,
+ last_iter_);
+ new_key->iteration = last_iter_;
+ fixed_key.iteration = last_iter_;
+
+ ACE_Time_Value tv (0, 50000);
+ ACE_OS::sleep (tv);
+
+ this->writer_->write_one (*new_key, ::DDS::HANDLE_NIL);
+ this->fixed_->write_one (fixed_key, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Written keys <%C> and <%u> with <%d>\n",
+ new_key->key.in (), fixed_key.key, last_iter_));
+
+ ++last_iter_;
+ }
+ else
+ {
+ write_many ();
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (*this);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Getter_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ this->fixed_ = this->context_->get_connection_info_fixed_data ();
+ this->invoker_ = this->context_->get_connection_invoke_getter ();
+ this->ccm_activated_ = true;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Getter_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h
new file mode 100644
index 00000000000..8d7cde811e6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/Sender/Getter_Test_Sender_exec.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Getter_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Getter_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Sender_exec_i &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr ,
+ const DDS::InconsistentTopicStatus & );
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr ,
+ const DDS::RequestedIncompatibleQosStatus & );
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr ,
+ const DDS::SampleRejectedStatus & );
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr ,
+ const DDS::OfferedDeadlineMissedStatus & );
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr ,
+ const DDS::OfferedIncompatibleQosStatus & );
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr ,
+ ::DDS::StatusKind );
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void tick (void);
+
+ private:
+ ::Getter_Test::CCM_Sender_Context_var context_;
+ ::Getter_Test::GetterTestConn::Writer_var writer_;
+ ::Getter_Test::GetterFixedConn::Writer_var fixed_;
+ GetInvoker_var invoker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ bool done_;
+ bool ccm_activated_;
+ CORBA::ULong last_iter_;
+
+ void start_timeout_tests (void);
+ void write_many (void);
+
+ pulse_Generator * ticker_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Getter_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..610f946887b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/Plan.cdp
@@ -0,0 +1,499 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Getter_Test_Depl_1</label>
+ <UUID>Getter_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Getter_Fixed_ConnectorComponentImplementation">
+ <name>Getter_Fixed_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Getter_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Getter_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Getter_Fixed_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Getter_Fixed_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Getter_Test_ConnectorComponentImplementation">
+ <name>Getter_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Getter_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Getter_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Getter_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Getter_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Getter_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="Getter_Test_ConnectorComponentInstance">
+ <name>Getter_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Getter_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Getter_Test_ConnectorComponentInstance2">
+ <name>Getter_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Getter_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- FIXED -->
+ <instance xmi:id="Getter_Fixed_ConnectorComponentInstance">
+ <name>Getter_Fixed_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Getter_Fixed_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Fixed</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Getter_Fixed_ConnectorComponentInstance2">
+ <name>Getter_Fixed_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Getter_Fixed_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Getter_Fixed</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_get_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Getter_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_fixed_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_fixed_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Getter_Fixed_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_out_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Getter_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Getter_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>fixed_writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_fixed_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Getter_Fixed_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>reader_starter</name>
+ <internalEndpoint>
+ <portName>invoke_getter</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>getter_invoke</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Getter_Test_Connector_ExecArtifact">
+ <name>Getter_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Getter_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Getter_Test_Connector_SvntArtifact">
+ <name>Getter_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Getter_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Getter_Test_Connector_StubArtifact">
+ <name>Getter_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Getter_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl
new file mode 100755
index 00000000000..d897a3911e9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Getter/descriptors/run_test.pl
@@ -0,0 +1,250 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.idl
new file mode 100644
index 00000000000..fe3da7521ff
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file Writer_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_BASE_IDL
+#define WRITER_BASE_IDL
+
+#pragma ndds typesupport "Base/Writer_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "WriterTest"
+#pragma DCPS_DATA_KEY "WriterTest key"
+
+struct WriterTest {
+ string key; //@key
+};
+
+typedef sequence<WriterTest> WriterTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.mpc
new file mode 100644
index 00000000000..dc020d1f5a5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Base/Writer_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_DDSInstanceHandleBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_DDSInstanceHandleBase_stub
+ dynamicflags += WRITER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=WRITER_BASE_STUB_Export \
+ -Wb,stub_export_include=Writer_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Writer_Base.idl
+ }
+
+ opendds_ts_flags += --export=WRITER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Writer_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.idl
new file mode 100644
index 00000000000..a5894738606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Writer_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_CONNECTOR_IDL_
+#define WRITER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Writer_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Writer_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::WriterTest, ::WriterTestSeq> WriterTest;
+};
+
+module Writer
+{
+ connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Writer_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.mpc
new file mode 100644
index 00000000000..30334e43706
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Connector/Writer_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_DDSInstanceHandleBase -l .. -o ../lib -u DDS Writer_Connector"
+
+project(DDS_InstanceHandleConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_stub_export.h \
+ -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Writer_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Writer_Connector_svnt_export.h \
+ -Wb,conn_export_macro=WRITER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Writer_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Connector.idl
+ }
+}
+
+project(DDS_InstanceHandleConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_InstanceHandleConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Writer_ConnectorE.idl
+ }
+}
+
+project(DDS_InstanceHandleConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_InstanceHandleConnector_lem_gen DDS_InstanceHandleConnector_stub DDS_DDSInstanceHandleBase_stub DDS4CCM_lem_stub
+ libs += DDS_DDSInstanceHandleBase_stub DDS_InstanceHandleConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_InstanceHandleConnector_lem_stub
+ dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorEC.h
+ Writer_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorEC.inl
+ }
+}
+
+project(DDS_InstanceHandleConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_InstanceHandleConnector_idl_gen DDS_DDSInstanceHandleBase_stub
+ libs += DDS_DDSInstanceHandleBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_InstanceHandleConnector_stub
+ dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorC.h
+ Writer_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorC.inl
+ }
+}
+
+project(DDS_InstanceHandleConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_InstanceHandleConnector_lem_stub DDS_InstanceHandleConnector_stub DDS4CCM_lem_stub DDS_DDSInstanceHandleBase_stub
+ sharedname = DDS_InstanceHandleConnector_exec
+ libs += DDS_InstanceHandleConnector_stub DDS_InstanceHandleConnector_lem_stub DDS_DDSInstanceHandleBase_stub DDS4CCM_lem_stub DDS_DDSInstanceHandleBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Writer_Connector_conn.h
+ Writer_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_InstanceHandleConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_InstanceHandleConnector_lem_stub DDS_InstanceHandleConnector_exec DDS_InstanceHandleConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_InstanceHandleConnector_svnt
+ libs += DDS_InstanceHandleConnector_stub \
+ DDS_InstanceHandleConnector_lem_stub \
+ DDS_DDSInstanceHandleBase_stub \
+ DDS_InstanceHandleConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorS.cpp
+ Writer_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorS.h
+ Writer_Connector_svnt.h
+ Writer_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/README b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/README
new file mode 100644
index 00000000000..38242380f34
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/README
@@ -0,0 +1,6 @@
+# $Id$
+
+Test which shows how to use the DDSDataWriter directly.
+
+We use the Datawriter from the DDS4CCM library. After typecasting
+it can be used to perform operations on DDS directly.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.idl
new file mode 100644
index 00000000000..c39a2e21252
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_WRITER_ENTITY_SENDER_IDL
+#define DDS_WRITER_ENTITY_SENDER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Sender
+ {
+ port CCM_DDS::WriterTest::DDS_Write info_write;
+ attribute unsigned short keys;
+ };
+};
+
+#endif /* DDS_WRITER_ENTITY_SENDER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.mpc
new file mode 100644
index 00000000000..df9ba2d3f54
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_DDSInstanceHandleBase -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_DDSInstanceHandleSender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_InstanceHandleConnector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Sender.idl
+ }
+}
+
+project(DDS_DDSInstanceHandleSender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_DDSInstanceHandleSender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Writer_SenderE.idl
+ }
+}
+
+project(DDS_DDSInstanceHandleSender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_DDSInstanceHandleSender_lem_gen DDS_DDSInstanceHandleSender_stub \
+ DDS_DDSInstanceHandleBase_stub
+ libs += DDS_DDSInstanceHandleBase_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderEC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderEC.inl
+ }
+}
+
+project(DDS_DDSInstanceHandleSender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_DDSInstanceHandleSender_idl_gen DDS_DDSInstanceHandleBase_stub \
+ DDS_InstanceHandleConnector_stub
+ libs += DDS_DDSInstanceHandleBase_stub DDS_InstanceHandleConnector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderC.inl
+ }
+}
+
+project(DDS_DDSInstanceHandleSender_exec) : ciao_executor, dds4ccm_base, dds4ccm_impl {
+ after += DDS_DDSInstanceHandleSender_lem_stub DDS_DDSInstanceHandleSender_stub \
+ DDS_InstanceHandleConnector_lem_stub DDS_InstanceHandleConnector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_DDSInstanceHandleBase_stub \
+ DDS_InstanceHandleConnector_lem_stub DDS_InstanceHandleConnector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_DDSInstanceHandleSender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_DDSInstanceHandleBase_stub DDS_DDSInstanceHandleSender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_InstanceHandleConnector_stub \
+ DDS_InstanceHandleConnector_svnt DDS_InstanceHandleConnector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_DDSInstanceHandleBase_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_InstanceHandleConnector_stub DDS_InstanceHandleConnector_svnt \
+ DDS_InstanceHandleConnector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderS.cpp
+ Writer_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_SenderS.h
+ Writer_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.cpp
new file mode 100644
index 00000000000..6a9ba2a69bd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.cpp
@@ -0,0 +1,271 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Writer_Sender_exec.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+#include "Base/Writer_BaseSupport.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/ndds/InstanceHandle_t.h"
+
+#include "ace/Log_Msg.h"
+
+namespace CIAO_Writer_Sender_Impl
+{
+ //============================================================
+ // StartHandler
+ //============================================================
+ StartHandler::StartHandler(Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ StartHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.run ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : keys_ (5)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::unregister_handles ()
+ {
+ for (Writer_Table::iterator i = this->ktests_.begin ();
+ i != this->ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ ::DDS::InstanceHandle_t hnd = this->handles_[i->first.c_str ()];
+ this->ccm_writer_->unregister_instance (i->second, hnd);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Unregistered <%C> - valid handle <%d>\n"),
+ i->first.c_str (),
+ hnd.isValid));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("unknown exception caught during unregister_instance.\n")));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::register_handles ()
+ {
+ Writer_Table::iterator i = this->ktests_.begin ();
+ for (i = this->ktests_.begin(); i != this->ktests_.end(); ++i)
+ {
+ DDS::InstanceHandle_t hnd = this->ccm_writer_->register_instance (i->second);
+ if (!hnd.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to register handle for <%C>\n"),
+ i->first.c_str ()));
+ }
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Registering instance for <%C>\n"),
+ i->second->key.in ()));
+ this->handles_[i->first.c_str ()] = hnd;
+ }
+ }
+
+ void
+ Sender_exec_i::test_equality ()
+ {
+ Writer_Table::iterator i = this->ktests_.begin ();
+ for (i = this->ktests_.begin(); i != this->ktests_.end(); ++i)
+ {
+ ::DDS::InstanceHandle_t ccm_hnd =
+ this->handles_[i->first.c_str ()];
+
+ DDS_InstanceHandle_t dds_hnd =
+ this->dds_writer_->lookup_instance (i->second);
+ if (dds_hnd == ccm_hnd)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::test_equality - "
+ "== operator seems to work for DDS and "
+ "CCM handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Sender_exec_i::test_equality - "
+ "== operator doesn't seem to work for DDS and "
+ "CCM handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ DDS::InstanceHandle_t ccm_dds_hnd;
+ ccm_dds_hnd <<= dds_hnd;
+ if (ccm_hnd == ccm_dds_hnd)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::test_equality - "
+ "== operator seems to work for CCM handles "
+ "for key <%C>\n",
+ i->first.c_str ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Sender_exec_i::test_equality - "
+ "== operator doesn't seem to work for CCM "
+ "handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::test_non_equality ()
+ {
+ Writer_Table::iterator i = this->ktests_.begin ();
+ for (i = this->ktests_.begin(); i != this->ktests_.end(); ++i)
+ {
+ ::DDS::InstanceHandle_t ccm_hnd =
+ this->handles_[i->first.c_str ()];
+
+ Writer_Table::iterator unequal = i;
+ ++unequal;
+ if (unequal == this->ktests_.end ())
+ unequal = this->ktests_.begin ();
+
+ DDS_InstanceHandle_t dds_hnd =
+ this->dds_writer_->lookup_instance (unequal->second);
+ //compare
+ if (dds_hnd != ccm_hnd)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::test_equality - "
+ "!= operator seems to work for DDS and "
+ "CCM handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Sender_exec_i::test_equality - "
+ "!= operator doesn't seem to work for DDS and "
+ "CCM handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ DDS::InstanceHandle_t ccm_dds_hnd;
+ ccm_dds_hnd <<= dds_hnd;
+ if (ccm_dds_hnd != ccm_hnd)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::test_equality - "
+ "!= operator seems to work for CCM "
+ "handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Sender_exec_i::test_equality - "
+ "!= operator doesn't seem to work for CCM "
+ "handles for key <%C>\n",
+ i->first.c_str ()));
+ }
+ }
+ unregister_handles ();
+ }
+
+ void
+ Sender_exec_i::run ()
+ {
+ test_equality ();
+ test_non_equality ();
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ StartHandler *rh = new StartHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ DDS::DataWriter_var dds_dw =
+ this->context_->get_connection_info_write_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dds_dw.in ());
+ DDSDataWriter * p = ccm_dds_rd->get_impl ();
+ this->dds_writer_ = dynamic_cast <WriterTestDataWriter *> (p);
+ this->ccm_writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ WriterTest *new_key = new WriterTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+
+ this->ktests_[key] = new_key;
+ }
+ register_handles ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.h
new file mode 100644
index 00000000000..b56d98c153b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/Sender/Writer_Sender_exec.h
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Writer_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+
+#include <map>
+
+class WriterTestDataWriter;
+
+namespace CIAO_Writer_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // StartHandler
+ //============================================================
+ class StartHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ StartHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void run ();
+
+ private:
+ void start (void);
+
+ WriterTestDataWriter * dds_writer_;
+ CCM_DDS::WriterTest::Writer_var ccm_writer_;
+
+ ::Writer::CCM_Sender_Context_var context_;
+ CORBA::UShort keys_;
+
+ void register_handles ();
+ void unregister_handles ();
+ void test_equality ();
+ void test_non_equality ();
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, WriterTest_var> Writer_Table;
+ Writer_Table ktests_;
+
+ typedef std::map<ACE_CString, ::DDS::InstanceHandle_t> CCM_Handles;
+ CCM_Handles handles_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/Plan.cdp
new file mode 100644
index 00000000000..10ad51c564a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/Plan.cdp
@@ -0,0 +1,224 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>DDSWriterEntity_Depl_1</label>
+ <UUID>DDSWriterEntity_Depl_1</UUID>
+
+ <implementation xmi:id="Writer_ConnectorComponentImplementation">
+ <name>Writer_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Writer_Connector_ExecArtifact" />
+ <artifact xmi:idref="Writer_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="Writer_ConnectorComponentInstance">
+ <name>Writer_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDSWriterEntity</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>dds_writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_ExecArtifact">
+ <name>Writer_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_InstanceHandleConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_SvntArtifact">
+ <name>Writer_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_InstanceHandleConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_StubArtifact">
+ <name>Writer_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_InstanceHandleConnector_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/run_test.pl
new file mode 100755
index 00000000000..e39d6647174
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/InstanceHandle/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 5 seconds to allow task to complete\n";
+sleep (5);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl
new file mode 100644
index 00000000000..19d714f4c12
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file Keyed_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef KEYED_TEST_BASE_IDL
+#define KEYED_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Keyed_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "KeyedTest"
+#pragma DCPS_DATA_KEY "KeyedTest key"
+
+struct KeyedTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<KeyedTest> KeyedTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc
new file mode 100644
index 00000000000..d1c5b16759b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Base/Keyed_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Keyed_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Keyed_Test_Base_stub
+ dynamicflags += KEYED_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=KEYED_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Keyed_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Keyed_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=KEYED_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Keyed_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl
new file mode 100644
index 00000000000..844d3ac7e53
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Keyed_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef KEYED_TEST_CONNECTOR_IDL_
+#define KEYED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Keyed_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Keyed_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::KeyedTest, ::KeyedTestSeq> KeyedTest;
+};
+
+module Keyed_Test
+{
+ connector Keyed_Test_Connector : ::CCM_DDS::KeyedTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Keyed_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc
new file mode 100644
index 00000000000..e6b7ac4140b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Connector/Keyed_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Keyed_Test_Base -l .. -o ../lib -u DDS Keyed_Test_Connector"
+
+project(DDS_Keyed_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=KEYED_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Keyed_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=KEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Keyed_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=KEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Keyed_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=KEYED_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Keyed_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Keyed_Test_Connector.idl
+ }
+}
+
+project(DDS_Keyed_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Keyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=KEYED_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Keyed_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Keyed_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_Keyed_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Keyed_Test_Connector_lem_gen DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Keyed_Test_Connector_lem_stub
+ dynamicflags = KEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ConnectorEC.h
+ Keyed_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Keyed_Test_Connector_idl_gen DDS_Keyed_Test_Base_stub
+ libs += DDS_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Keyed_Test_Connector_stub
+ dynamicflags = KEYED_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ConnectorC.h
+ Keyed_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub DDS_Keyed_Test_Base_stub
+ sharedname = DDS_Keyed_Test_Connector_exec
+ libs += DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub DDS_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = KEYED_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_Connector_conn.h
+ Keyed_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Keyed_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_exec DDS_Keyed_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Keyed_Test_Connector_svnt
+ libs += DDS_Keyed_Test_Connector_stub \
+ DDS_Keyed_Test_Connector_lem_stub \
+ DDS_Keyed_Test_Base_stub \
+ DDS_Keyed_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = KEYED_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ConnectorS.cpp
+ Keyed_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ConnectorS.h
+ Keyed_Test_Connector_svnt.h
+ Keyed_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README
new file mode 100644
index 00000000000..8bc6dae4a7e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/README
@@ -0,0 +1,16 @@
+# $Id$
+
+This test creates instances in DDS by using the
+updater port. After that, every instance is updated.
+The number of instances (keys) and the number of
+updates (iterations) per key can be defined in
+the deployment plan.
+
+The Receiver checks whether the keys were updated
+correctly by using the read_one method on the reader.
+The Receiver should know the number of instances (keys) and
+the number of iterations per key. These should be configured
+in the deployment plan.
+
+An error is reported when the receiver did not receive
+the correct number of samples. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl
new file mode 100644
index 00000000000..faf8ee41bfb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Keyed_Test_Connector.idl"
+
+module Keyed_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::KeyedTest::DDS_Listen info_out;
+ attribute unsigned long rate;
+ attribute unsigned short iterations;
+ attribute unsigned short keys;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc
new file mode 100644
index 00000000000..39b660fe6db
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_Keyed_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Keyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Keyed_Test_Receiver.idl
+ }
+}
+
+project(DDS_Keyed_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Keyed_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Keyed_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_Keyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Keyed_Test_Receiver_lem_gen DDS_Keyed_Test_Receiver_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub
+ libs += Receiver_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Keyed_Test_Receiver_idl_gen DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_lem_gen
+ libs += DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Keyed_Test_Receiver_lem_stub DDS_Keyed_Test_Receiver_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Keyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Keyed_Test_Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Receiver_exec DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt Receiver_exec DDS_Keyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_ReceiverS.cpp
+ Keyed_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_ReceiverS.h
+ Keyed_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..6a23fe57d69
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.cpp
@@ -0,0 +1,233 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Keyed_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+namespace CIAO_Keyed_Test_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ this->pulse_callback_.read ();
+ return 0;
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (1),
+ iterations_ (10),
+ keys_ (5),
+ expected_ (50)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::check_received_samples ()
+ {
+ bool all_received = true;
+ for (Last_Iteration_Table::iterator iter = this->last_iters_.begin ();
+ iter != this->last_iters_.end () && all_received;
+ ++iter)
+ {
+ all_received = iter->second == this->iterations_;
+ }
+ if (all_received)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("All samples received. Stop the timer\n")));
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+
+ void
+ Receiver_exec_i::read (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ try
+ {
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ KeyedTest keyedtest_info;
+ char key[100];
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ keyedtest_info.key = CORBA::string_dup (key);
+ ::CCM_DDS::ReadInfo readinfo;
+ this->reader_->read_one_last (keyedtest_info, readinfo, ::DDS::HANDLE_NIL);
+
+ ACE_Time_Value tv;
+ tv <<= readinfo.source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ONE Read_Info ")
+ ACE_TEXT (" -> date =%#T\n"),
+ &tv));
+
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE keyed test info : ")
+ ACE_TEXT ("received keyedtest_info for <%C> at %u\n"),
+ keyedtest_info.key.in (),
+ keyedtest_info.iteration));
+ this->last_iters_[key] = keyedtest_info.iteration;
+ check_received_samples ();
+ }
+ }
+ catch(const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: KeyedTest_Read: ")
+ ACE_TEXT ("Unexpected NonExistent exception received\n")));
+ }
+ catch(const CCM_DDS::NonExistent& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("KeyedTest_Read: ")
+ ACE_TEXT ("Expected NonExistent received\n")));
+ }
+ }
+
+ ::CORBA::ULong
+ Receiver_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Receiver_exec_i::rate (
+ ::CORBA::ULong rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ this->expected_ = this->iterations_ * this->keys_;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ this->expected_ = this->iterations_ * this->keys_;
+ }
+
+ ::CCM_DDS::KeyedTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return 0;
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Keyed_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(0, usec),
+ ACE_Time_Value(0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CORBA::UShort received_ = 0;
+ for (Last_Iteration_Table::iterator iter = this->last_iters_.begin ();
+ iter != this->last_iters_.end ();
+ ++iter)
+ {
+ ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary for <%C>: last sample <%u> - expected <%u>\n",
+ iter->first.c_str(),
+ iter->second,
+ this->iterations_));
+ received_ += iter->second;
+ }
+
+ if (received_ < this->expected_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : Expected to receive %u samples, actually got %u\n",
+ this->expected_, received_));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Keyed_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h
new file mode 100644
index 00000000000..250f25cc256
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Receiver/Keyed_Test_Receiver_exec.h
@@ -0,0 +1,104 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Keyed_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Reactor.h"
+
+#include <map>
+
+namespace CIAO_Keyed_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &pulse_callback_;
+
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void read (void);
+
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::CCM_DDS::KeyedTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Keyed_Test::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::KeyedTest::Reader_var reader_;
+
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ CORBA::ULong expected_;
+
+ typedef std::map<ACE_CString, CORBA::UShort> Last_Iteration_Table;
+ Last_Iteration_Table last_iters_;
+
+ void
+ check_received_samples ();
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Keyed_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl
new file mode 100644
index 00000000000..4fab21b4c1c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_KEYED_TEST_SENDER_IDL
+#define DDS_KEYED_TEST_SENDER_IDL
+
+#include "Connector/Keyed_Test_Connector.idl"
+
+module Keyed_Test
+{
+ component Sender
+ {
+ port CCM_DDS::KeyedTest::DDS_Write info_write;
+ attribute unsigned long rate;
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc
new file mode 100644
index 00000000000..ba7ec3f4b2a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Keyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Keyed_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Keyed_Test_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Keyed_Test_Sender.idl
+ }
+}
+
+project(DDS_Keyed_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Keyed_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Keyed_Test_SenderE.idl
+ }
+}
+
+project(DDS_Keyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Keyed_Test_Sender_lem_gen DDS_Keyed_Test_Sender_stub DDS_Keyed_Test_Base_stub
+ libs += DDS_Keyed_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_SenderEC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Keyed_Test_Sender_idl_gen DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub
+ libs += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_SenderC.inl
+ }
+}
+
+project(DDS_Keyed_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Keyed_Test_Sender_lem_stub DDS_Keyed_Test_Sender_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Connector_lem_stub DDS_Keyed_Test_Connector_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Keyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Keyed_Test_Base_stub DDS_Keyed_Test_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_Keyed_Test_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Keyed_Test_Connector_stub DDS_Keyed_Test_Connector_svnt DDS_Keyed_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Keyed_Test_SenderS.cpp
+ Keyed_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Keyed_Test_SenderS.h
+ Keyed_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Keyed_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..ab690178770
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.cpp
@@ -0,0 +1,202 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Keyed_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Keyed_Test_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if (this->last_key != this->ktests_.end ())
+ {
+ try
+ {
+ ++this->last_key->second->iteration;
+ this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"),
+ this->last_key->first.c_str (),
+ this->last_key->second->iteration));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Internal Error while writing KeyedTest info for <%C>.\n",
+ this->last_key->first.c_str ()));
+ }
+ ++this->last_key;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key = this->ktests_.begin ();
+ while (this->last_key != this->ktests_.end ())
+ {
+ if (this->last_key->second->iteration == this->iterations_)
+ {
+ ++this->last_key;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ ::CORBA::ULong
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::ULong rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Keyed_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ KeyedTest *new_key = new KeyedTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->ktests_[key] = new_key;
+ }
+ this->last_key = this->ktests_.begin ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Keyed_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h
new file mode 100644
index 00000000000..4c519576bd7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/Sender/Keyed_Test_Sender_exec.h
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Keyed_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Keyed_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::ULong rate (void);
+
+ virtual void rate (::CORBA::ULong rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ CCM_DDS::KeyedTest::Writer_var writer_;
+
+ pulse_Generator * ticker_;
+ ::Keyed_Test::CCM_Sender_Context_var context_;
+ CORBA::ULong rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, KeyedTest_var> Keyed_Test_Table;
+ Keyed_Test_Table ktests_;
+ Keyed_Test_Table::iterator last_key;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Keyed_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp
new file mode 100644
index 00000000000..1b0f0ce9d95
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/Plan.cdp
@@ -0,0 +1,431 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Keyed_Test_Depl_1</label>
+ <UUID>Keyed_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Keyed_Test_ConnectorComponentImplementation">
+ <name>Keyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Keyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Keyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Keyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Keyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Keyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Keyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Keyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>10</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>9</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Keyed_Test_ConnectorComponentInstance">
+ <name>Keyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Keyed_Test_ConnectorComponentInstance2">
+ <name>Keyed_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Keyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Keyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>1</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>9</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_rawlistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Keyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Keyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Keyed_Test_Connector_ExecArtifact">
+ <name>Keyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Keyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Keyed_Test_Connector_SvntArtifact">
+ <name>Keyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Keyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Keyed_Test_Connector_StubArtifact">
+ <name>Keyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Keyed_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl
new file mode 100755
index 00000000000..3ca8a0ee149
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedSamples/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl
new file mode 100644
index 00000000000..882902a3e65
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file Writer_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_BASE_IDL
+#define WRITER_BASE_IDL
+
+#pragma ndds typesupport "Base/Writer_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "WriterTest"
+#pragma DCPS_DATA_KEY "WriterTest key"
+
+struct WriterTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<WriterTest> WriterTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc
new file mode 100644
index 00000000000..9c3fcac7283
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Base/Writer_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_KeyedWriterBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_KeyedWriterBase_stub
+ dynamicflags += WRITER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=WRITER_BASE_STUB_Export \
+ -Wb,stub_export_include=Writer_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Writer_Base.idl
+ }
+
+ opendds_ts_flags += --export=WRITER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Writer_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl
new file mode 100644
index 00000000000..a5894738606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Writer_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_CONNECTOR_IDL_
+#define WRITER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Writer_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Writer_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::WriterTest, ::WriterTestSeq> WriterTest;
+};
+
+module Writer
+{
+ connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Writer_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc
new file mode 100644
index 00000000000..69710098f04
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Connector/Writer_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_KeyedWriterBase -l .. -o ../lib -u DDS Writer_Connector"
+
+project(DDS_KeyedWriterConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_stub_export.h \
+ -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Writer_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Writer_Connector_svnt_export.h \
+ -Wb,conn_export_macro=WRITER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Writer_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Connector.idl
+ }
+}
+
+project(DDS_KeyedWriterConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_KeyedWriterConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Writer_ConnectorE.idl
+ }
+}
+
+project(DDS_KeyedWriterConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_KeyedWriterConnector_lem_gen DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub DDS4CCM_lem_stub
+ libs += DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_KeyedWriterConnector_lem_stub
+ dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorEC.h
+ Writer_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorEC.inl
+ }
+}
+
+project(DDS_KeyedWriterConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_KeyedWriterConnector_idl_gen DDS_KeyedWriterBase_stub
+ libs += DDS_KeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_KeyedWriterConnector_stub
+ dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorC.h
+ Writer_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorC.inl
+ }
+}
+
+project(DDS_KeyedWriterConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub DDS_KeyedWriterBase_stub
+ sharedname = DDS_KeyedWriterConnector_exec
+ libs += DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterBase_stub DDS4CCM_lem_stub DDS_KeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Writer_Connector_conn.h
+ Writer_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_KeyedWriterConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_exec DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_KeyedWriterConnector_svnt
+ libs += DDS_KeyedWriterConnector_stub \
+ DDS_KeyedWriterConnector_lem_stub \
+ DDS_KeyedWriterBase_stub \
+ DDS_KeyedWriterConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorS.cpp
+ Writer_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorS.h
+ Writer_Connector_svnt.h
+ Writer_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README
new file mode 100644
index 00000000000..2e2e55625dd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/README
@@ -0,0 +1,12 @@
+# $Id$
+
+KeyedWriter tests the DDS_Writer. It tests write_one
+and write_many, in combination with register_instance.
+
+In descriptors/USER_QOS_PROFILE.xml, max_instances is
+set to one. An exception should be thrown when the second
+instance is registered. Every subsequent write of
+unregistered keys, should result in an error.
+
+When invoking write_many, writing the first sample should succeed.
+Writing every subsequent sample should fail.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl
new file mode 100644
index 00000000000..959d6ded63e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Receiver
+ {
+ port CCM_DDS::WriterTest::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc
new file mode 100644
index 00000000000..e26c2300be0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_KeyedWriterReceiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_KeyedWriterConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Writer_Receiver.idl
+ }
+}
+
+project(DDS_KeyedWriterReceiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_KeyedWriterReceiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Writer_ReceiverE.idl
+ }
+}
+
+project(DDS_KeyedWriterReceiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_KeyedWriterReceiver_lem_gen DDS_KeyedWriterReceiver_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub
+ libs += Receiver_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverEC.inl
+ }
+}
+
+project(DDS_KeyedWriterReceiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_KeyedWriterReceiver_idl_gen DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_lem_gen
+ libs += DDS_KeyedWriterConnector_stub DDS_KeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverC.inl
+ }
+}
+
+project(DDS_KeyedWriterReceiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_KeyedWriterReceiver_lem_stub DDS_KeyedWriterReceiver_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_KeyedWriterReceiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_KeyedWriterReceiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterReceiver_exec DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt Receiver_exec DDS_KeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverS.cpp
+ Writer_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverS.h
+ Writer_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp
new file mode 100644
index 00000000000..cae3ee568e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.cpp
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Writer_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ //============================================================
+ // WriterTest_Listener_exec_i
+ //============================================================
+ WriterTest_Listener_exec_i::WriterTest_Listener_exec_i ()
+ {
+ }
+
+ WriterTest_Listener_exec_i::~WriterTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ WriterTest_Listener_exec_i::on_one_data (
+ const WriterTest & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+
+ void
+ WriterTest_Listener_exec_i::on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ for (unsigned int i = 0; i < an_instance.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("WriterTest_Listener: ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ }
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new WriterTest RAW listener\n")));
+ return new WriterTest_Listener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h
new file mode 100644
index 00000000000..a6dd0077a1c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Receiver/Writer_Receiver_exec.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Writer_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ //============================================================
+ // WriterTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export WriterTest_Listener_exec_i
+ : public virtual ::CCM_DDS::WriterTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ WriterTest_Listener_exec_i ();
+ virtual ~WriterTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const WriterTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ virtual ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Writer::CCM_Receiver_Context_var context_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl
new file mode 100644
index 00000000000..eebc31419e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_KEYED_TEST_SENDER_IDL
+#define DDS_KEYED_TEST_SENDER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Sender
+ {
+ port CCM_DDS::WriterTest::DDS_Write info_write;
+ attribute unsigned short rate;
+ attribute unsigned short iterations;
+ attribute unsigned short keys;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc
new file mode 100644
index 00000000000..66be0dfb9a9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_KeyedWriterBase -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_KeyedWriterSender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_KeyedWriterConnector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Sender.idl
+ }
+}
+
+project(DDS_KeyedWriterSender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_KeyedWriterSender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Writer_SenderE.idl
+ }
+}
+
+project(DDS_KeyedWriterSender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_KeyedWriterSender_lem_gen DDS_KeyedWriterSender_stub DDS_KeyedWriterBase_stub
+ libs += DDS_KeyedWriterBase_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderEC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderEC.inl
+ }
+}
+
+project(DDS_KeyedWriterSender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_KeyedWriterSender_idl_gen DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub
+ libs += DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderC.inl
+ }
+}
+
+project(DDS_KeyedWriterSender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_KeyedWriterSender_lem_stub DDS_KeyedWriterSender_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_KeyedWriterBase_stub DDS_KeyedWriterConnector_lem_stub DDS_KeyedWriterConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_KeyedWriterSender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_KeyedWriterBase_stub DDS_KeyedWriterSender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterConnector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_KeyedWriterBase_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_KeyedWriterConnector_stub DDS_KeyedWriterConnector_svnt DDS_KeyedWriterConnector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderS.cpp
+ Writer_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_SenderS.h
+ Writer_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp
new file mode 100644
index 00000000000..091f299e2af
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.cpp
@@ -0,0 +1,368 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Writer_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Writer_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iterations_ (10),
+ keys_ (5),
+ assignment_ (WRITE_KEYED),
+ last_iteration_ (0)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::reset_iterations ()
+ {
+ for (Writer_Table::iterator i = this->ktests_.begin ();
+ i != this->ktests_.end ();
+ ++i)
+ {
+ i->second->iteration = 0;
+ }
+ }
+
+ void
+ Sender_exec_i::unregister_handles ()
+ {
+ for (Writer_Table::iterator i = this->ktests_.begin ();
+ i != this->ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ ::DDS::InstanceHandle_t hnd = this->handles_[i->first.c_str ()];
+ this->writer_->unregister_instance (i->second, hnd);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Unregistered <%C> - iteration <%d> - valid handle <%d>\n"),
+ i->first.c_str (),
+ i->second->iteration,
+ hnd.isValid));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("unknown exception caught during unregister_instance.\n")));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::register_handles()
+ {
+ Writer_Table::iterator i = this->ktests_.begin ();
+ ::DDS::InstanceHandle_t hnd = this->writer_->register_instance (i->second);
+ if (!hnd.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to register handle for <%C> - iteration <%d>\n"),
+ i->first.c_str (), i->second->iteration));
+ }
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Registering instance with <%C> - iteration <%d> - valid handle <%d>\n"),
+ i->second->key.in (),
+ i->second->iteration,
+ hnd.isValid));
+ this->handles_[i->first.c_str ()] = hnd;
+ ++i;
+ //test exception. In Qos, max_instances is set to 1
+ //so only one instance may be registered.
+ hnd = this->writer_->register_instance (i->second);
+ if (hnd.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Shouldn't be able to register instance for <%C> - iteration <%d>\n"),
+ i->first.c_str (), i->second->iteration));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Registering second key not succeeded.\n"),
+ i->first.c_str (), i->second->iteration));
+ }
+ }
+
+ void
+ Sender_exec_i::start_new_assignment (WRITER_ASSIGNMENT assignment)
+ {
+ this->last_key_ = this->ktests_.begin ();
+ this->assignment_ = assignment;
+ reset_iterations ();
+ }
+
+ void
+ Sender_exec_i::write_keyed ()
+ {
+ if (this->last_key_ != this->ktests_.end ())
+ {
+ bool exception_caught = false;
+ try
+ {
+ ++this->last_key_->second->iteration;
+ ::DDS::InstanceHandle_t hnd = this->handles_[this->last_key_->first.c_str ()];
+ this->writer_->write_one (this->last_key_->second, hnd);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written keyed <%C> - iteration <%d> - valid handle <%d>\n"),
+ this->last_key_->first.c_str (),
+ this->last_key_->second->iteration,
+ hnd.isValid));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ exception_caught = true;
+ if (this->last_key_ == this->ktests_.begin ())
+ { // the first key should throw this exception; all others
+ // shouldn't
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key_->first.c_str ()));
+ }
+ }
+ //only the first iterations are registered.
+ if (this->last_key_ != this->ktests_.begin () && !exception_caught)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: No exception caught ")
+ ACE_TEXT ("while writing unregistered data\n")));
+ }
+ ++this->last_key_;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key_ = this->ktests_.begin ();
+ while (this->last_key_ != this->ktests_.end ())
+ {
+ if (this->last_key_->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key_;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key_ == this->ktests_.end ())
+ {
+ unregister_handles ();
+ start_new_assignment (WRITE_MULTI);
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::write_many ()
+ {
+ bool expected_exception_thrown = false;
+
+ WriterTestSeq write_many_seq;
+ write_many_seq.length (this->keys_ * this->iterations_);
+ int iter_key = 0;
+ for (Writer_Table::iterator iter = this->ktests_.begin ();
+ iter != this->ktests_.end ();
+ ++iter)
+ {
+ ++iter_key;
+ for (int i = 1; i < this->iterations_ + 1; ++i)
+ {
+ char key[7];
+ WriterTest new_key;
+ ACE_OS::sprintf (key, "KEY_%d", iter_key);
+ new_key.key = CORBA::string_dup(key);
+ new_key.iteration = i;
+ write_many_seq[iter_key + i - 2] = new_key;
+ }
+ }
+ try
+ {
+ this->writer_->write_many (write_many_seq);
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ if (ex.index == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal excep ")
+ ACE_TEXT ("while write many for first instance : index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ }
+ else
+ {
+ expected_exception_thrown = true;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected Internal excep ")
+ ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ }
+ }
+ if (!expected_exception_thrown)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Expected Internal excep ")
+ ACE_TEXT ("was not thrown\n")));
+ }
+
+ this->assignment_ = WRITE_NONE;
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ switch (this->assignment_)
+ {
+ case WRITE_KEYED:
+ write_keyed ();
+ break;
+ case WRITE_MULTI:
+ write_many ();
+ default:
+ break;
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::UShort rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations + 2; //for extra tests.
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys + 1; //for extra tests.
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ WriterTest *new_key = new WriterTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 1;
+
+ this->ktests_[key] = new_key;
+ }
+ this->last_key_ = this->ktests_.begin ();
+ register_handles ();
+ reset_iterations ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h
new file mode 100644
index 00000000000..d3dc204e318
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/Sender/Writer_Sender_exec.h
@@ -0,0 +1,116 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Writer_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Writer_Sender_Impl
+{
+ class Sender_exec_i;
+
+ enum WRITER_ASSIGNMENT {
+ WRITE_NONE,
+ WRITE_KEYED,
+ WRITE_MULTI
+ };
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort rate (void);
+
+ virtual void rate (::CORBA::UShort rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ CCM_DDS::WriterTest::Writer_var writer_;
+
+ pulse_Generator * ticker_;
+ ::Writer::CCM_Sender_Context_var context_;
+ CORBA::UShort rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ WRITER_ASSIGNMENT assignment_;
+ CORBA::Long last_iteration_;
+
+ void reset_iterations ();
+ void register_handles ();
+ void unregister_handles ();
+ void start_new_assignment (
+ WRITER_ASSIGNMENT assignment);
+ void write_keyed ();
+ void write_many ();
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, WriterTest_var> Writer_Table;
+ Writer_Table ktests_;
+
+ typedef std::map<ACE_CString, ::DDS::InstanceHandle_t> Writer_Table_Handles;
+ Writer_Table_Handles handles_;
+
+ Writer_Table::iterator last_key_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..f89eafe9e25
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/Plan.cdp
@@ -0,0 +1,383 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>KeyedWriter_Depl_1</label>
+ <UUID>KeyedWriter_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Writer_ConnectorComponentImplementation">
+ <name>Writer_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Writer_Connector_ExecArtifact" />
+ <artifact xmi:idref="Writer_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance">
+ <name>Writer_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>KeyedWriter</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>KeyedWriter_Library#KeyedWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance2">
+ <name>Writer_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>KeyedWriter</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>KeyedWriter_Library#KeyedWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>3</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>2</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_datacontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_ExecArtifact">
+ <name>Writer_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_KeyedWriterConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_SvntArtifact">
+ <name>Writer_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_KeyedWriterConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_StubArtifact">
+ <name>Writer_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_KeyedWriterConnector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..2cf94303049
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="KeyedWriter_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="KeyedWriter_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl
new file mode 100755
index 00000000000..3ca8a0ee149
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/KeyedWriter/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl
new file mode 100644
index 00000000000..8fe5f77064d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file LMBM_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_MANY_BY_MANY_TEST_BASE_IDL
+#define LISTEN_MANY_BY_MANY_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/LMBM_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "ListenManyByManyTest"
+#pragma DCPS_DATA_KEY "ListenManyByManyTest key"
+
+struct ListenManyByManyTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<ListenManyByManyTest> ListenManyByManyTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc
new file mode 100755
index 00000000000..ffb29178624
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Base/LMBM_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_LMBM_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_LMBM_Test_Base_stub
+ dynamicflags += LISTEN_MANY_BY_MANY_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=LMBM_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ LMBM_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=LISTEN_MANY_BY_MANY_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ LMBM_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl
new file mode 100644
index 00000000000..e92d52e46c0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file LMBM_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_MANY_BY_MANY_TEST_CONNECTOR_IDL_
+#define LISTEN_MANY_BY_MANY_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/LMBM_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/LMBM_Test_ConnectorE.idl"
+
+module LMBM_Test
+{
+ module ::CCM_DDS::Typed
+ < ::ListenManyByManyTest, ::ListenManyByManyTestSeq>
+ ListenManyByManyTestConn;
+ connector LMBM_Test_Connector : ListenManyByManyTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* LMBM_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc
new file mode 100755
index 00000000000..bd0e8ad78fd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Connector/LMBM_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LMBM_Test_Base -l .. -o ../lib -u DDS LMBM_Test_Connector"
+
+project(DDS_LMBM_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=LMBM_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=LMBM_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=LMBM_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=LMBM_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ LMBM_Test_Connector.idl
+ }
+}
+
+project(DDS_LMBM_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LMBM_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=LISTEN_MANY_BY_MANY_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=LMBM_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ LMBM_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_LMBM_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LMBM_Test_Connector_lem_gen DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LMBM_Test_Connector_lem_stub
+ dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ConnectorEC.h
+ LMBM_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LMBM_Test_Connector_idl_gen DDS_LMBM_Test_Base_stub
+ libs += DDS_LMBM_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LMBM_Test_Connector_stub
+ dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ConnectorC.h
+ LMBM_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub DDS_LMBM_Test_Base_stub
+ sharedname = DDS_LMBM_Test_Connector_exec
+ libs += DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub DDS_LMBM_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_Connector_conn.h
+ LMBM_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LMBM_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_exec DDS_LMBM_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_LMBM_Test_Connector_svnt
+ libs += DDS_LMBM_Test_Connector_stub \
+ DDS_LMBM_Test_Connector_lem_stub \
+ DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_MANY_BY_MANY_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ConnectorS.cpp
+ LMBM_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ConnectorS.h
+ LMBM_Test_Connector_svnt.h
+ LMBM_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README
new file mode 100644
index 00000000000..f622af6a71d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/README
@@ -0,0 +1,3 @@
+# $Id$
+
+This test tests the listener. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl
new file mode 100644
index 00000000000..71f1f8ed89d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/LMBM_Test_Connector.idl"
+
+module LMBM_Test
+{
+ component Receiver
+ {
+ port ListenManyByManyTestConn::DDS_Listen info_listen;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc
new file mode 100755
index 00000000000..525a82ca292
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_LMBM_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LMBM_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ LMBM_Test_Receiver.idl
+ }
+}
+
+project(DDS_LMBM_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LMBM_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ LMBM_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_LMBM_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LMBM_Test_Receiver_lem_gen DDS_LMBM_Test_Receiver_stub \
+ DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub
+ libs += Receiver_stub DDS_LMBM_Test_Connector_stub \
+ DDS_LMBM_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LMBM_Test_Receiver_idl_gen DDS_LMBM_Test_Connector_stub \
+ DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_lem_gen
+ libs += DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Receiver_stub \
+ DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub \
+ DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LMBM_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \
+ DDS_LMBM_Test_Receiver_exec DDS_LMBM_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \
+ Receiver_exec DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_ReceiverS.cpp
+ LMBM_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_ReceiverS.h
+ LMBM_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..5c87ba07158
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp
@@ -0,0 +1,221 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "LMBM_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_LMBM_Test_Receiver_Impl
+{
+ //============================================================
+ // ListenManyByManyTest_Listener_exec_i
+ //============================================================
+ ListenManyByManyTest_Listener_exec_i::ListenManyByManyTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many)
+ : received_one_by_one_ (received_one_by_one),
+ received_many_by_many_ (received_many_by_many)
+ {
+ }
+
+ ListenManyByManyTest_Listener_exec_i::~ListenManyByManyTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ListenManyByManyTest_Listener_exec_i::on_one_data (
+ const ListenManyByManyTest & /*an_instance*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ //just count; this value is checked on ccm_remove.
+ ++this->received_one_by_one_;
+ }
+
+ void
+ ListenManyByManyTest_Listener_exec_i::on_many_data (
+ const ListenManyByManyTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info)
+ {
+ if (an_instance.length () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:"
+ "instance sequence length is nil\n"));
+ return;
+ }
+ for (CORBA::ULong i = 0 ; i < info.length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ListenManyByManyTest_Listener_exec_i::on_many_data:"
+ "key <%C> - iteration <%d>\n",
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ if (!info[i].instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:"
+ "instance handle %d seems to be invalid"
+ "key <%C> - iteration <%d>\n",
+ i,
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ }
+ if (info[i].source_timestamp.sec == 0 &&
+ info[i].source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_one_data: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ }
+ }
+ this->received_many_by_many_ += an_instance.length ();
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : received_one_by_one_ (0),
+ received_many_by_many_ (0),
+ iterations_ (10),
+ keys_ (5)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::MANY_BY_MANY);
+ }
+
+ ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new ListenManyByManyTest_Listener_exec_i (
+ this->received_one_by_one_,
+ this->received_many_by_many_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_listen_connector_status (void)
+ {
+ return::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LMBM_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ start ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CORBA::ULong expected = this->keys_ * this->iterations_;
+ if (this->received_many_by_many_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: "
+ "Didn't receive samples on many_by_many "
+ "callback while mode is MANY_BY_MANY "
+ "expected <%u> - received <%u>\n",
+ expected,
+ this->received_many_by_many_.value ()));
+ }
+ else if (expected != this->received_many_by_many_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: "
+ "Didn't receive the expected "
+ "number of samples on many_by_many "
+ "callback while mode is MANY_BY_MANY "
+ "expected <%u> - received <%u>\n",
+ expected,
+ this->received_many_by_many_.value ()));
+ }
+ if (this->received_one_by_one_.value () > 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: "
+ "Received samples on one_by_one "
+ "callback while mode is MANY_BY_MANY "
+ "expected <0> - received <%u>\n",
+ this->received_one_by_one_.value ()));
+ }
+ if (this->received_one_by_one_.value () == 0 &&
+ this->received_many_by_many_.value () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "MANY_BY_MANY: "
+ "Received only data on "
+ "many_by_many callback. "
+ "Test passed!\n"));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LMBM_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h
new file mode 100644
index 00000000000..07b9175734a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h
@@ -0,0 +1,104 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "LMBM_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_LMBM_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> Atomic_Bool;
+
+ //============================================================
+ // ListenManyByManyTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ListenManyByManyTest_Listener_exec_i
+ : public virtual ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ListenManyByManyTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many);
+ virtual ~ListenManyByManyTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ListenManyByManyTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ListenManyByManyTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_one_by_one_;
+ Atomic_ULong &received_many_by_many_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_listen_connector_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::LMBM_Test::CCM_Receiver_Context_var context_;
+
+ Atomic_ULong received_one_by_one_;
+ Atomic_ULong received_many_by_many_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LMBM_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl
new file mode 100644
index 00000000000..38fc751dc0b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_LISTEN_MANY_BY_MANY_TEST_SENDER_IDL
+#define DDS_LISTEN_MANY_BY_MANY_TEST_SENDER_IDL
+
+#include "Connector/LMBM_Test_Connector.idl"
+
+module LMBM_Test
+{
+ component Sender
+ {
+ port ListenManyByManyTestConn::DDS_Write info_write;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc
new file mode 100755
index 00000000000..a83b428a029
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LMBM_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_LMBM_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_LMBM_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ LMBM_Test_Sender.idl
+ }
+}
+
+project(DDS_LMBM_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LMBM_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ LMBM_Test_SenderE.idl
+ }
+}
+
+project(DDS_LMBM_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LMBM_Test_Sender_lem_gen DDS_LMBM_Test_Sender_stub \
+ DDS_LMBM_Test_Base_stub
+ libs += DDS_LMBM_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_SenderEC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LMBM_Test_Sender_idl_gen DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_stub
+ libs += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_SenderC.inl
+ }
+}
+
+project(DDS_LMBM_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LMBM_Test_Sender_lem_stub DDS_LMBM_Test_Sender_stub \
+ DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_LMBM_Test_Base_stub \
+ DDS_LMBM_Test_Connector_lem_stub DDS_LMBM_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LMBM_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_LMBM_Test_Connector_stub \
+ DDS_LMBM_Test_Connector_svnt DDS_LMBM_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_LMBM_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \
+ DDS_LMBM_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LMBM_Test_SenderS.cpp
+ LMBM_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ LMBM_Test_SenderS.h
+ LMBM_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ LMBM_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..4e712e29294
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.cpp
@@ -0,0 +1,217 @@
+// -*- C++ -*-
+// $Id$
+
+#include "LMBM_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "ace/Date_Time.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_LMBM_Test_Sender_Impl
+{
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.write_one ();
+ return 0;
+ }
+
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteManyHandler::WriteManyHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteManyHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.write_one ();
+ return 0;
+ }
+
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new WriteTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write_one (void)
+ {
+ if (this->last_key_ != this->samples_.end ())
+ {
+ try
+ {
+ ++this->last_key_->second->iteration;
+ this->writer_->write_one (this->last_key_->second,
+ ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Written key <%C> - <%u>\n",
+ this->last_key_->first.c_str (),
+ this->last_key_->second->iteration));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key_->first.c_str ()));
+ }
+ ++this->last_key_;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key_ = this->samples_.begin ();
+ while (this->last_key_ != this->samples_.end ())
+ {
+ if (this->last_key_->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key_;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key_ == this->samples_.end ())
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+ }
+
+
+ void
+ Sender_exec_i::start (void)
+ {
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ ListenManyByManyTest *new_key = new ListenManyByManyTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->samples_[key] = new_key;
+ }
+ this->last_key_ = this->samples_.begin ();
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 50000),
+ ACE_Time_Value (0, 50000)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LMBM_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LMBM_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h
new file mode 100644
index 00000000000..82b86350114
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Sender/LMBM_Test_Sender_exec.h
@@ -0,0 +1,98 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "LMBM_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_LMBM_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ class WriteManyHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteManyHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void write_one (void);
+
+ private:
+ ::LMBM_Test::CCM_Sender_Context_var context_;
+ ::LMBM_Test::ListenManyByManyTestConn::Writer_var writer_;
+
+ WriteTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, ListenManyByManyTest_var> Writer_Table;
+ Writer_Table samples_;
+
+ Writer_Table::iterator last_key_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LMBM_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp
new file mode 100644
index 00000000000..b8323b7fe93
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/Plan.cdp
@@ -0,0 +1,394 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>LMBM_Test_Depl_1</label>
+ <UUID>LMBM_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="LMBM_Test_ConnectorComponentImplementation">
+ <name>LMBM_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LMBM_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="LMBM_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_LMBM_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_LMBM_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LMBM_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LMBM_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LMBM_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="LMBM_Test_ConnectorComponentInstance">
+ <name>LMBM_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LMBM_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ListenManyByMany_Library#ListenManyByMany_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LMBM_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="LMBM_Test_ConnectorComponentInstance2">
+ <name>LMBM_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LMBM_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ListenManyByMany_Library#ListenManyByMany_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LMBM_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LMBM_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LMBM_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LMBM_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="LMBM_Test_Connector_ExecArtifact">
+ <name>LMBM_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LMBM_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LMBM_Test_Connector_SvntArtifact">
+ <name>LMBM_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LMBM_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LMBM_Test_Connector_StubArtifact">
+ <name>LMBM_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LMBM_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..13300496572
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="ListenManyByMany_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="ListenManyByMany_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl
new file mode 100755
index 00000000000..ddeee753cf7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl
new file mode 100644
index 00000000000..7baa8318a0b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file LNE_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_NOT_ENABLED_TEST_BASE_IDL
+#define LISTEN_NOT_ENABLED_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/LNE_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "ListenNotEnabledTest"
+#pragma DCPS_DATA_KEY "ListenNotEnabledTest key"
+
+struct ListenNotEnabledTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<ListenNotEnabledTest> ListenNotEnabledTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc
new file mode 100755
index 00000000000..12bbf8ff16d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Base/LNE_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_LNE_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_LNE_Test_Base_stub
+ dynamicflags += LISTEN_NOT_ENABLED_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=LNE_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ LNE_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=LISTEN_NOT_ENABLED_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ LNE_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl
new file mode 100644
index 00000000000..ca42ae7c2c4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file LNE_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_NOT_ENABLED_TEST_CONNECTOR_IDL_
+#define LISTEN_NOT_ENABLED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/LNE_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/LNE_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::ListenNotEnabledTest, ::ListenNotEnabledTestSeq> ListenNotEnabledTest;
+};
+
+module LNE_Test
+{
+ connector LNE_Test_Connector : ::CCM_DDS::ListenNotEnabledTest::DDS_Event
+ {
+ };
+};
+
+#endif /* LNE_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc
new file mode 100755
index 00000000000..e9da9237f41
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Connector/LNE_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LNE_Test_Base -l .. -o ../lib -u DDS LNE_Test_Connector"
+
+project(DDS_LNE_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=LNE_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=LNE_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=LNE_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=LNE_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ LNE_Test_Connector.idl
+ }
+}
+
+project(DDS_LNE_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LNE_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=LISTEN_NOT_ENABLED_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=LNE_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ LNE_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_LNE_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LNE_Test_Connector_lem_gen DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LNE_Test_Connector_lem_stub
+ dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ConnectorEC.h
+ LNE_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_LNE_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LNE_Test_Connector_idl_gen DDS_LNE_Test_Base_stub
+ libs += DDS_LNE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LNE_Test_Connector_stub
+ dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ConnectorC.h
+ LNE_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_LNE_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub DDS_LNE_Test_Base_stub
+ sharedname = DDS_LNE_Test_Connector_exec
+ libs += DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub DDS_LNE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ LNE_Test_Connector_conn.h
+ LNE_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LNE_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_exec DDS_LNE_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_LNE_Test_Connector_svnt
+ libs += DDS_LNE_Test_Connector_stub \
+ DDS_LNE_Test_Connector_lem_stub \
+ DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_NOT_ENABLED_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ConnectorS.cpp
+ LNE_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ConnectorS.h
+ LNE_Test_Connector_svnt.h
+ LNE_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README
new file mode 100644
index 00000000000..f622af6a71d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/README
@@ -0,0 +1,3 @@
+# $Id$
+
+This test tests the listener. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl
new file mode 100644
index 00000000000..dcc35279c4b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/LNE_Test_Connector.idl"
+
+module LNE_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::ListenNotEnabledTest::DDS_Listen info_listen;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc
new file mode 100755
index 00000000000..7cdc3ba7d08
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_LNE_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LNE_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ LNE_Test_Receiver.idl
+ }
+}
+
+project(DDS_LNE_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LNE_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ LNE_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_LNE_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LNE_Test_Receiver_lem_gen DDS_LNE_Test_Receiver_stub \
+ DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub
+ libs += Receiver_stub DDS_LNE_Test_Connector_stub \
+ DDS_LNE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_LNE_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LNE_Test_Receiver_idl_gen DDS_LNE_Test_Connector_stub \
+ DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_lem_gen
+ libs += DDS_LNE_Test_Connector_stub DDS_LNE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_LNE_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LNE_Test_Receiver_lem_stub DDS_LNE_Test_Receiver_stub \
+ DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub \
+ DDS_LNE_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ LNE_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LNE_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LNE_Test_Receiver_lem_stub DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \
+ DDS_LNE_Test_Receiver_exec DDS_LNE_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \
+ Receiver_exec DDS_LNE_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_ReceiverS.cpp
+ LNE_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ LNE_Test_ReceiverS.h
+ LNE_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..b947842ccca
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.cpp
@@ -0,0 +1,146 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "LNE_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_LNE_Test_Receiver_Impl
+{
+ //============================================================
+ // ListenNotEnabledTest_Listener_exec_i
+ //============================================================
+ ListenNotEnabledTest_Listener_exec_i::ListenNotEnabledTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many)
+ : received_one_by_one_ (received_one_by_one),
+ received_many_by_many_ (received_many_by_many)
+ {
+ }
+
+ ListenNotEnabledTest_Listener_exec_i::~ListenNotEnabledTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ListenNotEnabledTest_Listener_exec_i::on_one_data (
+ const ListenNotEnabledTest & /*an_instance*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ //just count; this value is checked on ccm_remove.
+ ++this->received_one_by_one_;
+ }
+
+ void
+ ListenNotEnabledTest_Listener_exec_i::on_many_data (
+ const ListenNotEnabledTestSeq & /*an_instance*/,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ //just count; this value is checked on ccm_remove.
+ ++this->received_many_by_many_;
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : received_one_by_one_ (0),
+ received_many_by_many_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::ListenNotEnabledTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new ListenNotEnabledTest_Listener_exec_i (
+ this->received_one_by_one_,
+ this->received_many_by_many_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_listen_connector_status (void)
+ {
+ return ::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LNE_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::NOT_ENABLED);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->received_one_by_one_.value () > 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: NOT ENABLED: "
+ "Received samples on one_by_one "
+ "callback while mode is NOT_ENABLED "
+ "expected <0> - received <%u>\n",
+ this->received_one_by_one_.value ()));
+ }
+ if (this->received_many_by_many_.value () > 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: NOT ENABLED: "
+ "Received samples on many_by_many "
+ "callback while mode is NOT_ENABLED "
+ "expected <0> - received <%u>\n",
+ this->received_many_by_many_.value ()));
+ }
+ if (this->received_one_by_one_.value () == 0 &&
+ this->received_many_by_many_.value () == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NOT ENABLED: "
+ "Received no data at all."
+ "Test passed!\n"));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LNE_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h
new file mode 100644
index 00000000000..a3fc938ccaf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Receiver/LNE_Test_Receiver_exec.h
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "LNE_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_LNE_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+
+ //============================================================
+ // ListenNotEnabledTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ListenNotEnabledTest_Listener_exec_i
+ : public virtual ::CCM_DDS::ListenNotEnabledTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ListenNotEnabledTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many);
+ virtual ~ListenNotEnabledTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ListenNotEnabledTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ListenNotEnabledTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_one_by_one_;
+ Atomic_ULong &received_many_by_many_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ virtual ::CCM_DDS::ListenNotEnabledTest::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_listen_connector_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::LNE_Test::CCM_Receiver_Context_var context_;
+
+ Atomic_ULong received_one_by_one_;
+ Atomic_ULong received_many_by_many_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LNE_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl
new file mode 100644
index 00000000000..a090fab06a4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_LISTEN_NOT_ENABLED_TEST_SENDER_IDL
+#define DDS_LISTEN_NOT_ENABLED_TEST_SENDER_IDL
+
+#include "Connector/LNE_Test_Connector.idl"
+
+module LNE_Test
+{
+ component Sender
+ {
+ port CCM_DDS::ListenNotEnabledTest::DDS_Write info_write;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc
new file mode 100755
index 00000000000..bc9340eac60
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LNE_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_LNE_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_LNE_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ LNE_Test_Sender.idl
+ }
+}
+
+project(DDS_LNE_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LNE_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ LNE_Test_SenderE.idl
+ }
+}
+
+project(DDS_LNE_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LNE_Test_Sender_lem_gen DDS_LNE_Test_Sender_stub \
+ DDS_LNE_Test_Base_stub
+ libs += DDS_LNE_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_SenderEC.inl
+ }
+}
+
+project(DDS_LNE_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LNE_Test_Sender_idl_gen DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_stub
+ libs += DDS_LNE_Test_Base_stub DDS_LNE_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ LNE_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_SenderC.inl
+ }
+}
+
+project(DDS_LNE_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LNE_Test_Sender_lem_stub DDS_LNE_Test_Sender_stub \
+ DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_LNE_Test_Base_stub \
+ DDS_LNE_Test_Connector_lem_stub DDS_LNE_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ LNE_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LNE_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LNE_Test_Base_stub DDS_LNE_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_LNE_Test_Connector_stub \
+ DDS_LNE_Test_Connector_svnt DDS_LNE_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_LNE_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_LNE_Test_Connector_stub DDS_LNE_Test_Connector_svnt \
+ DDS_LNE_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LNE_Test_SenderS.cpp
+ LNE_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ LNE_Test_SenderS.h
+ LNE_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ LNE_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..5336eb191b5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.cpp
@@ -0,0 +1,165 @@
+// -*- C++ -*-
+// $Id$
+
+#include "LNE_Test_Sender_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_LNE_Test_Sender_Impl
+{
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteManyHandler::WriteManyHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteManyHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.write_many ();
+ return 0;
+ }
+
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write_many (void)
+ {
+ ListenNotEnabledTestSeq write_many;
+ write_many.length (this->keys_ * this->iterations_);
+ for (CORBA::UShort key = 1; key < this->keys_ + 1; ++key)
+ {
+ ListenNotEnabledTest new_key;
+ char tmp[7];
+ ACE_OS::sprintf (tmp, "KEY_%d", key);
+ new_key.key = CORBA::string_dup(tmp);
+ for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter)
+ {
+ new_key.iteration = iter;
+ write_many[key + iter - 2] = new_key;
+ }
+ }
+ try
+ {
+ ACE_Time_Value tv (1, 0);
+ ACE_OS::sleep (tv);
+ this->writer_->write_many (write_many);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"),
+ write_many.length ()));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ }
+ }
+
+
+ void
+ Sender_exec_i::start (void)
+ {
+ WriteManyHandler *rh = new WriteManyHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LNE_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LNE_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h
new file mode 100644
index 00000000000..360525014a8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/Sender/LNE_Test_Sender_exec.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "LNE_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_LNE_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ class WriteManyHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteManyHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void write_many (void);
+
+ private:
+ ::LNE_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::ListenNotEnabledTest::Writer_var writer_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LNE_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp
new file mode 100644
index 00000000000..6676e2fa543
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/Plan.cdp
@@ -0,0 +1,350 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>LNE_Test_Depl_1</label>
+ <UUID>LNE_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="LNE_Test_ConnectorComponentImplementation">
+ <name>LNE_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LNE_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="LNE_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_LNE_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_LNE_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LNE_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LNE_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LNE_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="LNE_Test_ConnectorComponentInstance">
+ <name>LNE_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LNE_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LNE_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="LNE_Test_ConnectorComponentInstance2">
+ <name>LNE_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LNE_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LNE_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>10</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LNE_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LNE_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LNE_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="LNE_Test_Connector_ExecArtifact">
+ <name>LNE_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LNE_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LNE_Test_Connector_SvntArtifact">
+ <name>LNE_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LNE_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LNE_Test_Connector_StubArtifact">
+ <name>LNE_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LNE_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl
new file mode 100755
index 00000000000..b2a5229d554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenNotEnabled/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl
new file mode 100644
index 00000000000..337f5e315aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file LOBO_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_ONE_BY_ONE_TEST_BASE_IDL
+#define LISTEN_ONE_BY_ONE_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/LOBO_Test_BaseSupport.h"
+
+struct ListenOneByOneTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<ListenOneByOneTest> ListenOneByOneTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc
new file mode 100755
index 00000000000..63a63895730
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Base/LOBO_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_LOBO_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_LOBO_Test_Base_stub
+ dynamicflags += LISTEN_ONE_BY_ONE_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=LOBO_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ LOBO_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=LISTEN_ONE_BY_ONE_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ LOBO_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl
new file mode 100644
index 00000000000..e9d5300262c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file LOBO_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef LISTEN_ONE_BY_ONE_TEST_CONNECTOR_IDL_
+#define LISTEN_ONE_BY_ONE_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/LOBO_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/LOBO_Test_ConnectorE.idl"
+
+module LOBO_Test
+{
+ module ::CCM_DDS::Typed
+ < ::ListenOneByOneTest, ::ListenOneByOneTestSeq>
+ ListenOneByOneTestConn;
+ connector LOBO_Test_Connector : ListenOneByOneTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* LOBO_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc
new file mode 100755
index 00000000000..170148e5fbf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Connector/LOBO_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LOBO_Test_Base -l .. -o ../lib -u DDS LOBO_Test_Connector"
+
+project(DDS_LOBO_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=LOBO_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=LOBO_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=LOBO_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=LOBO_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ LOBO_Test_Connector.idl
+ }
+}
+
+project(DDS_LOBO_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LOBO_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=LISTEN_ONE_BY_ONE_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=LOBO_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ LOBO_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_LOBO_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LOBO_Test_Connector_lem_gen DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LOBO_Test_Connector_lem_stub
+ dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ConnectorEC.h
+ LOBO_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LOBO_Test_Connector_idl_gen DDS_LOBO_Test_Base_stub
+ libs += DDS_LOBO_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_LOBO_Test_Connector_stub
+ dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ConnectorC.h
+ LOBO_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub DDS_LOBO_Test_Base_stub
+ sharedname = DDS_LOBO_Test_Connector_exec
+ libs += DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub DDS_LOBO_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_Connector_conn.h
+ LOBO_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LOBO_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_exec DDS_LOBO_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_LOBO_Test_Connector_svnt
+ libs += DDS_LOBO_Test_Connector_stub \
+ DDS_LOBO_Test_Connector_lem_stub \
+ DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = LISTEN_ONE_BY_ONE_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ConnectorS.cpp
+ LOBO_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ConnectorS.h
+ LOBO_Test_Connector_svnt.h
+ LOBO_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README
new file mode 100644
index 00000000000..f622af6a71d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/README
@@ -0,0 +1,3 @@
+# $Id$
+
+This test tests the listener. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl
new file mode 100644
index 00000000000..d5b736d443f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/LOBO_Test_Connector.idl"
+
+module LOBO_Test
+{
+ component Receiver
+ {
+ port ListenOneByOneTestConn::DDS_Listen info_listen;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc
new file mode 100755
index 00000000000..e0c085aa363
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_LOBO_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_LOBO_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ LOBO_Test_Receiver.idl
+ }
+}
+
+project(DDS_LOBO_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LOBO_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ LOBO_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_LOBO_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LOBO_Test_Receiver_lem_gen DDS_LOBO_Test_Receiver_stub \
+ DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub
+ libs += Receiver_stub DDS_LOBO_Test_Connector_stub \
+ DDS_LOBO_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LOBO_Test_Receiver_idl_gen DDS_LOBO_Test_Connector_stub \
+ DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_lem_gen
+ libs += DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LOBO_Test_Receiver_lem_stub DDS_LOBO_Test_Receiver_stub \
+ DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub \
+ DDS_LOBO_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LOBO_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LOBO_Test_Receiver_lem_stub DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \
+ DDS_LOBO_Test_Receiver_exec DDS_LOBO_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \
+ Receiver_exec DDS_LOBO_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_ReceiverS.cpp
+ LOBO_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_ReceiverS.h
+ LOBO_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..cbbf0cf4a5a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.cpp
@@ -0,0 +1,262 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "LOBO_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_LOBO_Test_Receiver_Impl
+{
+ //============================================================
+ // ListenOneByOneTest_Listener_exec_i
+ //============================================================
+ ListenOneByOneTest_Listener_exec_i::ListenOneByOneTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many,
+ Atomic_ThreadId &thread_id)
+ : received_one_by_one_ (received_one_by_one),
+ received_many_by_many_ (received_many_by_many),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ListenOneByOneTest_Listener_exec_i::~ListenOneByOneTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ListenOneByOneTest_Listener_exec_i::on_one_data (
+ const ListenOneByOneTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ ACE_DEBUG ((LM_DEBUG, "ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (!info.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "instance handle seems to be invalid "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ if (info.source_timestamp.sec == 0 &&
+ info.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ ++this->received_one_by_one_;
+ }
+
+ void
+ ListenOneByOneTest_Listener_exec_i::on_many_data (
+ const ListenOneByOneTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ //just count. Is checked on ccm_remove.
+ this->received_many_by_many_ += an_instance.length ();
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : received_one_by_one_ (0),
+ received_many_by_many_ (0),
+ thread_id_listener_ (0),
+ iterations_ (10),
+ keys_ (5)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ ::LOBO_Test::ListenOneByOneTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new ListenOneByOneTest_Listener_exec_i (
+ this->received_one_by_one_,
+ this->received_many_by_many_,
+ this->thread_id_listener_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_listen_connector_status (void)
+ {
+ return ::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LOBO_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ start ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CORBA::ULong expected = this->keys_ * this->iterations_;
+ if (this->received_one_by_one_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: "
+ "Didn't receive samples on one_by_one "
+ "callback while mode is ONE_BY_ONE "
+ "expected <%u> - received <%u>\n",
+ expected,
+ this->received_one_by_one_.value ()));
+ }
+ else if (expected != this->received_one_by_one_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: "
+ "Didn't receive the expected "
+ "number of samples on one_by_one "
+ "callback while mode is ONE_BY_ONE "
+ "expected <%u> - received <%u>\n",
+ expected,
+ this->received_one_by_one_.value ()));
+ }
+ if (this->received_many_by_many_.value () > 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: "
+ "Received samples on many_by_many "
+ "callback while mode is ONE_BY_ONE "
+ "expected <0> - received <%u>\n",
+ this->received_many_by_many_.value ()));
+ }
+ if (this->received_one_by_one_.value () > 0 &&
+ this->received_many_by_many_.value () == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: "
+ "Received only data on "
+ "one_by_one callback. "
+ "Test passed!\n"));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for ReaderListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: "
+ "Thread switch for ReaderListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: "
+ "Thread switch for ReaderListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: ReaderListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: ReaderListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LOBO_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h
new file mode 100644
index 00000000000..c14608c024a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Receiver/LOBO_Test_Receiver_exec.h
@@ -0,0 +1,113 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "LOBO_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+#include <map>
+
+namespace CIAO_LOBO_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> Atomic_Bool;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // ListenOneByOneTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ListenOneByOneTest_Listener_exec_i
+ : public virtual ::LOBO_Test::ListenOneByOneTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ListenOneByOneTest_Listener_exec_i (
+ Atomic_ULong &received_one_by_one,
+ Atomic_ULong &received_many_by_many,
+ Atomic_ThreadId &thread_id);
+ virtual ~ListenOneByOneTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const ListenOneByOneTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const ListenOneByOneTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_one_by_one_;
+ Atomic_ULong &received_many_by_many_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::LOBO_Test::ListenOneByOneTestConn::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_listen_connector_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::LOBO_Test::CCM_Receiver_Context_var context_;
+
+ Atomic_ULong received_one_by_one_;
+ Atomic_ULong received_many_by_many_;
+ Atomic_ThreadId thread_id_listener_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LOBO_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl
new file mode 100644
index 00000000000..1dc822487ec
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_LISTEN_ONE_BY_ONE_TEST_SENDER_IDL
+#define DDS_LISTEN_ONE_BY_ONE_TEST_SENDER_IDL
+
+#include "Connector/LOBO_Test_Connector.idl"
+
+module LOBO_Test
+{
+ component Sender
+ {
+ port ListenOneByOneTestConn::DDS_Write info_write;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc
new file mode 100755
index 00000000000..65f91ced2eb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_LOBO_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_LOBO_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_LOBO_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ LOBO_Test_Sender.idl
+ }
+}
+
+project(DDS_LOBO_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_LOBO_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ LOBO_Test_SenderE.idl
+ }
+}
+
+project(DDS_LOBO_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_LOBO_Test_Sender_lem_gen DDS_LOBO_Test_Sender_stub \
+ DDS_LOBO_Test_Base_stub
+ libs += DDS_LOBO_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_SenderEC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_LOBO_Test_Sender_idl_gen DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_stub
+ libs += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_SenderC.inl
+ }
+}
+
+project(DDS_LOBO_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_LOBO_Test_Sender_lem_stub DDS_LOBO_Test_Sender_stub \
+ DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_LOBO_Test_Base_stub \
+ DDS_LOBO_Test_Connector_lem_stub DDS_LOBO_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_LOBO_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_LOBO_Test_Base_stub DDS_LOBO_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_LOBO_Test_Connector_stub \
+ DDS_LOBO_Test_Connector_svnt DDS_LOBO_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_LOBO_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_LOBO_Test_Connector_stub DDS_LOBO_Test_Connector_svnt \
+ DDS_LOBO_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ LOBO_Test_SenderS.cpp
+ LOBO_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ LOBO_Test_SenderS.h
+ LOBO_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ LOBO_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..9a407e84c04
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.cpp
@@ -0,0 +1,216 @@
+// -*- C++ -*-
+// $Id$
+
+#include "LOBO_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "ace/Date_Time.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_LOBO_Test_Sender_Impl
+{
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.write_one ();
+ return 0;
+ }
+
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteManyHandler::WriteManyHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteManyHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.write_one ();
+ return 0;
+ }
+
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new WriteTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write_one (void)
+ {
+ if (this->last_key_ != this->samples_.end ())
+ {
+ try
+ {
+ ++this->last_key_->second->iteration;
+ this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Written key <%C> - <%u>\n",
+ this->last_key_->first.c_str (),
+ this->last_key_->second->iteration));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key_->first.c_str ()));
+ }
+ ++this->last_key_;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key_ = this->samples_.begin ();
+ while (this->last_key_ != this->samples_.end ())
+ {
+ if (this->last_key_->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key_;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key_ == this->samples_.end ())
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+ }
+
+
+ void
+ Sender_exec_i::start (void)
+ {
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ ListenOneByOneTest *new_key = new ListenOneByOneTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->samples_[key] = new_key;
+ }
+ this->last_key_ = this->samples_.begin ();
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 50000),
+ ACE_Time_Value (0, 50000)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::LOBO_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LOBO_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h
new file mode 100644
index 00000000000..fc2593a5bda
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/Sender/LOBO_Test_Sender_exec.h
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "LOBO_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_LOBO_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ class WriteManyHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteManyHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void write_one (void);
+
+ private:
+ ::LOBO_Test::CCM_Sender_Context_var context_;
+ ::LOBO_Test::ListenOneByOneTestConn::Writer_var writer_;
+
+ WriteTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, ListenOneByOneTest_var> Writer_Table;
+ Writer_Table samples_;
+
+ Writer_Table::iterator last_key_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_LOBO_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp
new file mode 100644
index 00000000000..be97bb9b3e5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/Plan.cdp
@@ -0,0 +1,372 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>LOBO_Test_Depl_1</label>
+ <UUID>LOBO_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="LOBO_Test_ConnectorComponentImplementation">
+ <name>LOBO_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="LOBO_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="LOBO_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_LOBO_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_LOBO_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LOBO_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LOBO_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_LOBO_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="LOBO_Test_ConnectorComponentInstance">
+ <name>LOBO_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LOBO_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LOBO_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="LOBO_Test_ConnectorComponentInstance2">
+ <name>LOBO_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="LOBO_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LOBO_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="LOBO_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LOBO_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="LOBO_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="LOBO_Test_Connector_ExecArtifact">
+ <name>LOBO_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_LOBO_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="LOBO_Test_Connector_SvntArtifact">
+ <name>LOBO_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_LOBO_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="LOBO_Test_Connector_StubArtifact">
+ <name>LOBO_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_LOBO_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl
new file mode 100755
index 00000000000..ddeee753cf7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/ListenOneByOne/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.idl b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.idl
new file mode 100644
index 00000000000..5feeb350b2b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.idl
@@ -0,0 +1,14 @@
+// $Id$
+
+#ifndef NOMODULE_IDL
+#define NOMODULE_IDL
+
+#pragma ndds typesupport "NoModuleSupport.h"
+
+struct NoModuleType {
+ string value; //@key
+};
+
+typedef sequence<NoModuleType> NoModuleTypeSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.mpc b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.mpc
new file mode 100644
index 00000000000..30ea2964de5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule.mpc
@@ -0,0 +1,24 @@
+// $Id$
+
+project (NoModule_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = NoModule_stub
+ dynamicflags += NOMODULE_COMMON_STUB_BUILD_DLL
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=NOMODULE_COMMON_STUB_Export \
+ -Wb,stub_export_include=NoModule_Common_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ NoModule.idl
+ }
+
+ opendds_ts_flags += --export=NOMODULE_COMMON_STUB_Export
+
+ DDSGenerator_Files {
+ NoModule.idl
+ }
+
+ Source_Files {
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.idl
new file mode 100644
index 00000000000..6bb6aebdd10
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.idl
@@ -0,0 +1,17 @@
+// $Id$
+
+#ifndef NOMODULE_CONNECTOR_IDL
+#define NOMODULE_CONNECTOR_IDL
+
+#include <Components.idl>
+#include "NoModule.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "NoModule_ConnectorE.idl"
+
+module ::CCM_DDS::Typed < ::NoModuleType, ::NoModuleTypeSeq> NoModuleTypeConn;
+connector NoModule_Connector : NoModuleTypeConn::DDS_Event
+{
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.mpc
new file mode 100644
index 00000000000..53bae25af9c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NoModule/NoModule_Connector.mpc
@@ -0,0 +1,131 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -b dds4ccm_base NoModule_Connector"
+
+project(NoModule_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=NOMODULE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=NoModule_Connector_stub_export.h \
+ -Wb,skel_export_macro=NOMODULE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=NoModule_Connector_svnt_export.h \
+ -Wb,conn_export_macro=NOMODULE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=NoModule_Connector_conn_export.h \
+ -Gxhex -Gxhsk -Gxhst
+ IDL_Files {
+ NoModule_Connector.idl
+ }
+}
+
+project(NoModule_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += NoModule_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=NOMODULE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=NoModule_Connector_lem_stub_export.h \
+ -SS -Gxhst
+
+ IDL_Files {
+ NoModule_ConnectorE.idl
+ }
+}
+
+project(NoModule_Connector_lem_stub) : ccm_svnt, dds4ccm_lem_stub {
+ after += NoModule_Connector_lem_gen NoModule_Connector_stub
+ libs += NoModule_Connector_stub
+
+
+ sharedname = NoModule_Connector_lem_stub
+ dynamicflags = NOMODULE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NoModule_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ NoModule_ConnectorEC.h
+ NoModule_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ NoModule_ConnectorEC.inl
+ }
+}
+
+project(NoModule_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += NoModule_Connector_idl_gen NoModule_stub
+ libs += NoModule_stub
+
+
+ sharedname = NoModule_Connector_stub
+ dynamicflags = NOMODULE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NoModule_ConnectorC.cpp
+ }
+
+ Header_Files {
+ NoModule_ConnectorC.h
+ NoModule_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ NoModule_ConnectorC.inl
+ }
+}
+
+project(NoModule_Connector_exec) : ciao_executor, dds4ccm_impl, dds4ccm_lem_stub {
+ after += NoModule_Connector_lem_stub NoModule_Connector_stub
+ sharedname = NoModule_Connector_exec
+ libs += NoModule_Connector_stub NoModule_Connector_lem_stub NoModule_stub
+
+ dynamicflags = NOMODULE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NoModule_Connector_conn.cpp
+ }
+
+ Header_Files {
+ NoModule_Connector_conn.h
+ NoModule_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(NoModule_Connector_svnt) : ciao_servant, dds4ccm_impl, dds4ccm_lem_stub {
+ after += NoModule_Connector_lem_stub
+ sharedname = NoModule_Connector_svnt
+ libs += NoModule_Connector_stub NoModule_Connector_lem_stub NoModule_stub
+
+
+ dynamicflags = NOMODULE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NoModule_ConnectorS.cpp
+ NoModule_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ NoModule_ConnectorS.h
+ NoModule_Connector_svnt.h
+ NoModule_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ NoModule_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl
new file mode 100644
index 00000000000..ba286782860
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file NonChangeable_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef NONCHANGEABLE_BASE_IDL
+#define NONCHANGEABLE_BASE_IDL
+
+#pragma ndds typesupport "Base/NonChangeable_BaseSupport.h"
+
+struct NonChangeableTest {
+ string key;
+ long iteration;
+};
+
+typedef sequence<NonChangeableTest> NonChangeableTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc
new file mode 100644
index 00000000000..209d9203b92
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Base/NonChangeable_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_NonChangeableBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_NonChangeableBase_stub
+ dynamicflags += NONCHANGEABLE_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=NONCHANGEABLE_BASE_STUB_Export \
+ -Wb,stub_export_include=NonChangeable_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ NonChangeable_Base.idl
+ }
+
+ opendds_ts_flags += --export=NONCHANGEABLE_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ NonChangeable_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl
new file mode 100644
index 00000000000..b6ccf1a0aa2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file NonChangeable_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef NONCHANGEABLE_CONNECTOR_IDL_
+#define NONCHANGEABLE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/NonChangeable_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/NonChangeable_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::NonChangeableTest, ::NonChangeableTestSeq> NonChangeableTest;
+};
+
+module NonChangeable
+{
+ connector NonChangeable_Connector : ::CCM_DDS::NonChangeableTest::DDS_Event
+ {
+ };
+};
+
+#endif /* NonChangeable_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc
new file mode 100644
index 00000000000..5d2d62fdf80
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/Connector/NonChangeable_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_NonChangeableBase -l .. -o ../lib -u DDS NonChangeable_Connector"
+
+project(DDS_NonChangeableConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=NONCHANGEABLE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=NonChangeable_Connector_stub_export.h \
+ -Wb,skel_export_macro=NONCHANGEABLE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=NonChangeable_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=NONCHANGEABLE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=NonChangeable_Connector_svnt_export.h \
+ -Wb,conn_export_macro=NONCHANGEABLE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=NonChangeable_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ NonChangeable_Connector.idl
+ }
+}
+
+project(DDS_NonChangeableConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_NonChangeableConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=NONCHANGEABLE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=NonChangeable_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ NonChangeable_ConnectorE.idl
+ }
+}
+
+project(DDS_NonChangeableConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_NonChangeableConnector_lem_gen DDS_NonChangeableConnector_stub DDS_NonChangeableBase_stub DDS4CCM_lem_stub
+ libs += DDS_NonChangeableBase_stub DDS_NonChangeableConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_NonChangeableConnector_lem_stub
+ dynamicflags = NONCHANGEABLE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NonChangeable_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ NonChangeable_ConnectorEC.h
+ NonChangeable_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ NonChangeable_ConnectorEC.inl
+ }
+}
+
+project(DDS_NonChangeableConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_NonChangeableConnector_idl_gen DDS_NonChangeableBase_stub
+ libs += DDS_NonChangeableBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_NonChangeableConnector_stub
+ dynamicflags = NONCHANGEABLE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NonChangeable_ConnectorC.cpp
+ }
+
+ Header_Files {
+ NonChangeable_ConnectorC.h
+ NonChangeable_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ NonChangeable_ConnectorC.inl
+ }
+}
+
+project(DDS_NonChangeableConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_NonChangeableConnector_lem_stub DDS_NonChangeableConnector_stub DDS4CCM_lem_stub DDS_NonChangeableBase_stub
+ sharedname = DDS_NonChangeableConnector_exec
+ libs += DDS_NonChangeableConnector_stub DDS_NonChangeableConnector_lem_stub DDS_NonChangeableBase_stub DDS4CCM_lem_stub DDS_NonChangeableBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = NONCHANGEABLE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NonChangeable_Connector_conn.cpp
+ }
+
+ Header_Files {
+ NonChangeable_Connector_conn.h
+ NonChangeable_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_NonChangeableConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_NonChangeableConnector_lem_stub DDS_NonChangeableConnector_exec DDS_NonChangeableConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_NonChangeableConnector_svnt
+ libs += DDS_NonChangeableConnector_stub \
+ DDS_NonChangeableConnector_lem_stub \
+ DDS_NonChangeableBase_stub \
+ DDS_NonChangeableConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = NONCHANGEABLE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NonChangeable_ConnectorS.cpp
+ NonChangeable_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ NonChangeable_ConnectorS.h
+ NonChangeable_Connector_svnt.h
+ NonChangeable_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ NonChangeable_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README
new file mode 100644
index 00000000000..575f11fbb77
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/README
@@ -0,0 +1,15 @@
+# $Id$
+
+This test tests whether the connection attributes
+can be set once the configuration is complete.
+This shouldn't be allowed and therefore a
+NonChangeable exception must be thrown.
+
+The following attributes are tested:
+ * key_fields
+ * domain_id
+ * qos_profile
+ * topic_name
+
+An error is reported for every attribute where
+no NonChangeable exception was catched.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp
new file mode 100644
index 00000000000..9a762f94f81
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/Plan.cdp
@@ -0,0 +1,98 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NonChangeableAttribute_Depl_1</label>
+ <UUID>NonChangeableAttribute_Depl_1</UUID>
+
+
+ <implementation xmi:id="NonChangeableConnectorComponentImplementation">
+ <name>NonChangeableConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="NonChangeableConnector_ExecArtifact" />
+ <artifact xmi:idref="NonChangeableConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_NonChangeable_NonChangeable_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_NonChangeable_NonChangeable_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>NonChangeableConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>NonChangeableConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="NonChangeableConnectorComponentInstance">
+ <name>NonChangeableConnectorComponent</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="NonChangeableConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>NonChangeable</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <artifact xmi:id="NonChangeableConnector_ExecArtifact">
+ <name>NonChangeableConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_NonChangeableConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="NonChangeableConnector_SvntArtifact">
+ <name>NonChangeableConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_NonChangeableConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="NonChangeableConnector_StubArtifact">
+ <name>NonChangeableConnector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_NonChangeableConnector_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl
new file mode 100755
index 00000000000..b51ae16243d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/NonChangeableAttribute/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001);
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode");
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 5 seconds to allow task to complete\n";
+sleep (5);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.idl
new file mode 100644
index 00000000000..b3a78e5f357
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+/**
+ * @file OIT_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef ON_INCONSISTENT_TOPIC_TEST_BASE_IDL
+#define ON_INCONSISTENT_TOPIC_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/OIT_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "OIT_Receiver_Topic"
+#pragma DCPS_DATA_KEY "OIT_Receiver_Topic symbol"
+
+struct OIT_Receiver_Topic {
+ string symbol; //@key
+ long x;
+ long y;
+};
+
+typedef sequence<OIT_Receiver_Topic> OIT_Receiver_TopicSeq;
+
+struct OIT_Sender_Topic {
+ string symbol; //@key
+ long x;
+ long y;
+ long z;
+};
+
+typedef sequence<OIT_Sender_Topic> OIT_Sender_TopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.mpc
new file mode 100644
index 00000000000..95ff3562b7a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Base/OIT_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (OIT_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = OIT_Test_Base_stub
+ dynamicflags += ON_INCONSISTENT_TOPIC_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=ON_INCONSISTENT_TOPIC_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=OIT_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ OIT_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=ON_INCONSISTENT_TOPIC_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ OIT_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.idl
new file mode 100644
index 00000000000..55fb3090c3e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "ReceiverConnector/OIT_Receiver_Connector.idl"
+
+module OIT_Test
+{
+ component Receiver
+ {
+ port OIT_Receiver_TopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.mpc
new file mode 100644
index 00000000000..1f0a6fbd85f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(OIT_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += OIT_Receiver_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ OIT_Test_Receiver.idl
+ }
+}
+
+project(OIT_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += OIT_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ OIT_Test_ReceiverE.idl
+ }
+}
+
+project(OIT_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += OIT_Test_Receiver_lem_gen OIT_Test_Receiver_stub \
+ OIT_Receiver_Connector_stub OIT_Test_Base_stub
+ libs += Receiver_stub OIT_Receiver_Connector_stub \
+ OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ OIT_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_ReceiverEC.inl
+ }
+}
+
+project(OIT_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += OIT_Test_Receiver_idl_gen OIT_Receiver_Connector_stub \
+ OIT_Test_Base_stub OIT_Receiver_Connector_lem_gen
+ libs += OIT_Receiver_Connector_stub OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ OIT_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_ReceiverC.inl
+ }
+}
+
+project(OIT_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += OIT_Test_Receiver_lem_stub OIT_Test_Receiver_stub \
+ OIT_Test_Base_stub OIT_Receiver_Connector_stub \
+ OIT_Receiver_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub OIT_Test_Base_stub \
+ OIT_Receiver_Connector_stub OIT_Receiver_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ OIT_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(OIT_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += OIT_Test_Receiver_lem_stub OIT_Test_Base_stub \
+ OIT_Receiver_Connector_stub OIT_Receiver_Connector_svnt \
+ OIT_Test_Receiver_exec OIT_Receiver_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub OIT_Test_Base_stub \
+ OIT_Receiver_Connector_stub OIT_Receiver_Connector_svnt \
+ Receiver_exec OIT_Receiver_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_ReceiverS.cpp
+ OIT_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ OIT_Test_ReceiverS.h
+ OIT_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..7be8ea7758a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.cpp
@@ -0,0 +1,199 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "OIT_Test_Receiver_exec.h"
+
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_OIT_Test_Receiver_Impl
+{
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &inconsistent,
+ Atomic_ThreadId &thread_id)
+ : inconsistent_ (inconsistent),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /* the_topic */,
+ const DDS::InconsistentTopicStatus & /* status */)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ this->inconsistent_ = true;
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : inconsistent_ (false) ,
+ thread_id_listener_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->inconsistent_,
+ this->thread_id_listener_);
+ }
+
+ ::OIT_Test::OIT_Receiver_TopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return ::OIT_Test::OIT_Receiver_TopicConn::CCM_Listener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::OIT_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->inconsistent_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("RECEIVER ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_inconsistent_topic'\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RECEIVER OK: Received the expected ")
+ ACE_TEXT ("'on_inconsistent_topic'\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "RECEIVER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "RECEIVER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_OIT_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.h
new file mode 100644
index 00000000000..0e735864a08
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Receiver/OIT_Test_Receiver_exec.h
@@ -0,0 +1,107 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "OIT_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_OIT_Test_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &inconsistent_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Component attributes.
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual ::OIT_Test::OIT_Receiver_TopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::OIT_Test::CCM_Receiver_Context_var context_;
+
+ Atomic_Boolean inconsistent_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_OIT_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.idl
new file mode 100644
index 00000000000..24fc8e7905e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file OIT_Receiver_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef ON_INCONSISTENT_TOPIC_TEST_RECEIVER_CONNECTOR_IDL_
+#define ON_INCONSISTENT_TOPIC_TEST_RECEIVER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/OIT_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "ReceiverConnector/OIT_Receiver_ConnectorE.idl"
+
+module OIT_Test
+{
+ module ::CCM_DDS::Typed < ::OIT_Receiver_Topic, ::OIT_Receiver_TopicSeq> OIT_Receiver_TopicConn;
+ connector OIT_Receiver_Connector : OIT_Receiver_TopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* ON_INCONSISTENT_TOPIC_TEST_RECEIVER_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.mpc
new file mode 100644
index 00000000000..2a285c3c87f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/ReceiverConnector/OIT_Receiver_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p OIT_Test_Base -l .. -o ../lib -u DDS OIT_Receiver_Connector"
+
+project(OIT_Receiver_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=OIT_Receiver_Connector_stub_export.h \
+ -Wb,skel_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=OIT_Receiver_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=OIT_Receiver_Connector_svnt_export.h \
+ -Wb,conn_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=OIT_Receiver_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ OIT_Receiver_Connector.idl
+ }
+}
+
+project(OIT_Receiver_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += OIT_Receiver_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=OIT_Receiver_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ OIT_Receiver_ConnectorE.idl
+ }
+}
+
+project(OIT_Receiver_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += OIT_Receiver_Connector_lem_gen OIT_Receiver_Connector_stub OIT_Test_Base_stub DDS4CCM_lem_stub
+ libs += OIT_Test_Base_stub OIT_Receiver_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = OIT_Receiver_Connector_lem_stub
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Receiver_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ OIT_Receiver_ConnectorEC.h
+ OIT_Receiver_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Receiver_ConnectorEC.inl
+ }
+}
+
+project(OIT_Receiver_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += OIT_Receiver_Connector_idl_gen OIT_Test_Base_stub
+ libs += OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = OIT_Receiver_Connector_stub
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Receiver_ConnectorC.cpp
+ }
+
+ Header_Files {
+ OIT_Receiver_ConnectorC.h
+ OIT_Receiver_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Receiver_ConnectorC.inl
+ }
+}
+
+project(OIT_Receiver_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += OIT_Receiver_Connector_lem_stub OIT_Receiver_Connector_stub DDS4CCM_lem_stub OIT_Test_Base_stub
+ sharedname = OIT_Receiver_Connector_exec
+ libs += OIT_Receiver_Connector_stub OIT_Receiver_Connector_lem_stub OIT_Test_Base_stub DDS4CCM_lem_stub OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Receiver_Connector_conn.cpp
+ }
+
+ Header_Files {
+ OIT_Receiver_Connector_conn.h
+ OIT_Receiver_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(OIT_Receiver_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += OIT_Receiver_Connector_lem_stub OIT_Receiver_Connector_exec OIT_Receiver_Connector_stub DDS4CCM_lem_stub
+ sharedname = OIT_Receiver_Connector_svnt
+ libs += OIT_Receiver_Connector_stub \
+ OIT_Receiver_Connector_lem_stub \
+ OIT_Test_Base_stub \
+ OIT_Receiver_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Receiver_ConnectorS.cpp
+ OIT_Receiver_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ OIT_Receiver_ConnectorS.h
+ OIT_Receiver_Connector_svnt.h
+ OIT_Receiver_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ OIT_Receiver_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.idl
new file mode 100644
index 00000000000..c8b3ff6b86d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef ON_INCONSISTENT_TOPIC_TEST_SENDER_IDL
+#define ON_INCONSISTENT_TOPIC_TEST_SENDER_IDL
+
+#include "SenderConnector/OIT_Sender_Connector.idl"
+
+module OIT_Test
+{
+ component Sender
+ {
+ port OIT_Sender_TopicConn::DDS_Write topic_write;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.mpc
new file mode 100644
index 00000000000..40e7edbc497
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p OIT_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(OIT_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += OIT_Sender_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ OIT_Test_Sender.idl
+ }
+}
+
+project(OIT_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += OIT_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ OIT_Test_SenderE.idl
+ }
+}
+
+project(OIT_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += OIT_Test_Sender_lem_gen OIT_Test_Sender_stub \
+ OIT_Test_Base_stub
+ libs += OIT_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ OIT_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_SenderEC.inl
+ }
+}
+
+project(OIT_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += OIT_Test_Sender_idl_gen OIT_Test_Base_stub \
+ OIT_Sender_Connector_stub
+ libs += OIT_Test_Base_stub OIT_Sender_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ OIT_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_SenderC.inl
+ }
+}
+
+project(OIT_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += OIT_Test_Sender_lem_stub OIT_Test_Sender_stub \
+ OIT_Sender_Connector_lem_stub OIT_Sender_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub OIT_Test_Base_stub \
+ OIT_Sender_Connector_lem_stub OIT_Sender_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ OIT_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(OIT_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += OIT_Test_Base_stub OIT_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel OIT_Sender_Connector_stub \
+ OIT_Sender_Connector_svnt OIT_Sender_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub OIT_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel OIT_Sender_Connector_stub OIT_Sender_Connector_svnt \
+ OIT_Sender_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Test_SenderS.cpp
+ OIT_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ OIT_Test_SenderS.h
+ OIT_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ OIT_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..bd4cecda90f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.cpp
@@ -0,0 +1,185 @@
+// -*- C++ -*-
+// $Id$
+
+#include "OIT_Test_Sender_exec.h"
+
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_OIT_Test_Sender_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &inconsistent,
+ Atomic_ThreadId &thread_id)
+ : inconsistent_ (inconsistent),
+ thread_id_ (thread_id)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ this->inconsistent_ = true;
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : inconsistent_ (false),
+ thread_id_listener_ (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->inconsistent_,
+ this->thread_id_listener_);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::OIT_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (this->inconsistent_.value ())
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SENDER OK: Received the expected ")
+ ACE_TEXT ("'on_inconsistent_topic'\n")
+ ));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SENDER ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_inconsistent_topic'\n")
+ ));
+ }
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread ID for ConnectorStatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: "
+ "Thread switch for ConnectorStatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: "
+ "Thread switch for ConnectorStatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "SENDER ERROR: ConnectorStatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "SENDER OK: ConnectorStatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_OIT_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.h
new file mode 100644
index 00000000000..d0e6de9c2b5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/Sender/OIT_Test_Sender_exec.h
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "OIT_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_OIT_Test_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &inconsistent_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ private:
+ ::OIT_Test::CCM_Sender_Context_var context_;
+
+ Atomic_Boolean inconsistent_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_OIT_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.idl
new file mode 100644
index 00000000000..76ea4612f67
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file OIT_Sender_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef ON_INCONSISTENT_TOPIC_TEST_SENDER_CONNECTOR_IDL_
+#define ON_INCONSISTENT_TOPIC_TEST_SENDER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/OIT_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "SenderConnector/OIT_Sender_ConnectorE.idl"
+
+module OIT_Test
+{
+ module ::CCM_DDS::Typed < ::OIT_Sender_Topic, ::OIT_Sender_TopicSeq> OIT_Sender_TopicConn;
+ connector OIT_Sender_Connector : OIT_Sender_TopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* ON_INCONSISTENT_TOPIC_TEST_SENDER_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.mpc
new file mode 100644
index 00000000000..6c7558c21d5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/SenderConnector/OIT_Sender_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p OIT_Test_Base -l .. -o ../lib -u DDS OIT_Sender_Connector"
+
+project(OIT_Sender_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=OIT_Sender_Connector_stub_export.h \
+ -Wb,skel_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=OIT_Sender_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=OIT_Sender_Connector_svnt_export.h \
+ -Wb,conn_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=OIT_Sender_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ OIT_Sender_Connector.idl
+ }
+}
+
+project(OIT_Sender_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += OIT_Sender_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=OIT_Sender_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ OIT_Sender_ConnectorE.idl
+ }
+}
+
+project(OIT_Sender_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += OIT_Sender_Connector_lem_gen OIT_Sender_Connector_stub OIT_Test_Base_stub DDS4CCM_lem_stub
+ libs += OIT_Test_Base_stub OIT_Sender_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = OIT_Sender_Connector_lem_stub
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Sender_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ OIT_Sender_ConnectorEC.h
+ OIT_Sender_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Sender_ConnectorEC.inl
+ }
+}
+
+project(OIT_Sender_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += OIT_Sender_Connector_idl_gen OIT_Test_Base_stub
+ libs += OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = OIT_Sender_Connector_stub
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Sender_ConnectorC.cpp
+ }
+
+ Header_Files {
+ OIT_Sender_ConnectorC.h
+ OIT_Sender_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ OIT_Sender_ConnectorC.inl
+ }
+}
+
+project(OIT_Sender_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += OIT_Sender_Connector_lem_stub OIT_Sender_Connector_stub DDS4CCM_lem_stub OIT_Test_Base_stub
+ sharedname = OIT_Sender_Connector_exec
+ libs += OIT_Sender_Connector_stub OIT_Sender_Connector_lem_stub OIT_Test_Base_stub DDS4CCM_lem_stub OIT_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Sender_Connector_conn.cpp
+ }
+
+ Header_Files {
+ OIT_Sender_Connector_conn.h
+ OIT_Sender_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(OIT_Sender_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += OIT_Sender_Connector_lem_stub OIT_Sender_Connector_exec OIT_Sender_Connector_stub DDS4CCM_lem_stub
+ sharedname = OIT_Sender_Connector_svnt
+ libs += OIT_Sender_Connector_stub \
+ OIT_Sender_Connector_lem_stub \
+ OIT_Test_Base_stub \
+ OIT_Sender_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = ON_INCONSISTENT_TOPIC_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ OIT_Sender_ConnectorS.cpp
+ OIT_Sender_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ OIT_Sender_ConnectorS.h
+ OIT_Sender_Connector_svnt.h
+ OIT_Sender_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ OIT_Sender_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp
new file mode 100644
index 00000000000..6b57d240187
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/Plan.cdp
@@ -0,0 +1,402 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>On_Inconsistent_Topic_Depl</label>
+ <UUID>On_Inconsistent_Topic_Depl</UUID>
+
+ <implementation xmi:id="ReceiverImplementation">
+ <name>ReceiverImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Sender_ConnectorImplementation">
+ <name>Sender_ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_Connector_ExecArtifact" />
+ <artifact xmi:idref="Sender_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_OIT_Sender_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_OIT_Sender_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Receiver_ConnectorImplementation">
+ <name>Receiver_ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_Connector_ExecArtifact" />
+ <artifact xmi:idref="Receiver_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_OIT_Receiver_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_OIT_Receiver_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderImplementation">
+ <name>SenderImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_OIT_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ReceiverInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverImplementation" />
+ </instance>
+
+ <instance xmi:id="Receiver_ConnectorInstance">
+ <name>Receiver_ConnectorComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Receiver_ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestOIT</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="SenderInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderImplementation" />
+ </instance>
+
+ <instance xmi:id="Sender_ConnectorInstance">
+ <name>Sender_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Sender_ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestOIT</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_out_reader</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Receiver_ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Receiver_ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>topic_write_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Sender_ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_sec_topic_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Sender_ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Sender_Connector_ExecArtifact">
+ <name>Sender_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>OIT_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_Connector_SvntArtifact">
+ <name>Sender_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>OIT_Sender_Connector_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Receiver_Connector_ExecArtifact">
+ <name>Receiver_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>OIT_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_Connector_SvntArtifact">
+ <name>Receiver_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>OIT_Receiver_Connector_svnt</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl
new file mode 100755
index 00000000000..9734de1093a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/On_Inconsistent_Topic/descriptors/run_test.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl
new file mode 100644
index 00000000000..ca16d20201b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file PSL_DeadlineTest_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef PSL_DEADLINETEST_BASE_IDL
+#define PSL_DEADLINETEST_BASE_IDL
+
+#pragma ndds typesupport "Base/PSL_DeadlineTest_BaseSupport.h"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc
new file mode 100644
index 00000000000..ea3bdebc233
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Base/PSL_DeadlineTest_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_PSL_DeadlineTest_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_PSL_DeadlineTest_Base_stub
+ dynamicflags += PSL_DEADLINETEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=PSL_DEADLINETEST_BASE_STUB_Export \
+ -Wb,stub_export_include=PSL_DeadlineTest_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ PSL_DeadlineTest_Base.idl
+ }
+
+ opendds_ts_flags += --export=PSL_DEADLINETEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ PSL_DeadlineTest_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl
new file mode 100644
index 00000000000..6a9625ca2e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file PSL_DeadlineTest_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef PSL_DeadlineTest_CONNECTOR_IDL_
+#define PSL_DeadlineTest_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/PSL_DeadlineTest_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/PSL_DeadlineTest_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module PSL_DeadlineTest
+{
+ connector PSL_DeadlineTest_Connector : ::CCM_DDS::TestTopic::DDS_Event
+ {
+ };
+};
+
+#endif /* PSL_DeadlineTest_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc
new file mode 100644
index 00000000000..c9c99037a5c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Connector/PSL_DeadlineTest_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_PSL_DeadlineTest_Base -l .. -o ../lib -u DDS PSL_DeadlineTest_Connector"
+
+project(DDS_PSL_DT_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=PSL_DEADLINETEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=PSL_DeadlineTest_Connector_stub_export.h \
+ -Wb,skel_export_macro=PSL_DEADLINETEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=PSL_DeadlineTest_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=PSL_DEADLINETEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=PSL_DeadlineTest_Connector_svnt_export.h \
+ -Wb,conn_export_macro=PSL_DEADLINETEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=PSL_DeadlineTest_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ PSL_DeadlineTest_Connector.idl
+ }
+}
+
+project(DDS_PSL_DT_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_PSL_DT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=PSL_DEADLINETEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=PSL_DeadlineTest_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ PSL_DeadlineTest_ConnectorE.idl
+ }
+}
+
+project(DDS_PSL_DT_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_DT_Connector_lem_gen DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub
+ libs += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_PSL_DT_Connector_lem_stub
+ dynamicflags = PSL_DEADLINETEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ConnectorEC.h
+ PSL_DeadlineTest_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ConnectorEC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_DT_Connector_idl_gen DDS_PSL_DeadlineTest_Base_stub
+ libs += DDS_PSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_PSL_DeadlineTest_Connector_stub
+ dynamicflags = PSL_DEADLINETEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ConnectorC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ConnectorC.h
+ PSL_DeadlineTest_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ConnectorC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub DDS_PSL_DeadlineTest_Base_stub
+ sharedname = DDS_PSL_DeadlineTest_Connector_exec
+ libs += DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS_PSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PSL_DEADLINETEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_Connector_conn.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_Connector_conn.h
+ PSL_DeadlineTest_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_DeadlineTest_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_exec DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_PSL_DeadlineTest_Connector_svnt
+ libs += DDS_PSL_DeadlineTest_Connector_stub \
+ DDS_PSL_DT_Connector_lem_stub \
+ DDS_PSL_DeadlineTest_Base_stub \
+ DDS_PSL_DeadlineTest_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PSL_DEADLINETEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ConnectorS.cpp
+ PSL_DeadlineTest_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ConnectorS.h
+ PSL_DeadlineTest_Connector_svnt.h
+ PSL_DeadlineTest_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl
new file mode 100644
index 00000000000..c849128c8e5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/PSL_DeadlineTest_Connector.idl"
+
+module PSL_DeadlineTest
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_Get info_get;
+ port CCM_DDS::TestTopic::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc
new file mode 100644
index 00000000000..d29641cbb5b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_PSL_DeadlineTest_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_PSL_DT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ PSL_DeadlineTest_Receiver.idl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_PSL_DeadlineTest_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ PSL_DeadlineTest_ReceiverE.idl
+ }
+}
+
+project(DDS_PSL_DT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Receiver_lem_gen DDS_PSL_DeadlineTest_Receiver_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub
+ libs += Receiver_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ReceiverEC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Receiver_idl_gen DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DT_Connector_lem_gen
+ libs += DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ReceiverC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ReceiverC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_PSL_DT_Receiver_lem_stub DDS_PSL_DeadlineTest_Receiver_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_DeadlineTest_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_PSL_DT_Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DeadlineTest_Receiver_exec DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt Receiver_exec DDS_PSL_DT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_ReceiverS.cpp
+ PSL_DeadlineTest_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_ReceiverS.h
+ PSL_DeadlineTest_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp
new file mode 100644
index 00000000000..3c627a906f8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.cpp
@@ -0,0 +1,388 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for PORTSTUSLISTENER in DDS_LISTEN and DDS_Get port: on_requested_deadline_missed.
+// Writer writes every sec, Reader starts reading after 2 sec and try to read every 1,1 sec, but has a minimum seperation time of 1.5 sec (QoS)
+// and a deadline of 2 sec (QoS), so periodically the deadline will be missed.
+
+#include "PSL_DeadlineTest_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_PSL_DeadlineTest_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ try
+ {
+ this->pulse_callback_.read_all();
+ }
+ catch (...)
+ {
+ // @todo
+ }
+ return 0;
+ }
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ void
+ TestTopic_RawListener_exec_i::on_one_data (
+ const TestTopic & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ")
+ ACE_TEXT ("received test_topic_info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.x));
+ }
+
+ void
+ TestTopic_RawListener_exec_i::on_many_data (
+ const TestTopicSeq & /*an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ //============================================================
+ // PortStatusListener_exec_i
+ //============================================================
+ PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_Boolean &deadline_port_1,
+ Atomic_Boolean &deadline_port_2,
+ Atomic_ThreadId &thread_id_1,
+ Atomic_ThreadId &thread_id_2,
+ int port_nr)
+ : deadline_port_1_ (deadline_port_1),
+ deadline_port_2_ (deadline_port_2),
+ thread_id_1_ (thread_id_1),
+ thread_id_2_ (thread_id_2),
+ port_nr_ (port_nr)
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status)
+ {
+ if (this->port_nr_ == 1 && ! ::CORBA::is_nil( the_reader) && status.total_count!= 0)
+ {
+ this->deadline_port_1_ = true;
+ this->thread_id_1_ = ACE_Thread::self ();
+ }
+ if (this->port_nr_ == 2 && ! ::CORBA::is_nil (the_reader) && status.total_count!= 0)
+ {
+ this->deadline_port_2_ = true;
+ this->thread_id_2_ = ACE_Thread::self ();
+ }
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (10),
+ deadline_port_1_ (false),
+ deadline_port_2_ (false),
+ thread_id_listener_1_ (0),
+ thread_id_listener_2_ (0)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ TestTopicSeq_var TestTopic_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ try
+ {
+ this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out());
+ for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i)
+ {
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ TestTopic_infos[i].key.in (),
+ TestTopic_infos[i].x));
+ }
+ }
+ catch( const CCM_DDS::InternalError& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n")));
+ }
+ }
+
+ // Port operations.
+ ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return new TestTopic_RawListener_exec_i ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i (this->deadline_port_1_,
+ this->deadline_port_2_,
+ this->thread_id_listener_1_,
+ this->thread_id_listener_2_,
+ 1);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i (this->deadline_port_1_,
+ this->deadline_port_2_,
+ this->thread_id_listener_1_,
+ this->thread_id_listener_2_,
+ 2);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::PSL_DeadlineTest::CCM_Receiver_Context::_narrow (ctx);
+ if (::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::NOT_ENABLED);
+
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(2, usec),
+ ACE_Time_Value(1, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->deadline_port_1_.value ())
+ {
+
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT (" error 'on_requested_deadline_missed' on PortStatusListener I in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ")
+ ACE_TEXT ("'on_requested_deadline_missed' in PortStatusListener I in Receiver\n")
+ ));
+ }
+ if (!this->deadline_port_2_.value ())
+ {
+
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT (" error 'on_requested_deadline_missed' on PortStatusListener II in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ")
+ ACE_TEXT ("'on_requested_deadline_missed' in PortStatusListener II in Receiver\n")
+ ));
+ }
+ //check thread switch for listener 1
+ if (this->thread_id_listener_1_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for PortStatusListener I not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : "
+ "Thread switch for PortStatusListener I seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread switch for PortStatusListener I "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: PortStatusListener I: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : PortStatusListener I: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //check thread switch for listener 2
+ if (this->thread_id_listener_2_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for PortStatusListener II not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : "
+ "Thread switch for PortStatusListener II seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread switch for PortStatusListener II "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: PortStatusListener II: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : PortStatusListener II: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_DeadlineTest_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h
new file mode 100644
index 00000000000..bbb5bff1010
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Receiver/PSL_DeadlineTest_Receiver_exec.h
@@ -0,0 +1,150 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "PSL_DeadlineTest_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_PSL_DeadlineTest_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ TestTopic_RawListener_exec_i (void);
+ virtual ~TestTopic_RawListener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+
+ virtual void
+ on_many_data (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & info );
+ };
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ Receiver_exec_i &pulse_callback_;
+
+ };
+
+ //============================================================
+ // PortStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &,
+ int );
+ virtual ~PortStatusListener_exec_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+
+ private:
+ Atomic_Boolean &deadline_port_1_;
+ Atomic_Boolean &deadline_port_2_;
+ Atomic_ThreadId &thread_id_1_;
+ Atomic_ThreadId &thread_id_2_;
+ int port_nr_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void read_all(void);
+
+ private:
+ ::PSL_DeadlineTest::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::TestTopic::Reader_var reader_;
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+
+ Atomic_Boolean deadline_port_1_;
+ Atomic_Boolean deadline_port_2_;
+ Atomic_ThreadId thread_id_listener_1_;
+ Atomic_ThreadId thread_id_listener_2_;
+};
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_DeadlineTest_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl
new file mode 100644
index 00000000000..5479b290315
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_PSL_DEADLINETEST_SENDER_IDL
+#define DDS_PSL_DEADLINETEST_SENDER_IDL
+
+#include "Connector/PSL_DeadlineTest_Connector.idl"
+
+module PSL_DeadlineTest
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Write test_topic_write;
+ provides CCM_DDS::ConnectorStatusListener test_topic_connector_status;
+
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc
new file mode 100644
index 00000000000..39b3145ac3e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_PSL_DeadlineTest_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_PSL_DeadlineTest_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_PSL_DT_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ PSL_DeadlineTest_Sender.idl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_PSL_DeadlineTest_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ PSL_DeadlineTest_SenderE.idl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Sender_lem_gen DDS_PSL_DeadlineTest_Sender_stub DDS_PSL_DeadlineTest_Base_stub
+ libs += DDS_PSL_DeadlineTest_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_SenderEC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_SenderEC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Sender_idl_gen DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub
+ libs += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_SenderC.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_SenderC.inl
+ }
+}
+
+project(DDS_PSL_DeadlineTest_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Sender_lem_stub DDS_PSL_DeadlineTest_Sender_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DT_Connector_lem_stub DDS_PSL_DeadlineTest_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_Sender_exec.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_DeadlineTest_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_PSL_DeadlineTest_Base_stub DDS_PSL_DeadlineTest_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DT_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_PSL_DeadlineTest_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_DeadlineTest_Connector_stub DDS_PSL_DeadlineTest_Connector_svnt DDS_PSL_DT_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_DeadlineTest_SenderS.cpp
+ PSL_DeadlineTest_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_DeadlineTest_SenderS.h
+ PSL_DeadlineTest_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_DeadlineTest_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp
new file mode 100644
index 00000000000..e3528d016b5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.cpp
@@ -0,0 +1,203 @@
+// -*- C++ -*-
+// $Id$
+
+
+// Test for PORTSTUSLISTENER Subscriber on_requested_deadline_missed :
+// Writer writes every sec 2 instances.
+
+#include "PSL_DeadlineTest_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_PSL_DeadlineTest_Sender_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ()
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ }
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_test_topic_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i ();
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::PSL_DeadlineTest::CCM_Sender_Context::_narrow (ctx);
+
+ if (::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_test_topic_write_data ();
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ for (PSL_DLTest_Table::iterator i = this->_ktests_.begin ();
+ i != this->_ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->writer_))
+ {
+ this->writer_->write_one(i->second,::DDS::HANDLE_NIL);
+ i->second->x++;
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"),
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 1L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::add_instance_of_topic (const char * key, int x)
+ {
+ TestTopic *new_key = new TestTopic;
+ new_key->key = CORBA::string_dup(key);
+ new_key->x = x;
+ this->_ktests_[key] = new_key;
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ //add 2 different instances of topic
+ this->add_instance_of_topic ("ONE",1);
+ this->add_instance_of_topic ("TWO",2);
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_DeadlineTest_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h
new file mode 100644
index 00000000000..2738bafb8a6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/Sender/PSL_DeadlineTest_Sender_exec.h
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "PSL_DeadlineTest_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_PSL_DeadlineTest_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (void);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ void tick (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_test_topic_connector_status(void);
+
+ private:
+ void start (void);
+ void stop (void);
+
+ pulse_Generator * ticker_;
+ ::PSL_DeadlineTest::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Writer_var writer_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, TestTopic_var> PSL_DLTest_Table;
+ PSL_DLTest_Table _ktests_;
+
+ void add_instance_of_topic (const char *, int x );
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_DeadlineTest_Sender_Impl (void);
+
+
+
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp
new file mode 100644
index 00000000000..47d26cd2da8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/Plan.cdp
@@ -0,0 +1,430 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PSL_DeadlineTest_Depl_1</label>
+ <UUID>PSL_DeadlineTest_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="PSL_DeadlineTest_ConnectorComponentImplementation">
+ <name>PSL_DeadlineTest_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="PSL_DeadlineTest_Connector_ExecArtifact" />
+ <artifact xmi:idref="PSL_DeadlineTest_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_PSL_DeadlineTest_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PSL_DeadlineTest_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PSL_DeadlineTest_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_DeadlineTest_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="PSL_DeadlineTest_ConnectorComponentInstance">
+ <name>PSL_DeadlineTest_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="PSL_DeadlineTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="PSL_DeadlineTest_ConnectorComponentInstance2">
+ <name>PSL_DeadlineTest_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="PSL_DeadlineTest_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener2</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>test_topic_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_DeadlineTest_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="PSL_DeadlineTest_Connector_ExecArtifact">
+ <name>PSL_DeadlineTest_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_DeadlineTest_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PSL_DeadlineTest_Connector_SvntArtifact">
+ <name>PSL_DeadlineTest_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_DeadlineTest_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PSL_DeadlineTest_Connector_StubArtifact">
+ <name>PSL_DeadlineTest_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_DeadlineTest_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..509d006347f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Hello_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>1</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ <depth>2</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ <deadline>
+ <period>
+ <sec>2</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ <depth>1</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <time_based_filter>
+ <minimum_separation>
+ <sec>1</sec>
+ <nanosec>50000000</nanosec>
+ </minimum_separation>
+ </time_based_filter>
+ <deadline>
+ <period>
+ <sec>2</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datareader_qos>
+
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl
new file mode 100755
index 00000000000..4ea0f211542
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLDeadline/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl
new file mode 100644
index 00000000000..17b6a4e3917
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file PSL_SampleLost_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef PSL_SAMPLELOST_BASE_IDL
+#define PSL_SAMPLELOST_BASE_IDL
+
+#pragma ndds typesupport "Base/PSL_SampleLost_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc
new file mode 100644
index 00000000000..69803e22c42
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Base/PSL_SampleLost_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_PSL_SampleLost_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_PSL_SampleLost_Base_stub
+ dynamicflags += PSL_SAMPLELOST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=PSL_SAMPLELOST_BASE_STUB_Export \
+ -Wb,stub_export_include=PSL_SampleLost_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ PSL_SampleLost_Base.idl
+ }
+
+ opendds_ts_flags += --export=PSL_SAMPLELOST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ PSL_SampleLost_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl
new file mode 100644
index 00000000000..fcf6d5db3d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file PSL_SampleLost_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef PSL_SampleLost_CONNECTOR_IDL_
+#define PSL_SampleLost_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/PSL_SampleLost_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/PSL_SampleLost_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module PSL_SampleLost
+{
+ connector PSL_SampleLost_Connector : ::CCM_DDS::TestTopic::DDS_Event
+ {
+ };
+};
+
+#endif /* PSL_SampleLost_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc
new file mode 100644
index 00000000000..8f19bdab3bc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Connector/PSL_SampleLost_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_PSL_SampleLost_Base -l .. -o ../lib -u DDS PSL_SampleLost_Connector"
+
+project(DDS_PSL_SL_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=PSL_SAMPLELOST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=PSL_SampleLost_Connector_stub_export.h \
+ -Wb,skel_export_macro=PSL_SAMPLELOST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=PSL_SampleLost_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=PSL_SAMPLELOST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=PSL_SampleLost_Connector_svnt_export.h \
+ -Wb,conn_export_macro=PSL_SAMPLELOST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=PSL_SampleLost_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ PSL_SampleLost_Connector.idl
+ }
+}
+
+project(DDS_PSL_SL_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_PSL_SL_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=PSL_SAMPLELOST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=PSL_SampleLost_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ PSL_SampleLost_ConnectorE.idl
+ }
+}
+
+project(DDS_PSL_SL_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_SL_Connector_lem_gen DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub
+ libs += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_PSL_SL_Connector_lem_stub
+ dynamicflags = PSL_SAMPLELOST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ConnectorEC.h
+ PSL_SampleLost_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ConnectorEC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_SL_Connector_idl_gen DDS_PSL_SampleLost_Base_stub
+ libs += DDS_PSL_SampleLost_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_PSL_SampleLost_Connector_stub
+ dynamicflags = PSL_SAMPLELOST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ConnectorC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ConnectorC.h
+ PSL_SampleLost_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ConnectorC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub DDS_PSL_SampleLost_Base_stub
+ sharedname = DDS_PSL_SampleLost_Connector_exec
+ libs += DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub DDS_PSL_SampleLost_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PSL_SAMPLELOST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_Connector_conn.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_Connector_conn.h
+ PSL_SampleLost_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_SampleLost_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_exec DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_PSL_SampleLost_Connector_svnt
+ libs += DDS_PSL_SampleLost_Connector_stub \
+ DDS_PSL_SL_Connector_lem_stub \
+ DDS_PSL_SampleLost_Base_stub \
+ DDS_PSL_SampleLost_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PSL_SAMPLELOST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ConnectorS.cpp
+ PSL_SampleLost_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ConnectorS.h
+ PSL_SampleLost_Connector_svnt.h
+ PSL_SampleLost_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl
new file mode 100644
index 00000000000..4479966031b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/PSL_SampleLost_Connector.idl"
+
+module PSL_SampleLost
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_Get info_get;
+ port CCM_DDS::TestTopic::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc
new file mode 100644
index 00000000000..b4ab3eaecfd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_PSL_SampleLost_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_PSL_SL_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ PSL_SampleLost_Receiver.idl
+ }
+}
+
+project(DDS_PSL_SampleLost_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_PSL_SampleLost_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ PSL_SampleLost_ReceiverE.idl
+ }
+}
+
+project(DDS_PSL_SL_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Receiver_lem_gen DDS_PSL_SampleLost_Receiver_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub
+ libs += Receiver_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ReceiverEC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Receiver_idl_gen DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SL_Connector_lem_gen
+ libs += DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ReceiverC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ReceiverC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_PSL_SL_Receiver_lem_stub DDS_PSL_SampleLost_Receiver_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_SampleLost_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_PSL_SL_Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SampleLost_Receiver_exec DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt Receiver_exec DDS_PSL_SL_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_ReceiverS.cpp
+ PSL_SampleLost_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_ReceiverS.h
+ PSL_SampleLost_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp
new file mode 100644
index 00000000000..1cfbe497381
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.cpp
@@ -0,0 +1,405 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for SAMPLE_LOST status of the subscriber
+
+#include "PSL_SampleLost_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_PSL_SampleLost_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ try
+ {
+ this->pulse_callback_.read_all();
+ }
+ catch (...)
+ {
+ // @todo
+ }
+ return 0;
+ }
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ TestTopic_RawListener_exec_i::TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ TestTopic_RawListener_exec_i::~TestTopic_RawListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::TestTopic_RawListener
+ void
+ TestTopic_RawListener_exec_i::on_one_data (
+ const TestTopic & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TestTopic_RawListener: ")
+ ACE_TEXT ("received test_topic_info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.x));
+ }
+
+ void
+ TestTopic_RawListener_exec_i::on_many_data (
+ const TestTopicSeq & /*an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ //============================================================
+ // PortStatusListener_exec_i
+ //============================================================
+ PortStatusListener_exec_i::PortStatusListener_exec_i (Atomic_Boolean &sample_port_1,
+ Atomic_Boolean &sample_port_2,
+ Atomic_ThreadId &thread_id_1,
+ Atomic_ThreadId &thread_id_2,
+ int port_nr)
+ : sample_port_1_(sample_port_1),
+ sample_port_2_(sample_port_2),
+ thread_id_1_ (thread_id_1),
+ thread_id_2_ (thread_id_2),
+ port_nr_(port_nr)
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const ::DDS::SampleLostStatus & status)
+ {
+ if (this->port_nr_ == 1)
+ {
+ this->thread_id_1_ = ACE_Thread::self ();
+ }
+ if (this->port_nr_ == 2)
+ {
+ this->thread_id_2_ = ACE_Thread::self ();
+ }
+
+ if (this->port_nr_ == 1 &&
+ status.total_count > 0)
+ {
+ this->sample_port_1_ = true;
+ }
+
+ if (this->port_nr_ == 2 &&
+ status.total_count > 0)
+ {
+ this->sample_port_2_ = true;
+ }
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (10),
+ sample_port_1_ (false),
+ sample_port_2_ (false),
+ thread_id_listener_1_ (0),
+ thread_id_listener_2_ (0)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ TestTopicSeq_var TestTopic_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ try
+ {
+ this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out());
+ for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i)
+ {
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ TestTopic_infos[i].key.in (),
+ TestTopic_infos[i].x));
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n")));
+ }
+ }
+
+ // Component attributes.
+ // Port operations.
+ ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new TestTopic RAW listener\n")));
+ return new TestTopic_RawListener_exec_i (/*this->received_*/);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener get_info_out_status\n")));
+ return new PortStatusListener_exec_i (this->sample_port_1_,
+ this->sample_port_2_,
+ this->thread_id_listener_1_,
+ this->thread_id_listener_2_,
+ 1);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener get_info_get_status\n")));
+
+ return new PortStatusListener_exec_i (this->sample_port_1_,
+ this->sample_port_2_,
+ this->thread_id_listener_1_,
+ this->thread_id_listener_2_,
+ 2);
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ return ::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::PSL_SampleLost::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::NOT_ENABLED);
+
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(3, usec),
+ ACE_Time_Value(3, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if(!this->sample_port_1_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_sample_lost' on DDS_Listen port in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ")
+ ACE_TEXT ("'on_sample_lost' in on DDS_Listen port Receiver\n")
+ ));
+ }
+ if (!this->sample_port_2_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("error 'on_sample_lost' on DDS_Get port in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ")
+ ACE_TEXT ("'on_sample_lost' in on DDS_GET port Receiver\n")
+ ));
+ }
+ //check thread switch for listener 1
+ if (this->thread_id_listener_1_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for PortStatusListener I not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : "
+ "Thread switch for PortStatusListener I seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread switch for PortStatusListener I "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: PortStatusListener I: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : PortStatusListener I: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_1_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ //check thread switch for listener 2
+ if (this->thread_id_listener_2_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for PortStatusListener II not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : "
+ "Thread switch for PortStatusListener II seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread switch for PortStatusListener II "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: PortStatusListener II: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK : PortStatusListener II: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_2_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_SampleLost_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h
new file mode 100644
index 00000000000..3f10fc8d576
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Receiver/PSL_SampleLost_Receiver_exec.h
@@ -0,0 +1,156 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "PSL_SampleLost_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_PSL_SampleLost_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // TestTopic_RawListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export TestTopic_RawListener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ TestTopic_RawListener_exec_i (void);
+ virtual ~TestTopic_RawListener_exec_i (void);
+
+
+ virtual void
+ on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+
+
+ virtual void
+ on_many_data (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ };
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ /// Maintains a handle that actually process the event
+ Receiver_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // PortStatusListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_ThreadId &,
+ Atomic_ThreadId &,
+ int port_nr);
+ virtual ~PortStatusListener_exec_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+
+ private:
+ Atomic_Boolean &sample_port_1_;
+ Atomic_Boolean &sample_port_2_;
+ Atomic_ThreadId &thread_id_1_;
+ Atomic_ThreadId &thread_id_2_;
+ int port_nr_;
+
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void read_all (void);
+
+ private:
+ ::PSL_SampleLost::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::TestTopic::Reader_var reader_;
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+ Atomic_Boolean sample_port_1_;
+ Atomic_Boolean sample_port_2_;
+ Atomic_ThreadId thread_id_listener_1_;
+ Atomic_ThreadId thread_id_listener_2_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_SampleLost_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl
new file mode 100644
index 00000000000..236e3ec4c26
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_PSL_SAMPLELOST_SENDER_IDL
+#define DDS_PSL_SAMPLELOST_SENDER_IDL
+
+#include "Connector/PSL_SampleLost_Connector.idl"
+
+module PSL_SampleLost
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Write test_topic_write;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc
new file mode 100644
index 00000000000..4ddaf76560c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_PSL_SampleLost_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_PSL_SampleLost_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_PSL_SL_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ PSL_SampleLost_Sender.idl
+ }
+}
+
+project(DDS_PSL_SampleLost_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_PSL_SampleLost_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ PSL_SampleLost_SenderE.idl
+ }
+}
+
+project(DDS_PSL_SampleLost_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Sender_lem_gen DDS_PSL_SampleLost_Sender_stub DDS_PSL_SampleLost_Base_stub
+ libs += DDS_PSL_SampleLost_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_SenderEC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_SenderEC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Sender_idl_gen DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub
+ libs += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_SenderC.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_SenderC.inl
+ }
+}
+
+project(DDS_PSL_SampleLost_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Sender_lem_stub DDS_PSL_SampleLost_Sender_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_PSL_SampleLost_Base_stub DDS_PSL_SL_Connector_lem_stub DDS_PSL_SampleLost_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_Sender_exec.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_PSL_SampleLost_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_PSL_SampleLost_Base_stub DDS_PSL_SampleLost_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SL_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_PSL_SampleLost_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_PSL_SampleLost_Connector_stub DDS_PSL_SampleLost_Connector_svnt DDS_PSL_SL_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PSL_SampleLost_SenderS.cpp
+ PSL_SampleLost_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ PSL_SampleLost_SenderS.h
+ PSL_SampleLost_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ PSL_SampleLost_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp
new file mode 100644
index 00000000000..20174f1a06d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.cpp
@@ -0,0 +1,151 @@
+// -*- C++ -*-
+// $Id$
+
+#include "PSL_SampleLost_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_PSL_SampleLost_Sender_Impl
+{
+ //============================================================
+ // pulse_Generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_test_topic_connector_status (void)
+ {
+ return ::CCM_DDS::CCM_ConnectorStatusListener::_nil ();
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::PSL_SampleLost::CCM_Sender_Context::_narrow (ctx);
+
+ if (::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_test_topic_write_data ();
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ for (PSL_DLTest_Table::iterator i = this->_ktests_.begin ();
+ i != this->_ktests_.end ();
+ ++i)
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->writer_) )
+ {
+ this->writer_->write_one(i->second,::DDS::HANDLE_NIL);
+ i->second->x++;
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while creating topic for <%C>.\n"),
+ i->first.c_str ()));
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 1L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::add_instance_of_topic (const char * key, int x)
+ {
+ TestTopic *new_key = new TestTopic;
+ new_key->key = CORBA::string_dup(key);
+ new_key->x = x;
+ this->_ktests_[key] = new_key;
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ //add 2 different instances of topic
+ this->add_instance_of_topic ("ONE",1);
+ this->add_instance_of_topic ("TWO",2);
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_SampleLost_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h
new file mode 100644
index 00000000000..0dfa22906e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/Sender/PSL_SampleLost_Sender_exec.h
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "PSL_SampleLost_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_PSL_SampleLost_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Sender_exec_i &pulse_callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ void tick (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_test_topic_connector_status(void);
+
+ private:
+ void start (void);
+ void stop (void);
+
+ pulse_Generator * ticker_;
+ ::PSL_SampleLost::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Writer_var writer_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, TestTopic_var> PSL_DLTest_Table;
+ PSL_DLTest_Table _ktests_;
+
+ void add_instance_of_topic (const char *, int x );
+ };
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PSL_SampleLost_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp
new file mode 100644
index 00000000000..93739e73192
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/Plan.cdp
@@ -0,0 +1,410 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PSL_SampleLost_Depl_1</label>
+ <UUID>PSL_SampleLost_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="PSL_SampleLost_ConnectorComponentImplementation">
+ <name>PSL_SampleLost_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="PSL_SampleLost_Connector_ExecArtifact" />
+ <artifact xmi:idref="PSL_SampleLost_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_PSL_SampleLost_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_PSL_SampleLost_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PSL_SampleLost_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PSL_SampleLost_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PSL_SampleLost_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="PSL_SampleLost_ConnectorComponentInstance">
+ <name>PSL_SampleLost_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="PSL_SampleLost_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="PSL_SampleLost_ConnectorComponentInstance2">
+ <name>PSL_SampleLost_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="PSL_SampleLost_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>HelloTest_Library#Hello_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener2</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="PSL_SampleLost_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="PSL_SampleLost_Connector_ExecArtifact">
+ <name>PSL_SampleLost_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_SampleLost_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PSL_SampleLost_Connector_SvntArtifact">
+ <name>PSL_SampleLost_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_SampleLost_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PSL_SampleLost_Connector_StubArtifact">
+ <name>PSL_SampleLost_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_PSL_SampleLost_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..d263487191a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="HelloTest_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Hello_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>2</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <durability_service>
+ <history_kind>KEEP_LAST_HISTORY_QOS</history_kind>
+ <history_depth>10</history_depth>
+ <max_samples>10</max_samples>
+ <max_samples_per_instance>5</max_samples_per_instance>
+ <max_instances>2</max_instances>
+ </durability_service>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ <deadline>
+ <period>
+ <sec>3</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>10</depth>
+ </history>
+ <resource_limits>
+ <initial_samples>1</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>10</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>10</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <deadline>
+ <period>
+ <sec>3</sec>
+ <nanosec>0</nanosec>
+ </period>
+ </deadline>
+ </datareader_qos>
+
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl
new file mode 100755
index 00000000000..b2a5229d554
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PSLSampleLost/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.cpp
new file mode 100644
index 00000000000..6ee8d9e1b80
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.cpp
@@ -0,0 +1,16 @@
+// $Id$
+
+#include "deadline_qos_test.h"
+
+#include "duration.h"
+
+DeadlinePolicyTest::DeadlinePolicyTest ()
+{
+}
+
+bool
+DeadlinePolicyTest::check (const ::DDS_DeadlineQosPolicy & dds_qos,
+ const ::DDS::DeadlineQosPolicy & qos)
+{
+ return Duration::check (dds_qos.period, qos.period);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.h
new file mode 100644
index 00000000000..3713165c665
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/deadline_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef DEADLINE_QOS_TEST_H_
+#define DEADLINE_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DeadlineQosPolicy.h"
+
+class DeadlinePolicyTest
+{
+public:
+ DeadlinePolicyTest ();
+
+ static bool check (const ::DDS_DeadlineQosPolicy & dds_qos,
+ const ::DDS::DeadlineQosPolicy & qos);
+};
+
+#endif /* DEADLINE_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.cpp
new file mode 100644
index 00000000000..6a35c8dd228
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.cpp
@@ -0,0 +1,14 @@
+// $Id$
+
+#include "dest_order_qos_test.h"
+
+DestinationOrderPolicyTest::DestinationOrderPolicyTest ()
+{
+}
+
+bool
+DestinationOrderPolicyTest::check (const ::DDS_DestinationOrderQosPolicy & dds_qos,
+ const ::DDS::DestinationOrderQosPolicy & qos)
+{
+ return dds_qos.kind == static_cast <DDS_DestinationOrderQosPolicyKind> (qos.kind);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.h
new file mode 100644
index 00000000000..58887bc0311
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dest_order_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef DEST_ORDER_QOS_TEST_H_
+#define DEST_ORDER_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DestinationOrderQosPolicy.h"
+
+class DestinationOrderPolicyTest
+{
+public:
+ DestinationOrderPolicyTest ();
+
+ static bool check (const ::DDS_DestinationOrderQosPolicy & dds_qos,
+ const ::DDS::DestinationOrderQosPolicy & qos);
+};
+
+#endif /* DEST_ORDER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.cpp
new file mode 100644
index 00000000000..2152a2a4dfa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.cpp
@@ -0,0 +1,9 @@
+// $Id$
+
+#include "dp_factory_qos_test.h"
+
+#include "entity_factory_qos_test.h"
+
+DomainParticipantFactoryPolicyTest::DomainParticipantFactoryPolicyTest ()
+{
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.h
new file mode 100644
index 00000000000..84a3582c7fa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_factory_qos_test.h
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef DP_FACTORY_QOS_TEST_H_
+#define DP_FACTORY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DomainParticipantFactoryQos.h"
+
+class DomainParticipantFactoryPolicyTest
+{
+public:
+ DomainParticipantFactoryPolicyTest ();
+
+};
+
+#endif /* DP_FACTORY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.cpp
new file mode 100644
index 00000000000..9418d83ceb1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.cpp
@@ -0,0 +1,46 @@
+// $Id$
+
+#include "dp_qos_test.h"
+
+#include "entity_factory_qos_test.h"
+#include "user_data_qos_test.h"
+
+DomainParticipantPolicyTest::DomainParticipantPolicyTest ()
+{
+}
+
+int
+DomainParticipantPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::DomainParticipantQos policy;
+ DDS_DomainParticipantQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_PARTICIPANT_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+ if (!EntityFactoryPolicyTest::check (dds_policy.entity_factory, policy.entity_factory))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DOMAIN PARTICIPANT : "
+ "Error in EntityFactoryQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!UserDataPolicyTest::check (dds_policy.user_data, policy.user_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DOMAIN PARTICIPANT : "
+ "Error in UserDataQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DOMAIN PARTICIPANT: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.h
new file mode 100644
index 00000000000..9694f56b2b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dp_qos_test.h
@@ -0,0 +1,18 @@
+//$Id$
+
+#ifndef DOMAINPARTICIPANT_QOS_TEST_H_
+#define DOMAINPARTICIPANT_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DomainParticipantQos.h"
+
+class DomainParticipantPolicyTest
+{
+public:
+ DomainParticipantPolicyTest ();
+
+ int run ();
+};
+
+#endif /* DOMAINPARTICIPANT_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.cpp
new file mode 100644
index 00000000000..dab0f245666
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.cpp
@@ -0,0 +1,137 @@
+// $Id$
+
+#include "dr_qos_test.h"
+
+#include "dur_qos_test.h"
+#include "deadline_qos_test.h"
+#include "lat_budget_qos_test.h"
+#include "liveliness_qos_test.h"
+#include "reliability_qos_test.h"
+#include "dest_order_qos_test.h"
+#include "hist_qos_test.h"
+#include "resource_limits_qos_test.h"
+#include "user_data_qos_test.h"
+#include "ownership_qos_test.h"
+#include "tbf_qos_test.h"
+#include "rd_lifecycle_qos_test.h"
+
+DatareaderPolicyTest::DatareaderPolicyTest ()
+{
+}
+
+int
+DatareaderPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::DataReaderQos policy;
+ DDS_DataReaderQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_DATAREADER_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+ if (!DurabilityPolicyTest::check (dds_policy.durability,
+ policy.durability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in DurabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DeadlinePolicyTest::check (dds_policy.deadline,
+ policy.deadline))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in DeadlineQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LatencyBudgetPolicyTest::check (dds_policy.latency_budget,
+ policy.latency_budget))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in LatencyBudgetQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LivelinessPolicyTest::check (dds_policy.liveliness,
+ policy.liveliness))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in LivelinessQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ReliabilityPolicyTest::check (dds_policy.reliability,
+ policy.reliability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in ReliabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DestinationOrderPolicyTest::check (dds_policy.destination_order,
+ policy.destination_order))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in DestinationOrderQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!HistoryPolicyTest::check (dds_policy.history,
+ policy.history))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in HistoryQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ResourceLimitsPolicyTest::check (dds_policy.resource_limits,
+ policy.resource_limits))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in ResourceLimitsQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!UserDataPolicyTest::check (dds_policy.user_data, policy.user_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in UserDataQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!OwnershipPolicyTest::check (dds_policy.ownership,
+ policy.ownership))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in OwnershipQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!TimeBasedFilterPolicyTest::check (dds_policy.time_based_filter,
+ policy.time_based_filter))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in TimeBasedFilterQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ReaderDataLifecyclePolicyTest::check (dds_policy.reader_data_lifecycle,
+ policy.reader_data_lifecycle))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER : "
+ "Error in ReaderDataLifecycleQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAREADER: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.h
new file mode 100644
index 00000000000..ab276d80429
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dr_qos_test.h
@@ -0,0 +1,18 @@
+// $Id$
+
+#ifndef DATAREADER_QOS_TEST_H_
+#define DATAREADER_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DataReaderQos.h"
+
+class DatareaderPolicyTest
+{
+public:
+ DatareaderPolicyTest ();
+
+ int run ();
+};
+
+#endif /* DATAREADER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.cpp
new file mode 100644
index 00000000000..3a85ace802b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.cpp
@@ -0,0 +1,15 @@
+// $Id$
+
+#include "dur_qos_test.h"
+
+DurabilityPolicyTest::DurabilityPolicyTest ()
+{
+}
+
+
+bool
+DurabilityPolicyTest::check (const ::DDS_DurabilityQosPolicy & dds_qos,
+ const ::DDS::DurabilityQosPolicy & qos)
+{
+ return dds_qos.kind == static_cast <DDS_DurabilityQosPolicyKind> (qos.kind);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.h
new file mode 100644
index 00000000000..e2ec969df10
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef DURABILITY_QOS_TEST_H_
+#define DURABILITY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DurabilityQosPolicy.h"
+
+class DurabilityPolicyTest
+{
+public:
+ DurabilityPolicyTest ();
+
+ static bool check (const ::DDS_DurabilityQosPolicy & dds_qos,
+ const ::DDS::DurabilityQosPolicy & qos);
+};
+
+#endif /* DURABILITY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.cpp
new file mode 100644
index 00000000000..eabe851a291
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.cpp
@@ -0,0 +1,19 @@
+// $Id$
+
+#include "dur_service_qos_test.h"
+
+DurabilityServicePolicyTest::DurabilityServicePolicyTest ()
+{
+}
+
+bool
+DurabilityServicePolicyTest::check (const ::DDS_DurabilityServiceQosPolicy & dds_qos,
+ const ::DDS::DurabilityServiceQosPolicy & qos)
+{
+ return dds_qos.service_cleanup_delay.sec == qos.service_cleanup_delay.sec &&
+ dds_qos.history_kind == static_cast <DDS_HistoryQosPolicyKind> (qos.history_kind) &&
+ dds_qos.history_depth == qos.history_depth &&
+ dds_qos.max_samples == qos.max_samples &&
+ dds_qos.max_instances == qos.max_instances &&
+ dds_qos.max_samples_per_instance == qos.max_samples_per_instance;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.h
new file mode 100644
index 00000000000..4b212a2745a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dur_service_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef DURABILITY_SERVICE_QOS_TEST_H_
+#define DURABILITY_SERVICE_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DurabilityServiceQosPolicy.h"
+
+class DurabilityServicePolicyTest
+{
+public:
+ DurabilityServicePolicyTest ();
+
+ static bool check (const ::DDS_DurabilityServiceQosPolicy & dds_qos,
+ const ::DDS::DurabilityServiceQosPolicy & qos);
+};
+
+#endif /* DURABILITY_SERVICE_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.cpp
new file mode 100644
index 00000000000..83d0483c909
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.cpp
@@ -0,0 +1,16 @@
+//$Id$
+
+#include "duration.h"
+
+Duration::Duration ()
+{
+}
+
+
+bool
+Duration::check (const ::DDS_Duration_t & dds_dur,
+ const ::DDS::Duration_t & dur)
+{
+ return dds_dur.sec == dur.sec &&
+ dds_dur.nanosec == dur.nanosec;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.h
new file mode 100644
index 00000000000..dae8057bfb4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/duration.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef DURATION_H_
+#define DURATION_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/Duration_t.h"
+
+class Duration
+{
+public:
+ Duration ();
+
+ static bool check (const ::DDS_Duration_t & dds_dur,
+ const ::DDS::Duration_t & dur);
+};
+
+#endif /* DURATION_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.cpp
new file mode 100644
index 00000000000..6e4278e1b04
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.cpp
@@ -0,0 +1,164 @@
+// $Id$
+
+#include "dw_qos_test.h"
+
+#include "dur_qos_test.h"
+#include "dur_service_qos_test.h"
+#include "deadline_qos_test.h"
+#include "lat_budget_qos_test.h"
+#include "liveliness_qos_test.h"
+#include "reliability_qos_test.h"
+#include "dest_order_qos_test.h"
+#include "hist_qos_test.h"
+#include "resource_limits_qos_test.h"
+#include "transport_prio_qos_test.h"
+#include "lifespan_qos_test.h"
+#include "user_data_qos_test.h"
+#include "ownership_qos_test.h"
+#include "ownership_strength_qos_test.h"
+#include "wr_lifecycle_qos_test.h"
+
+DatawriterPolicyTest::DatawriterPolicyTest ()
+{
+}
+
+int
+DatawriterPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::DataWriterQos policy;
+ DDS_DataWriterQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_DATAWRITER_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+ if (!DurabilityPolicyTest::check (dds_policy.durability,
+ policy.durability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in DurabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DurabilityServicePolicyTest::check (dds_policy.durability_service,
+ policy.durability_service))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in DurabilityServiceQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DeadlinePolicyTest::check (dds_policy.deadline,
+ policy.deadline))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in DeadlineQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LatencyBudgetPolicyTest::check (dds_policy.latency_budget,
+ policy.latency_budget))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in LatencyBudgetQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LivelinessPolicyTest::check (dds_policy.liveliness,
+ policy.liveliness))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in LivelinessQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ReliabilityPolicyTest::check (dds_policy.reliability,
+ policy.reliability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in ReliabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DestinationOrderPolicyTest::check (dds_policy.destination_order,
+ policy.destination_order))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in DestinationOrderQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!HistoryPolicyTest::check (dds_policy.history,
+ policy.history))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in HistoryQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ResourceLimitsPolicyTest::check (dds_policy.resource_limits,
+ policy.resource_limits))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in ResourceLimitsQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!TransportPriorityPolicyTest::check (dds_policy.transport_priority,
+ policy.transport_priority))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in TransportPriorityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LifespanPolicyTest::check (dds_policy.lifespan,
+ policy.lifespan))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in LifespanQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!UserDataPolicyTest::check (dds_policy.user_data, policy.user_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in UserDataQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!OwnershipPolicyTest::check (dds_policy.ownership,
+ policy.ownership))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in OwnershipQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!OwnershipStrengthPolicyTest::check (dds_policy.ownership_strength,
+ policy.ownership_strength))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in OwnershipStrengthQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!WriterDataLifecyclePolicyTest::check (dds_policy.writer_data_lifecycle,
+ policy.writer_data_lifecycle))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER : "
+ "Error in WriterDataLifecycleQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR DATAWRITER: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.h
new file mode 100644
index 00000000000..23bf760321b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/dw_qos_test.h
@@ -0,0 +1,18 @@
+// $Id$
+
+#ifndef DATAWRITER_QOS_TEST_H_
+#define DATAWRITER_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/DataWriterQos.h"
+
+class DatawriterPolicyTest
+{
+public:
+ DatawriterPolicyTest ();
+
+ int run ();
+};
+
+#endif /* DATAWRITER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.cpp
new file mode 100644
index 00000000000..4bc00e2434f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.cpp
@@ -0,0 +1,15 @@
+// $Id$
+
+#include "entity_factory_qos_test.h"
+
+EntityFactoryPolicyTest::EntityFactoryPolicyTest ()
+{
+}
+
+bool
+EntityFactoryPolicyTest::check (const ::DDS_EntityFactoryQosPolicy & dds_qos,
+ const ::DDS::EntityFactoryQosPolicy & qos)
+{
+ return dds_qos.autoenable_created_entities ==
+ static_cast <DDS_Boolean> (qos.autoenable_created_entities);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.h
new file mode 100644
index 00000000000..ef53fb43aea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/entity_factory_qos_test.h
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef ENTITY_FACTORY_QOS_TEST_H_
+#define ENTITY_FACTORY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/EntityFactoryQosPolicy.h"
+
+class EntityFactoryPolicyTest
+{
+public:
+ EntityFactoryPolicyTest ();
+
+ static bool check (const ::DDS_EntityFactoryQosPolicy & dds_qos,
+ const ::DDS::EntityFactoryQosPolicy & qos);
+};
+
+#endif /* ENTITY_FACTORY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.cpp
new file mode 100644
index 00000000000..e1100e04cc2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.cpp
@@ -0,0 +1,18 @@
+// $Id$
+
+#include "group_data_qos_test.h"
+
+#include "octet_seq.h"
+
+GroupDataPolicyTest::GroupDataPolicyTest ()
+{
+}
+
+bool
+GroupDataPolicyTest::check (const ::DDS_GroupDataQosPolicy & dds_qos,
+ const ::DDS::GroupDataQosPolicy & qos)
+{
+ return OctetSequence::check (dds_qos.value,
+ qos.value,
+ "GroupDataPolicyTest");
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.h
new file mode 100644
index 00000000000..ba5347e505e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/group_data_qos_test.h
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef GROUP_DATA_QOS_TEST_H_
+#define GROUP_DATA_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/GroupDataQosPolicy.h"
+
+class GroupDataPolicyTest
+{
+public:
+ GroupDataPolicyTest ();
+
+ static bool check (const ::DDS_GroupDataQosPolicy & dds_qos,
+ const ::DDS::GroupDataQosPolicy & qos);
+};
+
+#endif /* GROUP_DATA_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.cpp
new file mode 100644
index 00000000000..e65aa5ff338
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.cpp
@@ -0,0 +1,16 @@
+// $Id$
+
+#include "hist_qos_test.h"
+
+HistoryPolicyTest::HistoryPolicyTest ()
+{
+}
+
+bool
+HistoryPolicyTest::check (const ::DDS_HistoryQosPolicy & dds_qos,
+ const ::DDS::HistoryQosPolicy & qos)
+{
+
+ return dds_qos.kind == static_cast <DDS_HistoryQosPolicyKind> (qos.kind) &&
+ dds_qos.depth == qos.depth;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.h
new file mode 100644
index 00000000000..0290a8bd519
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/hist_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef HISTORY_QOS_TEST_H_
+#define HISTORY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/HistoryQosPolicy.h"
+
+class HistoryPolicyTest
+{
+public:
+ HistoryPolicyTest ();
+
+ static bool check (const ::DDS_HistoryQosPolicy & dds_qos,
+ const ::DDS::HistoryQosPolicy & qos);
+};
+
+#endif /* HISTORY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.cpp
new file mode 100644
index 00000000000..5a530caa2cc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.cpp
@@ -0,0 +1,16 @@
+// $Id$
+
+#include "lat_budget_qos_test.h"
+
+#include "duration.h"
+
+LatencyBudgetPolicyTest::LatencyBudgetPolicyTest ()
+{
+}
+
+bool
+LatencyBudgetPolicyTest::check (const ::DDS_LatencyBudgetQosPolicy & dds_qos,
+ const ::DDS::LatencyBudgetQosPolicy & qos)
+{
+ return Duration::check (dds_qos.duration, qos.duration);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.h
new file mode 100644
index 00000000000..be70a034310
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/lat_budget_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef LATENCY_BUDGET_QOS_TEST_H_
+#define LATENCY_BUDGET_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/LatencyBudgetQosPolicy.h"
+
+class LatencyBudgetPolicyTest
+{
+public:
+ LatencyBudgetPolicyTest ();
+
+ static bool check (const ::DDS_LatencyBudgetQosPolicy & dds_qos,
+ const ::DDS::LatencyBudgetQosPolicy & qos);
+};
+
+#endif /* LATENCY_BUDGET_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.cpp
new file mode 100644
index 00000000000..ee02d9aa09c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.cpp
@@ -0,0 +1,16 @@
+// $Id$
+
+#include "lifespan_qos_test.h"
+
+#include "duration.h"
+
+LifespanPolicyTest::LifespanPolicyTest ()
+{
+}
+
+bool
+LifespanPolicyTest::check (const ::DDS_LifespanQosPolicy & dds_qos,
+ const ::DDS::LifespanQosPolicy & qos)
+{
+ return Duration::check (dds_qos.duration, qos.duration);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.h
new file mode 100644
index 00000000000..482a2927450
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/lifespan_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef LIFESPAN_QOS_TEST_H_
+#define LIFESPAN_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/LifespanQosPolicy.h"
+
+class LifespanPolicyTest
+{
+public:
+ LifespanPolicyTest ();
+
+ static bool check (const ::DDS_LifespanQosPolicy & dds_qos,
+ const ::DDS::LifespanQosPolicy & qos);
+};
+
+#endif /* LIFESPAN_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.cpp
new file mode 100644
index 00000000000..b9f364a703f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.cpp
@@ -0,0 +1,17 @@
+// $Id$
+
+#include "liveliness_qos_test.h"
+
+#include "duration.h"
+
+LivelinessPolicyTest::LivelinessPolicyTest ()
+{
+}
+
+bool
+LivelinessPolicyTest::check (const ::DDS_LivelinessQosPolicy & dds_qos,
+ const ::DDS::LivelinessQosPolicy & qos)
+{
+ return dds_qos.kind == static_cast <DDS_LivelinessQosPolicyKind> (qos.kind) &&
+ Duration::check (dds_qos.lease_duration, qos.lease_duration);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.h
new file mode 100644
index 00000000000..a1d9208879c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/liveliness_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef LIVELINESS_QOS_TEST_H_
+#define LIVELINESS_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/LivelinessQosPolicy.h"
+
+class LivelinessPolicyTest
+{
+public:
+ LivelinessPolicyTest ();
+
+ static bool check (const ::DDS_LivelinessQosPolicy & dds_qos,
+ const ::DDS::LivelinessQosPolicy & qos);
+};
+
+#endif /* LIVELINESS_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/main.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/main.cpp
new file mode 100644
index 00000000000..985081f29ae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/main.cpp
@@ -0,0 +1,73 @@
+// $Id$
+
+#include "ace/OS_main.h"
+#include "ace/Log_Msg.h"
+
+#include "pub_qos_test.h"
+#include "sub_qos_test.h"
+#include "dw_qos_test.h"
+#include "dr_qos_test.h"
+#include "tp_qos_test.h"
+#include "dp_qos_test.h"
+
+int handle_result (const int & result,
+ const char * test)
+{
+ int ret = 0;
+ if (result == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR POLICIES : "
+ "Exception caught while testing "
+ "%C QoS\n",
+ test));
+ }
+ else if (result > 0)
+ {
+ ret = result;
+ ACE_ERROR ((LM_ERROR, "ERROR POLICIES : "
+ "<%d> errors found while testing "
+ "%C QoS\n",
+ result, test));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "%C QoS test passed!\n",
+ test));
+ }
+ return ret;
+}
+
+int
+ACE_TMAIN (int , ACE_TCHAR **)
+{
+ PublisherPolicyTest publisher;
+ SubscriberPolicyTest subscriber;
+ DatawriterPolicyTest datawriter;
+ DatareaderPolicyTest datareader;
+ TopicPolicyTest topic;
+ DomainParticipantPolicyTest domainparticipant;
+
+ int ret = 0;
+ int test = 0;
+ try
+ {
+ test = publisher.run ();
+ ret += handle_result (test, "Publisher");
+ test = subscriber.run ();
+ ret += handle_result (test, "Subscriber");
+ test = datawriter.run ();
+ ret += handle_result (test, "Datawriter");
+ test = datareader.run ();
+ ret += handle_result (test, "DataReader");
+ test = topic.run ();
+ ret += handle_result (test, "Topic");
+ test = domainparticipant.run ();
+ ret += handle_result (test, "DomainParticipant");
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unexpected exception caught."));
+ return -1;
+ }
+ return 0;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.cpp
new file mode 100644
index 00000000000..9912b6f1eee
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.cpp
@@ -0,0 +1,34 @@
+//$Id$
+
+#include "octet_seq.h"
+
+OctetSequence::OctetSequence ()
+{
+}
+
+bool
+OctetSequence::check (const ::DDS_OctetSeq & dds_seq,
+ const ::DDS::OctetSeq & seq,
+ const char * test)
+{
+ if (static_cast < ::CORBA::ULong> (dds_seq.length ()) !=
+ seq.length ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR %C : "
+ "Length group_data is not equal to original length.\n",
+ test));
+ return false;
+ }
+
+ for (::DDS_Long i = 0; i < dds_seq.length (); ++i)
+ {
+ if (seq[i] != dds_seq[i])
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR %C : "
+ "Item %d of group_data is not equal to original.\n",
+ test, i));
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.h
new file mode 100644
index 00000000000..62401a7630d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/octet_seq.h
@@ -0,0 +1,20 @@
+//$Id$
+
+#ifndef OCTET_SEQ_H_
+#define OCTET_SEQ_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/OctetSeq.h"
+
+class OctetSequence
+{
+public:
+ OctetSequence ();
+
+ static bool check (const ::DDS_OctetSeq & dds_seq,
+ const ::DDS::OctetSeq & seq,
+ const char * test);
+};
+
+#endif /* OCTET_SEQ_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.cpp
new file mode 100644
index 00000000000..b439bfe1b74
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.cpp
@@ -0,0 +1,15 @@
+// $Id$
+
+#include "ownership_qos_test.h"
+
+OwnershipPolicyTest::OwnershipPolicyTest ()
+{
+}
+
+bool
+OwnershipPolicyTest::check (const ::DDS_OwnershipQosPolicy & dds_qos,
+ const ::DDS::OwnershipQosPolicy & qos)
+{
+ return dds_qos.kind ==
+ static_cast <DDS_OwnershipQosPolicyKind> (qos.kind);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.h
new file mode 100644
index 00000000000..1307c7f6037
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef OWNERSHIP_QOS_TEST_H_
+#define OWNERSHIP_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/OwnershipQosPolicy.h"
+
+class OwnershipPolicyTest
+{
+public:
+ OwnershipPolicyTest ();
+
+ static bool check (const ::DDS_OwnershipQosPolicy & dds_qos,
+ const ::DDS::OwnershipQosPolicy & qos);
+};
+
+#endif /* OWNERSHIP_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.cpp
new file mode 100644
index 00000000000..d65bd7f725a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.cpp
@@ -0,0 +1,14 @@
+// $Id$
+
+#include "ownership_strength_qos_test.h"
+
+OwnershipStrengthPolicyTest::OwnershipStrengthPolicyTest ()
+{
+}
+
+bool
+OwnershipStrengthPolicyTest::check (const ::DDS_OwnershipStrengthQosPolicy & dds_qos,
+ const ::DDS::OwnershipStrengthQosPolicy & qos)
+{
+ return dds_qos.value == qos.value;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.h
new file mode 100644
index 00000000000..36e3169b594
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/ownership_strength_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef OWNERSHIP_STRENGTH_QOS_TEST_H_
+#define OWNERSHIP_STRENGTH_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/OwnershipStrengthQosPolicy.h"
+
+class OwnershipStrengthPolicyTest
+{
+public:
+ OwnershipStrengthPolicyTest ();
+
+ static bool check (const ::DDS_OwnershipStrengthQosPolicy & dds_qos,
+ const ::DDS::OwnershipStrengthQosPolicy & qos);
+};
+
+#endif /* OWNERSHIP_STRENGTH_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.cpp
new file mode 100644
index 00000000000..f0f56774186
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.cpp
@@ -0,0 +1,33 @@
+// $Id$
+
+#include "partition_qos_test.h"
+
+PartitionPolicyTest::PartitionPolicyTest ()
+{
+}
+
+bool
+PartitionPolicyTest::check (const ::DDS_PartitionQosPolicy & dds_qos,
+ const ::DDS::PartitionQosPolicy & qos)
+{
+ if (static_cast <CORBA::ULong> (dds_qos.name.length ()) !=
+ qos.name.length ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PartitionPolicyTest : "
+ "Length name sequence is not equal "
+ "to original length.\n"));
+ return false;
+ }
+ for (DDS_Long i = 0; i < dds_qos.name.length (); ++i)
+ {
+ if (ACE_OS::strcmp (dds_qos.name[i], qos.name[i]) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PartitionPolicyTest : "
+ "Item %d of name sequence is not equal "
+ "to original.\n",
+ i));
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.h
new file mode 100644
index 00000000000..6fef89f535d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/partition_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef PARTITION_QOS_TEST_H_
+#define PARTITION_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/PartitionQosPolicy.h"
+
+class PartitionPolicyTest
+{
+public:
+ PartitionPolicyTest ();
+
+ static bool check (const ::DDS_PartitionQosPolicy & dds_qos,
+ const ::DDS::PartitionQosPolicy & qos);
+};
+
+#endif /* PARTITION_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/policies.mpc b/modules/CIAO/connectors/dds4ccm/tests/Policies/policies.mpc
new file mode 100644
index 00000000000..02e68929f89
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/policies.mpc
@@ -0,0 +1,46 @@
+// $Id$
+
+project(DDS_Policies_Test) : taoexe, dds4ccm_base {
+ includes += $(CIAO_ROOT)
+ exename = policies_test
+ requires += dds4ccm_ndds
+
+ Source_Files {
+ deadline_qos_test.cpp
+ dest_order_qos_test.cpp
+ dp_factory_qos_test.cpp
+ dp_qos_test.cpp
+ dr_qos_test.cpp
+ dur_qos_test.cpp
+ dur_service_qos_test.cpp
+ dw_qos_test.cpp
+ entity_factory_qos_test.cpp
+ group_data_qos_test.cpp
+ hist_qos_test.cpp
+ lat_budget_qos_test.cpp
+ lifespan_qos_test.cpp
+ liveliness_qos_test.cpp
+ main.cpp
+ ownership_qos_test.cpp
+ partition_qos_test.cpp
+ presentation_qos_test.cpp
+ pub_qos_test.cpp
+ reliability_qos_test.cpp
+ resource_limits_qos_test.cpp
+ sub_qos_test.cpp
+ tp_data_qos_test.cpp
+ tp_qos_test.cpp
+ transport_prio_qos_test.cpp
+ user_data_qos_test.cpp
+ rd_lifecycle_qos_test.cpp
+ tbf_qos_test.cpp
+ ownership_strength_qos_test.cpp
+ wr_lifecycle_qos_test.cpp
+ duration.cpp
+ octet_seq.cpp
+ }
+
+ Header_Files {
+ *.h
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.cpp
new file mode 100644
index 00000000000..540bf6e1315
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.cpp
@@ -0,0 +1,19 @@
+// $Id$
+
+#include "presentation_qos_test.h"
+
+PresentationPolicyTest::PresentationPolicyTest ()
+{
+}
+
+bool
+PresentationPolicyTest::check (const ::DDS_PresentationQosPolicy & dds_qos,
+ const ::DDS::PresentationQosPolicy & qos)
+{
+ return dds_qos.access_scope ==
+ static_cast <DDS_PresentationQosPolicyAccessScopeKind>(qos.access_scope) &&
+ dds_qos.coherent_access ==
+ static_cast <DDS_Boolean> (qos.coherent_access) &&
+ dds_qos.ordered_access ==
+ static_cast <DDS_Boolean> (qos.ordered_access);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.h
new file mode 100644
index 00000000000..4359e25632c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/presentation_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef PRESENTATION_QOS_TEST_H_
+#define PRESENTATION_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/PresentationQosPolicy.h"
+
+class PresentationPolicyTest
+{
+public:
+ PresentationPolicyTest ();
+
+ static bool check (const ::DDS_PresentationQosPolicy & dds_qos,
+ const ::DDS::PresentationQosPolicy & qos);
+};
+
+#endif /* PRESENTATION_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.cpp
new file mode 100644
index 00000000000..7a3c0cb7737
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.cpp
@@ -0,0 +1,58 @@
+// $Id$
+
+#include "pub_qos_test.h"
+#include "group_data_qos_test.h"
+#include "entity_factory_qos_test.h"
+#include "presentation_qos_test.h"
+#include "partition_qos_test.h"
+
+PublisherPolicyTest::PublisherPolicyTest ()
+{
+}
+
+int
+PublisherPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::PublisherQos policy;
+ DDS_PublisherQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_PUBLISHER_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+ if (!PresentationPolicyTest::check (dds_policy.presentation, policy.presentation))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PUBLISHER : "
+ "Error in PresentationQosPolicy.\n"));
+ ++ret;
+ }
+ if (!PartitionPolicyTest::check (dds_policy.partition, policy.partition))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PUBLISHER : "
+ "Error in PartitionQosPolicy.\n"));
+ ++ret;
+ }
+ if (!GroupDataPolicyTest::check (dds_policy.group_data, policy.group_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PUBLISHER : "
+ "Error in GroupDataQosPolicy.\n"));
+ ++ret;
+ }
+ if (!EntityFactoryPolicyTest::check (dds_policy.entity_factory, policy.entity_factory))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PUBLISHER : "
+ "Error in EntityFactoryQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR PUBLISHER: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.h
new file mode 100644
index 00000000000..c2d022aff88
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/pub_qos_test.h
@@ -0,0 +1,18 @@
+// $Id$
+
+#ifndef PUBLISHER_QOS_TEST_H_
+#define PUBLISHER_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/PublisherQos.h"
+
+class PublisherPolicyTest
+{
+public:
+ PublisherPolicyTest ();
+
+ int run ();
+};
+
+#endif /* PUBLISHER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.cpp
new file mode 100644
index 00000000000..11574a4abfe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.cpp
@@ -0,0 +1,19 @@
+// $Id$
+
+#include "rd_lifecycle_qos_test.h"
+
+#include "duration.h"
+
+ReaderDataLifecyclePolicyTest::ReaderDataLifecyclePolicyTest ()
+{
+}
+
+bool
+ReaderDataLifecyclePolicyTest::check (const ::DDS_ReaderDataLifecycleQosPolicy & dds_qos,
+ const ::DDS::ReaderDataLifecycleQosPolicy & qos)
+{
+ return Duration::check (dds_qos.autopurge_nowriter_samples_delay,
+ qos.autopurge_nowriter_samples_delay) &&
+ Duration::check (dds_qos.autopurge_disposed_samples_delay,
+ qos.autopurge_disposed_samples_delay);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.h
new file mode 100644
index 00000000000..314704e1e96
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/rd_lifecycle_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef READER_DATA_LIFECYCLE_QOS_TEST_H_
+#define READER_DATA_LIFECYCLE_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/ReaderDataLifecycleQosPolicy.h"
+
+class ReaderDataLifecyclePolicyTest
+{
+public:
+ ReaderDataLifecyclePolicyTest ();
+
+ static bool check (const ::DDS_ReaderDataLifecycleQosPolicy & dds_qos,
+ const ::DDS::ReaderDataLifecycleQosPolicy & qos);
+};
+
+#endif /* READER_DATA_LIFECYCLE_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.cpp
new file mode 100644
index 00000000000..e4e405fdfc0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.cpp
@@ -0,0 +1,17 @@
+// $Id$
+
+#include "reliability_qos_test.h"
+
+#include "duration.h"
+
+ReliabilityPolicyTest::ReliabilityPolicyTest ()
+{
+}
+
+bool
+ReliabilityPolicyTest::check (const ::DDS_ReliabilityQosPolicy & dds_qos,
+ const ::DDS::ReliabilityQosPolicy & qos)
+{
+ return dds_qos.kind == static_cast <DDS_ReliabilityQosPolicyKind> (qos.kind) &&
+ Duration::check (dds_qos.max_blocking_time, qos.max_blocking_time);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.h
new file mode 100644
index 00000000000..d325f489c90
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/reliability_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef RELIABILITY_QOS_TEST_H_
+#define RELIABILITY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/ReliabilityQosPolicy.h"
+
+class ReliabilityPolicyTest
+{
+public:
+ ReliabilityPolicyTest ();
+
+ static bool check (const ::DDS_ReliabilityQosPolicy & dds_qos,
+ const ::DDS::ReliabilityQosPolicy & qos);
+};
+
+#endif /* RELIABILITY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.cpp
new file mode 100644
index 00000000000..46a1adc0327
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.cpp
@@ -0,0 +1,17 @@
+// $Id$
+
+#include "resource_limits_qos_test.h"
+
+ResourceLimitsPolicyTest::ResourceLimitsPolicyTest ()
+{
+}
+
+
+bool
+ResourceLimitsPolicyTest::check (const ::DDS_ResourceLimitsQosPolicy & dds_qos,
+ const ::DDS::ResourceLimitsQosPolicy & qos)
+{
+ return dds_qos.max_samples == qos.max_samples &&
+ dds_qos.max_instances == qos.max_instances &&
+ dds_qos.max_samples_per_instance == qos.max_samples_per_instance;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.h
new file mode 100644
index 00000000000..a430ee30034
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/resource_limits_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef RESOURCE_LIMITS_QOS_TEST_H_
+#define RESOURCE_LIMITS_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/ResourceLimitsQosPolicy.h"
+
+class ResourceLimitsPolicyTest
+{
+public:
+ ResourceLimitsPolicyTest ();
+
+ static bool check (const ::DDS_ResourceLimitsQosPolicy & dds_qos,
+ const ::DDS::ResourceLimitsQosPolicy & qos);
+};
+
+#endif /* RESOURCE_LIMITS_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Policies/run_test.pl
new file mode 100755
index 00000000000..87048af071f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/run_test.pl
@@ -0,0 +1,25 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::TestTarget;
+
+my $program = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n";
+
+$PROG = $program->CreateProcess ("policies_test", "");
+$program_status = $PROG->Spawn ();
+
+if ($program_status != 0) {
+ print STDERR "ERROR: GroupDataPolicy returned $program_status\n";
+ exit 1;
+}
+
+sleep ($program->ProcessStartWaitInterval());
+
+$program_status = $PROG->Kill ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.cpp
new file mode 100644
index 00000000000..15950dc88b4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.cpp
@@ -0,0 +1,59 @@
+// $Id$
+
+#include "sub_qos_test.h"
+
+#include "group_data_qos_test.h"
+#include "entity_factory_qos_test.h"
+#include "presentation_qos_test.h"
+#include "partition_qos_test.h"
+
+SubscriberPolicyTest::SubscriberPolicyTest ()
+{
+}
+
+int
+SubscriberPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::SubscriberQos policy;
+ DDS_SubscriberQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_SUBSCRIBER_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+ if (!PresentationPolicyTest::check (dds_policy.presentation, policy.presentation))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SUBSCRIBER : "
+ "Error in PresentationQosPolicy.\n"));
+ ++ret;
+ }
+ if (!PartitionPolicyTest::check (dds_policy.partition, policy.partition))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SUBSCRIBER : "
+ "Error in PartitionQosPolicy.\n"));
+ ++ret;
+ }
+ if (!GroupDataPolicyTest::check (dds_policy.group_data, policy.group_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SUBSCRIBER : "
+ "Error in GroupDataQosPolicy.\n"));
+ ++ret;
+ }
+ if (!EntityFactoryPolicyTest::check (dds_policy.entity_factory, policy.entity_factory))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SUBSCRIBER : "
+ "Error in EntityFactoryQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR SUBSCRIBER: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.h
new file mode 100644
index 00000000000..dc85ffdd582
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/sub_qos_test.h
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef SUBSCRIBER_QOS_TEST_H_
+#define SUBSCRIBER_QOS_TEST_H_
+
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/SubscriberQos.h"
+
+class SubscriberPolicyTest
+{
+public:
+ SubscriberPolicyTest ();
+
+ int run ();
+};
+
+#endif /* SUBSCRIBER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.cpp
new file mode 100644
index 00000000000..c300174e7f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.cpp
@@ -0,0 +1,15 @@
+// $Id$
+
+#include "tbf_qos_test.h"
+#include "duration.h"
+
+TimeBasedFilterPolicyTest::TimeBasedFilterPolicyTest ()
+{
+}
+
+bool
+TimeBasedFilterPolicyTest::check (const ::DDS_TimeBasedFilterQosPolicy & dds_qos,
+ const ::DDS::TimeBasedFilterQosPolicy & qos)
+{
+ return Duration::check (dds_qos.minimum_separation, qos.minimum_separation);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.h
new file mode 100644
index 00000000000..f42d8aaf7e0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tbf_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef TIME_BASED_FILTER_QOS_TEST_H_
+#define TIME_BASED_FILTER_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/TimeBasedFilterQosPolicy.h"
+
+class TimeBasedFilterPolicyTest
+{
+public:
+ TimeBasedFilterPolicyTest ();
+
+ static bool check (const ::DDS_TimeBasedFilterQosPolicy & dds_qos,
+ const ::DDS::TimeBasedFilterQosPolicy & qos);
+};
+
+#endif /* TIME_BASED_FILTER_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.cpp
new file mode 100644
index 00000000000..c9377c996b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.cpp
@@ -0,0 +1,18 @@
+// $Id$
+
+#include "tp_data_qos_test.h"
+
+#include "octet_seq.h"
+
+TopicDataPolicyTest::TopicDataPolicyTest ()
+{
+}
+
+bool
+TopicDataPolicyTest::check (const ::DDS_TopicDataQosPolicy & dds_qos,
+ const ::DDS::TopicDataQosPolicy & qos)
+{
+ return OctetSequence::check (dds_qos.value,
+ qos.value,
+ "TopicDataPolicyTest");
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.h
new file mode 100644
index 00000000000..2ccb36be118
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_data_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef TOPIC_DATA_QOS_TEST_H_
+#define TOPIC_DATA_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/TopicDataQosPolicy.h"
+
+class TopicDataPolicyTest
+{
+public:
+ TopicDataPolicyTest ();
+
+ static bool check (const ::DDS_TopicDataQosPolicy & dds_qos,
+ const ::DDS::TopicDataQosPolicy & qos);
+};
+
+#endif /* TOPIC_DATA_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.cpp
new file mode 100644
index 00000000000..65a338ae499
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.cpp
@@ -0,0 +1,148 @@
+// $Id$
+
+#include "tp_qos_test.h"
+
+#include "tp_data_qos_test.h"
+#include "dur_qos_test.h"
+#include "dur_service_qos_test.h"
+#include "deadline_qos_test.h"
+#include "lat_budget_qos_test.h"
+#include "liveliness_qos_test.h"
+#include "reliability_qos_test.h"
+#include "dest_order_qos_test.h"
+#include "hist_qos_test.h"
+#include "resource_limits_qos_test.h"
+#include "transport_prio_qos_test.h"
+#include "lifespan_qos_test.h"
+#include "ownership_qos_test.h"
+
+TopicPolicyTest::TopicPolicyTest ()
+{
+}
+
+int
+TopicPolicyTest::run ()
+{
+ int ret = 0;
+ try
+ {
+ ::DDS::TopicQos policy;
+ DDS_TopicQos dds_policy_org, dds_policy;
+
+ dds_policy_org = DDS_TOPIC_QOS_DEFAULT;
+
+ policy <<= dds_policy_org;
+ dds_policy <<= policy;
+
+
+ if (!TopicDataPolicyTest::check (dds_policy.topic_data,
+ policy.topic_data))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in TopicDataQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DurabilityPolicyTest::check (dds_policy.durability,
+ policy.durability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in DurabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DurabilityServicePolicyTest::check (dds_policy.durability_service,
+ policy.durability_service))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in DurabilityServiceQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DeadlinePolicyTest::check (dds_policy.deadline,
+ policy.deadline))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in DeadlineQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LatencyBudgetPolicyTest::check (dds_policy.latency_budget,
+ policy.latency_budget))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in LatencyBudgetQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LivelinessPolicyTest::check (dds_policy.liveliness,
+ policy.liveliness))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in LivelinessQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ReliabilityPolicyTest::check (dds_policy.reliability,
+ policy.reliability))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in ReliabilityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!DestinationOrderPolicyTest::check (dds_policy.destination_order,
+ policy.destination_order))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in DestinationOrderQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!HistoryPolicyTest::check (dds_policy.history,
+ policy.history))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in HistoryQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!ResourceLimitsPolicyTest::check (dds_policy.resource_limits,
+ policy.resource_limits))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in ResourceLimitsQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!TransportPriorityPolicyTest::check (dds_policy.transport_priority,
+ policy.transport_priority))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in TransportPriorityQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!LifespanPolicyTest::check (dds_policy.lifespan,
+ policy.lifespan))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in LifespanQosPolicy.\n"));
+ ++ret;
+ }
+
+ if (!OwnershipPolicyTest::check (dds_policy.ownership,
+ policy.ownership))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC : "
+ "Error in OwnershipQosPolicy.\n"));
+ ++ret;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR TOPIC: Unexpected exception caught."));
+ return -1;
+ }
+ return ret;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.h
new file mode 100644
index 00000000000..0508102b8e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/tp_qos_test.h
@@ -0,0 +1,18 @@
+// $Id$
+
+#ifndef TOPIC_QOS_TEST_H_
+#define TOPIC_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/TopicQos.h"
+
+class TopicPolicyTest
+{
+public:
+ TopicPolicyTest ();
+
+ int run ();
+};
+
+#endif /* TOPIC_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.cpp
new file mode 100644
index 00000000000..d4aaa7d74ad
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.cpp
@@ -0,0 +1,14 @@
+// $Id$
+
+#include "transport_prio_qos_test.h"
+
+TransportPriorityPolicyTest::TransportPriorityPolicyTest ()
+{
+}
+
+bool
+TransportPriorityPolicyTest::check (const ::DDS_TransportPriorityQosPolicy & dds_qos,
+ const ::DDS::TransportPriorityQosPolicy & qos)
+{
+ return dds_qos.value == qos.value;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.h
new file mode 100644
index 00000000000..358dd62388f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/transport_prio_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef TRANSPORT_PRIORITY_QOS_TEST_H_
+#define TRANSPORT_PRIORITY_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/TransportPriorityQosPolicy.h"
+
+class TransportPriorityPolicyTest
+{
+public:
+ TransportPriorityPolicyTest ();
+
+ static bool check (const ::DDS_TransportPriorityQosPolicy & dds_qos,
+ const ::DDS::TransportPriorityQosPolicy & qos);
+};
+
+#endif /* TRANSPORT_PRIORITY_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.cpp
new file mode 100644
index 00000000000..48ee76b0e20
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.cpp
@@ -0,0 +1,18 @@
+// $Id$
+
+#include "user_data_qos_test.h"
+
+#include "octet_seq.h"
+
+UserDataPolicyTest::UserDataPolicyTest ()
+{
+}
+
+bool
+UserDataPolicyTest::check (const ::DDS_UserDataQosPolicy & dds_qos,
+ const ::DDS::UserDataQosPolicy & qos)
+{
+ return OctetSequence::check (dds_qos.value,
+ qos.value,
+ "UserDataPolicyTest");
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.h
new file mode 100644
index 00000000000..c56c94f48f9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/user_data_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef USER_DATA_QOS_TEST_H_
+#define USER_DATA_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/UserDataQosPolicy.h"
+
+class UserDataPolicyTest
+{
+public:
+ UserDataPolicyTest ();
+
+ static bool check (const ::DDS_UserDataQosPolicy & dds_qos,
+ const ::DDS::UserDataQosPolicy & qos);
+};
+
+#endif /* USER_DATA_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.cpp b/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.cpp
new file mode 100644
index 00000000000..6a8da1b9103
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.cpp
@@ -0,0 +1,15 @@
+// $Id$
+
+#include "wr_lifecycle_qos_test.h"
+
+WriterDataLifecyclePolicyTest::WriterDataLifecyclePolicyTest ()
+{
+}
+
+bool
+WriterDataLifecyclePolicyTest::check (const ::DDS_WriterDataLifecycleQosPolicy & dds_qos,
+ const ::DDS::WriterDataLifecycleQosPolicy & qos)
+{
+ return dds_qos.autodispose_unregistered_instances ==
+ static_cast <DDS_Boolean> (qos.autodispose_unregistered_instances);
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.h b/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.h
new file mode 100644
index 00000000000..ac8674525f0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Policies/wr_lifecycle_qos_test.h
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef WRITER_DATA_LIFECYCLE_QOS_TEST_H_
+#define WRITER_DATA_LIFECYCLE_QOS_TEST_H_
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "ndds/ndds_cpp.h"
+#include "dds4ccm/impl/dds/ndds/WriterDataLifecycleQosPolicy.h"
+
+class WriterDataLifecyclePolicyTest
+{
+public:
+ WriterDataLifecyclePolicyTest ();
+
+ static bool check (const ::DDS_WriterDataLifecycleQosPolicy & dds_qos,
+ const ::DDS::WriterDataLifecycleQosPolicy & qos);
+};
+
+#endif /* WRITER_DATA_LIFECYCLE_QOS_TEST_H_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.idl
new file mode 100644
index 00000000000..d7a42a8a2ea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+/**
+ * @file PortUsage_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef PORTUSAGE_EVENT_TEST_BASE_IDL
+#define PORTUSAGE_EVENT_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/PortUsage_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "PortUsageTest"
+#pragma DCPS_DATA_KEY "PortUsageTest symbol"
+
+struct PortUsageTest {
+ string symbol; //@key
+ long iteration;
+};
+
+typedef sequence<PortUsageTest> PortUsageTestSeq;
+
+enum PortUsageAssignment {
+ //event ports
+ PORTUSAGE_ASSIGNMENT_WRITE,
+ //event and state ports
+ PORTUSAGE_ASSIGNMENT_GET,
+ PORTUSAGE_ASSIGNMENT_LISTEN,
+ //state ports
+ PORTUSAGE_ASSIGNMENT_UPDATE,
+ PORTUSAGE_ASSIGNMENT_READ,
+ PORTUSAGE_ASSIGNMENT_STATELISTEN
+};
+
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.mpc
new file mode 100755
index 00000000000..d8125682fb4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/Base/PortUsage_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (PortUsage_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = PortUsage_Test_Base_stub
+ dynamicflags += PORTUSAGE_EVENT_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=PORTUSAGE_EVENT_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=PortUsage_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ PortUsage_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=PORTUSAGE_EVENT_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ PortUsage_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.idl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.idl
new file mode 100644
index 00000000000..f74ce0c0306
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef EVENT_COMPONENT_IDL
+#define EVENT_COMPONENT_IDL
+
+#include "EventConnector/PortUsageEvent_Connector.idl"
+
+module PortUsageEvent_Test
+{
+ component PortUsageEventComponent
+ {
+ port PortUsageTestConn::DDS_Write write_port;
+ port PortUsageTestConn::DDS_Get get_port;
+ port PortUsageTestConn::DDS_Listen listen_port;
+
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+
+ attribute PortUsageAssignment portusage_assignment;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.mpc b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.mpc
new file mode 100755
index 00000000000..7b483c5ec20
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(PortUsageEvent_Component_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += PortUsageEvent_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Component_stub_export.h \
+ -Wb,skel_export_macro=COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Component_svnt_export.h \
+ -Wb,svnt_export_macro=COMPONENT_SVNT_Export \
+ -Wb,svnt_export_include=Component_svnt_export.h \
+ -Wb,exec_export_macro=COMPONENT_EXEC_Export \
+ -Wb,exec_export_include=Component_exec_export.h -I..
+
+ IDL_Files {
+ PortUsageEvent_Component.idl
+ }
+}
+
+project(PortUsageEvent_Component_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += PortUsageEvent_Component_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_LEM_STUB_Export \
+ -Wb,stub_export_include=Component_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ PortUsageEvent_ComponentE.idl
+ }
+}
+
+project(PortUsageEvent_Component_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += PortUsageEvent_Component_lem_gen PortUsageEvent_Component_stub \
+ PortUsageEvent_Connector_stub PortUsage_Test_Base_stub
+ libs += EventComponent_stub PortUsageEvent_Connector_stub \
+ PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = EventComponent_lem_stub
+ dynamicflags = COMPONENT_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ComponentEC.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ComponentEC.h
+ Component_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ComponentEC.inl
+ }
+}
+
+project(PortUsageEvent_Component_stub) : ccm_stub, dds4ccm_base {
+ after += PortUsageEvent_Component_idl_gen PortUsageEvent_Connector_stub \
+ PortUsage_Test_Base_stub PortUsageEvent_Connector_lem_gen
+ libs += PortUsageEvent_Connector_stub PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = EventComponent_stub
+ dynamicflags = COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ComponentC.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ComponentC.h
+ Component_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ComponentC.inl
+ }
+}
+
+project(PortUsageEvent_Component_exec) : ciao_executor, dds4ccm_base {
+ after += PortUsageEvent_Component_lem_stub PortUsageEvent_Component_stub \
+ PortUsage_Test_Base_stub PortUsageEvent_Connector_stub \
+ PortUsageEvent_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = EventComponent_exec
+ libs += EventComponent_stub EventComponent_lem_stub PortUsage_Test_Base_stub \
+ PortUsageEvent_Connector_stub PortUsageEvent_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_Component_exec.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_Component_exec.h
+ Component_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(PortUsageEvent_Component_svnt) : ciao_servant, dds4ccm_base {
+ after += PortUsageEvent_Component_lem_stub PortUsage_Test_Base_stub \
+ PortUsageEvent_Connector_stub PortUsageEvent_Connector_svnt \
+ PortUsageEvent_Component_exec PortUsageEvent_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = EventComponent_svnt
+ libs += EventComponent_stub EventComponent_lem_stub PortUsage_Test_Base_stub \
+ PortUsageEvent_Connector_stub PortUsageEvent_Connector_svnt \
+ EventComponent_exec PortUsageEvent_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ComponentS.cpp
+ PortUsageEvent_Component_svnt.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ComponentS.h
+ PortUsageEvent_Component_svnt.h
+ Component_svnt_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ComponentS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.cpp
new file mode 100644
index 00000000000..4f2a1ff666e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.cpp
@@ -0,0 +1,296 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "PortUsageEvent_Component_exec.h"
+
+#include "ace/OS_NS_unistd.h"
+#include "ace/Log_Msg.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_PortUsageEvent_Test_PortUsageEventComponent_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_ULong& datareaders_count,
+ Atomic_ULong& datawriters_count)
+ : datareaders_count_ (datareaders_count),
+ datawriters_count_ (datawriters_count)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "ConnectorStatusListener_exec_i::on_unexpected_status <%C>\n",
+ CIAO::DDS4CCM::translate_statuskind (status_kind)));
+ if (status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ DDS::DataWriter_var dw = DDS::DataWriter::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dw.in ()))
+ {
+ ++this->datawriters_count_;
+ ACE_DEBUG ((LM_DEBUG, "DataWriters found until now <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ else
+ {
+ DDS::DataReader_var dr = DDS::DataReader::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dr.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : DATAREADER isn't nil when receiving an "
+ "on_publication_matched status\n"));
+ }
+ }
+ }
+ if (status_kind == DDS::SUBSCRIPTION_MATCHED_STATUS)
+ {
+ DDS::DataReader_var dw = DDS::DataReader::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dw.in ()))
+ {
+ ++this->datareaders_count_;
+ ACE_DEBUG ((LM_DEBUG, "DataReaders found until now <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ DDS::DataWriter_var dr = DDS::DataWriter::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dr.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : DATAREADER isn't nil when receiving an "
+ "on_subscription_matched status\n"));
+ }
+ }
+ }
+
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ Component_exec_i::Component_exec_i (void)
+ : assignment_ (PORTUSAGE_ASSIGNMENT_WRITE),
+ datareaders_count_ (0),
+ datawriters_count_ (0)
+ {
+ }
+
+ Component_exec_i::~Component_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Component_exec_i::check_writer ()
+ {
+ if (this->datawriters_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_writer - "
+ "ERROR : Unexpected number of DataWriters detected - "
+ "expected <1> - detected <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_writer - "
+ "OK : Detected the expected number of DataWriters - "
+ "expected <1> - detected <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_getter ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_getter - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_getter - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_listener ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_listener - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_listener - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ // Component attributes.
+ PortUsageAssignment
+ Component_exec_i::portusage_assignment()
+ {
+ return this->assignment_;
+ }
+
+ void
+ Component_exec_i::portusage_assignment(PortUsageAssignment assignment)
+ {
+ switch (assignment)
+ {
+ case PORTUSAGE_ASSIGNMENT_WRITE:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check writer port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_GET:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check getter port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_LISTEN:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check listener port'\n"));
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::portusage_assignment - "
+ "ERROR : Unknown assignment\n"));
+ break;
+
+ }
+ this->assignment_ = assignment;
+ }
+
+ // Port operations.
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_get_port_status()
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ PortUsageEvent_Test::PortUsageTestConn::CCM_Listener_ptr
+ Component_exec_i::get_listen_port_data_listener()
+ {
+ return PortUsageEvent_Test::PortUsageTestConn::CCM_Listener::_nil ();
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_listen_port_status()
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Component_exec_i::get_connector_status ()
+ {
+ return new ConnectorStatusListener_exec_i (
+ this->datareaders_count_,
+ this->datawriters_count_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Component_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::PortUsageEvent_Test::CCM_PortUsageEventComponent_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Component_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_remove (void)
+ {
+ switch (this->assignment_)
+ {
+ case PORTUSAGE_ASSIGNMENT_WRITE:
+ this->check_writer ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_GET:
+ this->check_getter ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_LISTEN:
+ this->check_listener ();
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::ccm_remove - "
+ "ERROR : Unknown assignment\n"));
+ break;
+
+ }
+ }
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PortUsageEvent_Component_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Component_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.h
new file mode 100644
index 00000000000..d3cf4ff9b4f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventComponent/PortUsageEvent_Component_exec.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_COMPONENT_EXEC_H_
+#define CIAO_COMPONENT_EXEC_H_
+
+#include "PortUsageEvent_ComponentEC.h"
+
+#include /**/ "Component_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_PortUsageEvent_Test_PortUsageEventComponent_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class COMPONENT_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_ULong&,
+ Atomic_ULong&);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_ULong& datareaders_count_;
+ Atomic_ULong& datawriters_count_;
+ };
+
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ class COMPONENT_EXEC_Export Component_exec_i
+ : public virtual PortUsageEventComponent_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Component_exec_i (void);
+ virtual ~Component_exec_i (void);
+
+ // Component attributes.
+ virtual PortUsageAssignment
+ portusage_assignment (void);
+
+ virtual void
+ portusage_assignment (PortUsageAssignment assignment);
+
+ // Port operations.
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_get_port_status (void);
+
+ virtual PortUsageEvent_Test::PortUsageTestConn::CCM_Listener_ptr
+ get_listen_port_data_listener (void);
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_listen_port_status (void);
+
+ virtual CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status ();
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::PortUsageEvent_Test::CCM_PortUsageEventComponent_Context_var context_;
+ ::PortUsageEvent_Test::PortUsageTestConn::Reader_var reader_; //Listener
+ ::PortUsageEvent_Test::PortUsageTestConn::Writer_var writer_; //Writer
+ ::PortUsageEvent_Test::PortUsageTestConn::Getter_var getter_; //Getter
+
+ PortUsageAssignment assignment_;
+
+ Atomic_ULong datareaders_count_;
+ Atomic_ULong datawriters_count_;
+
+ // Supported operations and attributes.
+ void
+ check_writer (void);
+
+ void
+ check_getter (void);
+
+ void
+ check_listener (void);
+ };
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PortUsageEvent_Component_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.idl
new file mode 100644
index 00000000000..a1067b2be0f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file PortUsageEvent_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef PORTUSAGE_EVENT_TEST_CONNECTOR_IDL_
+#define PORTUSAGE_EVENT_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/PortUsage_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "EventConnector/PortUsageEvent_ConnectorE.idl"
+
+module PortUsageEvent_Test
+{
+ module ::CCM_DDS::Typed < ::PortUsageTest, ::PortUsageTestSeq> PortUsageTestConn;
+ connector PortUsageEvent_Connector : PortUsageTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* PORTUSAGE_EVENT_TEST_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.mpc
new file mode 100755
index 00000000000..d11121d36f6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/EventConnector/PortUsageEvent_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p PortUsage_Test_Base -l .. -o ../lib -u DDS PortUsageEvent_Connector"
+
+project(PortUsageEvent_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=PortUsageEvent_Connector_stub_export.h \
+ -Wb,skel_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=PortUsageEvent_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=PortUsageEvent_Connector_svnt_export.h \
+ -Wb,conn_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=PortUsageEvent_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ PortUsageEvent_Connector.idl
+ }
+}
+
+project(PortUsageEvent_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += PortUsageEvent_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=PortUsageEvent_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ PortUsageEvent_ConnectorE.idl
+ }
+}
+
+project(PortUsageEvent_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += PortUsageEvent_Connector_lem_gen PortUsageEvent_Connector_stub PortUsage_Test_Base_stub DDS4CCM_lem_stub
+ libs += PortUsage_Test_Base_stub PortUsageEvent_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = PortUsageEvent_Connector_lem_stub
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ConnectorEC.h
+ PortUsageEvent_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ConnectorEC.inl
+ }
+}
+
+project(PortUsageEvent_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += PortUsageEvent_Connector_idl_gen PortUsage_Test_Base_stub
+ libs += PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = PortUsageEvent_Connector_stub
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ConnectorC.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ConnectorC.h
+ PortUsageEvent_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ConnectorC.inl
+ }
+}
+
+project(PortUsageEvent_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += PortUsageEvent_Connector_lem_stub PortUsageEvent_Connector_stub DDS4CCM_lem_stub PortUsage_Test_Base_stub
+ sharedname = PortUsageEvent_Connector_exec
+ libs += PortUsageEvent_Connector_stub PortUsageEvent_Connector_lem_stub PortUsage_Test_Base_stub DDS4CCM_lem_stub PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_Connector_conn.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_Connector_conn.h
+ PortUsageEvent_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(PortUsageEvent_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += PortUsageEvent_Connector_lem_stub PortUsageEvent_Connector_exec PortUsageEvent_Connector_stub DDS4CCM_lem_stub
+ sharedname = PortUsageEvent_Connector_svnt
+ libs += PortUsageEvent_Connector_stub \
+ PortUsageEvent_Connector_lem_stub \
+ PortUsage_Test_Base_stub \
+ PortUsageEvent_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageEvent_ConnectorS.cpp
+ PortUsageEvent_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ PortUsageEvent_ConnectorS.h
+ PortUsageEvent_Connector_svnt.h
+ PortUsageEvent_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ PortUsageEvent_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.idl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.idl
new file mode 100644
index 00000000000..9c04651fe63
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef STATE_COMPONENT_IDL
+#define STATE_COMPONENT_IDL
+
+#include "StateConnector/PortUsageState_Connector.idl"
+
+module PortUsageState_Test
+{
+ component PortUsageStateComponent
+ {
+ port PortUsageTestConn::DDS_Update update_port;
+ port PortUsageTestConn::DDS_Read read_port;
+ port PortUsageTestConn::DDS_Get get_port;
+ port PortUsageTestConn::DDS_Listen listen_port;
+ port PortUsageTestConn::DDS_StateListen state_listen_port;
+
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+
+ attribute PortUsageAssignment portusage_assignment;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.mpc b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.mpc
new file mode 100755
index 00000000000..cd3ede80694
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(PortUsageState_Component_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += PortUsageState_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Component_stub_export.h \
+ -Wb,skel_export_macro=COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Component_svnt_export.h \
+ -Wb,svnt_export_macro=COMPONENT_SVNT_Export \
+ -Wb,svnt_export_include=Component_svnt_export.h \
+ -Wb,exec_export_macro=COMPONENT_EXEC_Export \
+ -Wb,exec_export_include=Component_exec_export.h -I..
+
+ IDL_Files {
+ PortUsageState_Component.idl
+ }
+}
+
+project(PortUsageState_Component_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += PortUsageState_Component_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_LEM_STUB_Export \
+ -Wb,stub_export_include=Component_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ PortUsageState_ComponentE.idl
+ }
+}
+
+project(PortUsageState_Component_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += PortUsageState_Component_lem_gen PortUsageState_Component_stub \
+ PortUsageState_Connector_stub PortUsage_Test_Base_stub
+ libs += StateComponent_stub PortUsageState_Connector_stub \
+ PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = StateComponent_lem_stub
+ dynamicflags = COMPONENT_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ComponentEC.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ComponentEC.h
+ Component_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ComponentEC.inl
+ }
+}
+
+project(PortUsageState_Component_stub) : ccm_stub, dds4ccm_base {
+ after += PortUsageState_Component_idl_gen PortUsageState_Connector_stub \
+ PortUsage_Test_Base_stub PortUsageState_Connector_lem_gen
+ libs += PortUsageState_Connector_stub PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = StateComponent_stub
+ dynamicflags = COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ComponentC.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ComponentC.h
+ Component_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ComponentC.inl
+ }
+}
+
+project(PortUsageState_Component_exec) : ciao_executor, dds4ccm_base {
+ after += PortUsageState_Component_lem_stub PortUsageState_Component_stub \
+ PortUsage_Test_Base_stub PortUsageState_Connector_stub \
+ PortUsageState_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = StateComponent_exec
+ libs += StateComponent_stub StateComponent_lem_stub PortUsage_Test_Base_stub \
+ PortUsageState_Connector_stub PortUsageState_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_Component_exec.cpp
+ }
+
+ Header_Files {
+ PortUsageState_Component_exec.h
+ Component_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(PortUsageState_Component_svnt) : ciao_servant, dds4ccm_base {
+ after += PortUsageState_Component_lem_stub PortUsage_Test_Base_stub \
+ PortUsageState_Connector_stub PortUsageState_Connector_svnt \
+ PortUsageState_Component_exec PortUsageState_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = StateComponent_svnt
+ libs += StateComponent_stub StateComponent_lem_stub PortUsage_Test_Base_stub \
+ PortUsageState_Connector_stub PortUsageState_Connector_svnt \
+ StateComponent_exec PortUsageState_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ComponentS.cpp
+ PortUsageState_Component_svnt.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ComponentS.h
+ PortUsageState_Component_svnt.h
+ Component_svnt_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ComponentS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.cpp
new file mode 100644
index 00000000000..1e546119b36
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.cpp
@@ -0,0 +1,365 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "PortUsageState_Component_exec.h"
+
+#include "ace/OS_NS_unistd.h"
+#include "ace/Log_Msg.h"
+#include "ciao/Logger/Log_Macros.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_PortUsageState_Test_PortUsageStateComponent_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_ULong& datareaders_count,
+ Atomic_ULong& datawriters_count)
+ : datareaders_count_ (datareaders_count),
+ datawriters_count_ (datawriters_count)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "ConnectorStatusListener_exec_i::on_unexpected_status <%C>\n",
+ CIAO::DDS4CCM::translate_statuskind (status_kind)));
+ if (status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ DDS::DataWriter_var dw = DDS::DataWriter::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dw.in ()))
+ {
+ ++this->datawriters_count_;
+ ACE_DEBUG ((LM_DEBUG, "DataWriters found until now <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ else
+ {
+ DDS::DataReader_var dr = DDS::DataReader::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dr.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : DATAREADER isn't nil when receiving an "
+ "on_publication_matched status\n"));
+ }
+ }
+ }
+ if (status_kind == DDS::SUBSCRIPTION_MATCHED_STATUS)
+ {
+ DDS::DataReader_var dw = DDS::DataReader::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dw.in ()))
+ {
+ ++this->datareaders_count_;
+ ACE_DEBUG ((LM_DEBUG, "DataReaders found until now <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ DDS::DataWriter_var dr = DDS::DataWriter::_narrow (the_entity);
+ if (! ::CORBA::is_nil (dr.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : DATAREADER isn't nil when receiving an "
+ "on_subscription_matched status\n"));
+ }
+ }
+ }
+
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ Component_exec_i::Component_exec_i (void)
+ : assignment_ (PORTUSAGE_ASSIGNMENT_WRITE),
+ datareaders_count_ (0),
+ datawriters_count_ (0)
+ {
+ }
+
+ Component_exec_i::~Component_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Component_exec_i::check_updater ()
+ {
+ if (this->datawriters_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_writer - "
+ "ERROR : Unexpected number of DataWriters detected - "
+ "expected <1> - detected <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_writer - "
+ "OK : Detected the expect number of DataWriters - "
+ "expected <1> - detected <%u>\n",
+ this->datawriters_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_getter ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_getter - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_getter - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_listener ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_listener - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_listener - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_reader ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_reader - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_reader - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ void
+ Component_exec_i::check_state_listen ()
+ {
+ if (this->datareaders_count_.value () != 1)
+ {
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::check_state_listen - "
+ "ERROR : Unexpected number of DataReaders detected - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Component_exec_i::check_state_listen - "
+ "OK : Detected the expected number of DataReaders - "
+ "expected <1> - detected <%u>\n",
+ this->datareaders_count_.value ()));
+ }
+ }
+
+ // Component attributes.
+ PortUsageAssignment
+ Component_exec_i::portusage_assignment()
+ {
+ return this->assignment_;
+ }
+
+ void
+ Component_exec_i::portusage_assignment(PortUsageAssignment assignment)
+ {
+ switch (assignment)
+ {
+ case PORTUSAGE_ASSIGNMENT_UPDATE:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check updater port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_GET:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check getter port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_LISTEN:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check listener port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_READ:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check reader port'\n"));
+ break;
+ case PORTUSAGE_ASSIGNMENT_STATELISTEN:
+ ACE_DEBUG ((LM_DEBUG, "New assigment: 'check state listen port'\n"));
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::portusage_assignment - "
+ "ERROR : Unknown assignment\n"));
+ break;
+
+ }
+ this->assignment_ = assignment;
+ }
+
+ // Port operations.
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_read_port_status()
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ PortUsageState_Test::PortUsageTestConn::CCM_StateListener_ptr
+ Component_exec_i::get_state_listen_port_data_listener()
+ {
+ return PortUsageState_Test::PortUsageTestConn::CCM_StateListener::_nil ();
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_state_listen_port_status()
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Component_exec_i::get_connector_status ()
+ {
+ return new ConnectorStatusListener_exec_i (
+ this->datareaders_count_,
+ this->datawriters_count_);
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_get_port_status (void)
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ PortUsageState_Test::PortUsageTestConn::CCM_Listener_ptr
+ Component_exec_i::get_listen_port_data_listener (void)
+ {
+ return PortUsageState_Test::PortUsageTestConn::CCM_Listener::_nil ();
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Component_exec_i::get_listen_port_status (void)
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+
+ // Operations from Components::SessionComponent.
+ void
+ Component_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::PortUsageState_Test::CCM_PortUsageStateComponent_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Component_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_remove (void)
+ {
+ switch (this->assignment_)
+ {
+ case PORTUSAGE_ASSIGNMENT_UPDATE:
+ this->check_updater ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_GET:
+ this->check_getter ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_LISTEN:
+ this->check_listener ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_READ:
+ this->check_reader ();
+ break;
+ case PORTUSAGE_ASSIGNMENT_STATELISTEN:
+ this->check_state_listen ();
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR, "Component_exec_i::ccm_remove - "
+ "ERROR : Unknown assignment\n"));
+ break;
+
+ }
+ }
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PortUsageState_Component_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Component_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.h b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.h
new file mode 100644
index 00000000000..fbc345bab50
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateComponent/PortUsageState_Component_exec.h
@@ -0,0 +1,140 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_COMPONENT_EXEC_H_
+#define CIAO_COMPONENT_EXEC_H_
+
+#include "PortUsageState_ComponentEC.h"
+
+#include /**/ "Component_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_PortUsageState_Test_PortUsageStateComponent_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong;
+
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ class COMPONENT_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_ULong&,
+ Atomic_ULong&);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_ULong& datareaders_count_;
+ Atomic_ULong& datawriters_count_;
+ };
+
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ class COMPONENT_EXEC_Export Component_exec_i
+ : public virtual PortUsageStateComponent_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Component_exec_i (void);
+ virtual ~Component_exec_i (void);
+
+ // Component attributes.
+ virtual PortUsageAssignment
+ portusage_assignment (void);
+
+ virtual void
+ portusage_assignment (PortUsageAssignment assignment);
+
+ // Port operations.
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_read_port_status (void);
+
+ virtual PortUsageState_Test::PortUsageTestConn::CCM_StateListener_ptr
+ get_state_listen_port_data_listener (void);
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_state_listen_port_status (void);
+
+ virtual CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status ();
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_get_port_status (void);
+
+ virtual PortUsageState_Test::PortUsageTestConn::CCM_Listener_ptr
+ get_listen_port_data_listener (void);
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_listen_port_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::PortUsageState_Test::CCM_PortUsageStateComponent_Context_var context_;
+ ::PortUsageState_Test::PortUsageTestConn::Reader_var reader_; //Listener
+ ::PortUsageState_Test::PortUsageTestConn::Writer_var writer_; //Writer
+ ::PortUsageState_Test::PortUsageTestConn::Getter_var getter_; //Getter
+
+ PortUsageAssignment assignment_;
+
+ Atomic_ULong datareaders_count_;
+ Atomic_ULong datawriters_count_;
+
+ // Supported operations and attributes.
+ void
+ check_updater (void);
+
+ void
+ check_getter (void);
+
+ void
+ check_listener (void);
+
+ void
+ check_reader (void);
+
+ void
+ check_state_listen (void);
+ };
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_PortUsageState_Component_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.idl
new file mode 100644
index 00000000000..c136ac6978d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file PortUsageState_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef PORTUSAGE_STATE_CONNECTOR_IDL_
+#define PORTUSAGE_STATE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/PortUsage_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "StateConnector/PortUsageState_ConnectorE.idl"
+
+module PortUsageState_Test
+{
+ module ::CCM_DDS::Typed < ::PortUsageTest, ::PortUsageTestSeq> PortUsageTestConn;
+ connector PortUsageState_Connector : PortUsageTestConn::DDS_State
+ {
+ };
+};
+
+#endif /* PORTUSAGE_STATE_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.mpc
new file mode 100755
index 00000000000..759675786e4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/StateConnector/PortUsageState_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p PortUsage_Test_Base -l .. -o ../lib -u DDS PortUsageState_Connector"
+
+project(PortUsageState_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=PortUsageState_Connector_stub_export.h \
+ -Wb,skel_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=PortUsageState_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=PortUsageState_Connector_svnt_export.h \
+ -Wb,conn_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=PortUsageState_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ PortUsageState_Connector.idl
+ }
+}
+
+project(PortUsageState_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += PortUsageState_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=PORTUSAGE_EVENT_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=PortUsageState_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ PortUsageState_ConnectorE.idl
+ }
+}
+
+project(PortUsageState_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += PortUsageState_Connector_lem_gen PortUsageState_Connector_stub PortUsage_Test_Base_stub DDS4CCM_lem_stub
+ libs += PortUsage_Test_Base_stub PortUsageState_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = PortUsageState_Connector_lem_stub
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ConnectorEC.h
+ PortUsageState_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ConnectorEC.inl
+ }
+}
+
+project(PortUsageState_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += PortUsageState_Connector_idl_gen PortUsage_Test_Base_stub
+ libs += PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = PortUsageState_Connector_stub
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ConnectorC.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ConnectorC.h
+ PortUsageState_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ConnectorC.inl
+ }
+}
+
+project(PortUsageState_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += PortUsageState_Connector_lem_stub PortUsageState_Connector_stub DDS4CCM_lem_stub PortUsage_Test_Base_stub
+ sharedname = PortUsageState_Connector_exec
+ libs += PortUsageState_Connector_stub PortUsageState_Connector_lem_stub PortUsage_Test_Base_stub DDS4CCM_lem_stub PortUsage_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_Connector_conn.cpp
+ }
+
+ Header_Files {
+ PortUsageState_Connector_conn.h
+ PortUsageState_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(PortUsageState_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += PortUsageState_Connector_lem_stub PortUsageState_Connector_exec PortUsageState_Connector_stub DDS4CCM_lem_stub
+ sharedname = PortUsageState_Connector_svnt
+ libs += PortUsageState_Connector_stub \
+ PortUsageState_Connector_lem_stub \
+ PortUsage_Test_Base_stub \
+ PortUsageState_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = PORTUSAGE_EVENT_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ PortUsageState_ConnectorS.cpp
+ PortUsageState_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ PortUsageState_ConnectorS.h
+ PortUsageState_Connector_svnt.h
+ PortUsageState_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ PortUsageState_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Get.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Get.cdp
new file mode 100644
index 00000000000..d91244f0f19
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Get.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEventComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageEvent_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageEvent_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_GET</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>write_port_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>get_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>get_port_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageEvent_Connector_ExecArtifact">
+ <name>PortUsageEvent_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_SvntArtifact">
+ <name>PortUsageEvent_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_StubArtifact">
+ <name>PortUsageEvent_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>EventComponent_exec</name>
+ <source/>
+ <node/>
+ <location>EventComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>EventComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>EventComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Listen.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Listen.cdp
new file mode 100644
index 00000000000..50f58675996
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Listen.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEventComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageEvent_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageEvent_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_LISTEN</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>write_port_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>listen_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageEvent_Connector_ExecArtifact">
+ <name>PortUsageEvent_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_SvntArtifact">
+ <name>PortUsageEvent_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_StubArtifact">
+ <name>PortUsageEvent_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>EventComponent_exec</name>
+ <source/>
+ <node/>
+ <location>EventComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>EventComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>EventComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Write.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Write.cdp
new file mode 100644
index 00000000000..ac29fa7f6a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/Event_Write.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEventComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EventComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageEvent_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageEvent_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageEvent_Test_PortUsageEvent_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageEvent_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_WRITE</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>write_port_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- a writer is need to force an on_publication_matched -->
+ <connection>
+ <name>listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>listen_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageEvent_Connector_ExecArtifact">
+ <name>PortUsageEvent_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_SvntArtifact">
+ <name>PortUsageEvent_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageEvent_Connector_StubArtifact">
+ <name>PortUsageEvent_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageEvent_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>EventComponent_exec</name>
+ <source/>
+ <node/>
+ <location>EventComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>EventComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>EventComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Get.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Get.cdp
new file mode 100644
index 00000000000..0c254b0cde9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Get.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageStateComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageState_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageState_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_GET</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>update_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>update_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>get_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>get_port_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_observer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageState_Connector_ExecArtifact">
+ <name>PortUsageState_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_SvntArtifact">
+ <name>PortUsageState_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_StubArtifact">
+ <name>PortUsageState_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>StateComponent_exec</name>
+ <source/>
+ <node/>
+ <location>StateComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>StateComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>StateComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>StateComponent_stub</name>
+ <source/>
+ <node/>
+ <location>StateComponent_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Listen.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Listen.cdp
new file mode 100644
index 00000000000..7bd888143f3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Listen.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageStateComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageState_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageState_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_LISTEN</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>update_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>update_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>listen_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageState_Connector_ExecArtifact">
+ <name>PortUsageState_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_SvntArtifact">
+ <name>PortUsageState_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_StubArtifact">
+ <name>PortUsageState_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>StateComponent_exec</name>
+ <source/>
+ <node/>
+ <location>StateComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>StateComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>StateComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Read.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Read.cdp
new file mode 100644
index 00000000000..518631c10c9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Read.cdp
@@ -0,0 +1,246 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageStateComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageState_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageState_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_READ</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>update_port_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>update_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>read_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>read_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageState_Connector_ExecArtifact">
+ <name>PortUsageState_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_SvntArtifact">
+ <name>PortUsageState_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>StateComponent_exec</name>
+ <source/>
+ <node/>
+ <location>StateComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>StateComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>StateComponent_svnt</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_StateListen.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_StateListen.cdp
new file mode 100644
index 00000000000..b8030168f8d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_StateListen.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageStateComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageState_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageState_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_STATELISTEN</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- a writer is need to force an on_subscription_matched -->
+ <connection>
+ <name>update_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>update_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>state_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>state_listen_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageState_Connector_ExecArtifact">
+ <name>PortUsageState_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_SvntArtifact">
+ <name>PortUsageState_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_StubArtifact">
+ <name>PortUsageState_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>StateComponent_exec</name>
+ <source/>
+ <node/>
+ <location>StateComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>StateComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>StateComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Update.cdp b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Update.cdp
new file mode 100644
index 00000000000..6479d943a3b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/State_Update.cdp
@@ -0,0 +1,258 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>PortUsage_Test_Depl</label>
+ <UUID>PortUsage_Test_Depl</UUID>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageStateComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StateComponent_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="PortUsageState_Connector_ExecArtifact" />
+ <artifact xmi:idref="PortUsageState_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_PortUsageState_Test_PortUsageState_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsageState_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="ComponentInstance">
+ <name>ComponentInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>portusage_assignment</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>Assigment</name>
+ <typeId>IDL:Simple/Assignment:1.0</typeId>
+ <member>PORTUSAGE_ASSIGNMENT_WRITE</member>
+ <member>PORTUSAGE_ASSIGNMENT_GET</member>
+ <member>PORTUSAGE_ASSIGNMENT_LISTEN</member>
+ <member>PORTUSAGE_ASSIGNMENT_UPDATE</member>
+ <member>PORTUSAGE_ASSIGNMENT_READ</member>
+ <member>PORTUSAGE_ASSIGNMENT_STATELISTEN</member>
+ </enum>
+ </type>
+ <value>
+ <enum>PORTUSAGE_ASSIGNMENT_UPDATE</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ConnectorInstance">
+ <name>ConnectorInstance</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PortUsage_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>update_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>update_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- a reader is need to force an on_publication_matched -->
+ <connection>
+ <name>read_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>read_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>connector_status</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ConnectorInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="PortUsageState_Connector_ExecArtifact">
+ <name>PortUsageState_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_SvntArtifact">
+ <name>PortUsageState_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="PortUsageState_Connector_StubArtifact">
+ <name>PortUsageState_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>PortUsageState_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>StateComponent_exec</name>
+ <source/>
+ <node/>
+ <location>StateComponent_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>StateComponent_svnt</name>
+ <source/>
+ <node/>
+ <location>StateComponent_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/run_test.pl
new file mode 100755
index 00000000000..c26f639fb6d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/PortUsage/descriptors/run_test.pl
@@ -0,0 +1,217 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode" );
+
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run node daemon\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+if ($#ARGV == -1) {
+ opendir(DIR, ".");
+ @files = grep(/\.cdp$/,readdir(DIR));
+ closedir(DIR);
+}
+else {
+ @files = @ARGV;
+}
+
+create_targets ();
+init_ior_files ();
+
+foreach $file (@files) {
+ print "*********** Starting test for deployment $file ***********\n";
+
+ print STDERR "Starting Naming Service\n";
+
+ $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+ $NS->Spawn ();
+
+ if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+ }
+
+ $ns_running = 1;
+ # Set up NamingService environment
+ $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+ # Invoke node daemon.
+ print "Invoking node daemon\n";
+ $status = run_node_daemons ();
+
+ if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ kill_open_processes ();
+ exit 1;
+ }
+
+ $daemons_running = 1;
+
+ # Invoke execution manager.
+ print "Invoking execution manager\n";
+ $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+ $EM->Spawn ();
+
+ if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+
+ $em_running = 1;
+
+ # Invoke executor - start the application -.
+ print "Invoking executor - launch the application -\n";
+ $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $file -k file://$ior_emfile");
+ $E->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+
+ print "Sleeping 5 seconds to allow task to complete\n";
+ sleep (5);
+
+ print "Teardown the application\n";
+ $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $file -s");
+ $E->SpawnWaitKill (5 * $tg_executor->ProcessStartWaitInterval ());
+ print "Executor finished.\n";
+
+ delete_ior_files ();
+ kill_open_processes ();
+}
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.idl
new file mode 100644
index 00000000000..ac424ff2c3a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file QosProfile_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef COHERENT_WRITE_TEST_BASE_IDL
+#define COHERENT_WRITE_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/QosProfile_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "QosProfileTest"
+#pragma DCPS_DATA_KEY "QosProfileTest symbol"
+
+struct QosProfileTest {
+ string symbol; //@key
+ long iteration;
+};
+
+typedef sequence<QosProfileTest> QosProfileTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.mpc
new file mode 100755
index 00000000000..9d9f07cf4d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Base/QosProfile_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (QosProfile_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = QosProfile_Test_Base_stub
+ dynamicflags += COHERENT_WRITE_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=COHERENT_WRITE_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=QosProfile_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ QosProfile_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=COHERENT_WRITE_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ QosProfile_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.idl b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.idl
new file mode 100644
index 00000000000..ca0ced47bd1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/QosProfile_Test_Connector.idl"
+
+module QosProfile_Test
+{
+ component QosProfileComponent
+ {
+ port QosProfileTestConn::DDS_Write info_write;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.mpc b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.mpc
new file mode 100755
index 00000000000..0b454ea7df6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(QosProfile_Test_Component_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += QosProfile_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Component_stub_export.h \
+ -Wb,skel_export_macro=COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Component_svnt_export.h \
+ -Wb,svnt_export_macro=COMPONENT_SVNT_Export \
+ -Wb,svnt_export_include=Component_svnt_export.h \
+ -Wb,exec_export_macro=COMPONENT_EXEC_Export \
+ -Wb,exec_export_include=Component_exec_export.h -I..
+
+ IDL_Files {
+ QosProfile_Test_Component.idl
+ }
+}
+
+project(QosProfile_Test_Component_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += QosProfile_Test_Component_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_LEM_STUB_Export \
+ -Wb,stub_export_include=Component_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ QosProfile_Test_ComponentE.idl
+ }
+}
+
+project(QosProfile_Test_Component_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += QosProfile_Test_Component_lem_gen QosProfile_Test_Component_stub \
+ QosProfile_Test_Connector_stub QosProfile_Test_Base_stub
+ libs += Component_stub QosProfile_Test_Connector_stub \
+ QosProfile_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Component_lem_stub
+ dynamicflags = COMPONENT_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ComponentEC.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ComponentEC.h
+ Component_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ComponentEC.inl
+ }
+}
+
+project(QosProfile_Test_Component_stub) : ccm_stub, dds4ccm_base {
+ after += QosProfile_Test_Component_idl_gen QosProfile_Test_Connector_stub \
+ QosProfile_Test_Base_stub QosProfile_Test_Connector_lem_gen
+ libs += QosProfile_Test_Connector_stub QosProfile_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Component_stub
+ dynamicflags = COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ComponentC.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ComponentC.h
+ Component_stub_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ComponentC.inl
+ }
+}
+
+project(QosProfile_Test_Component_exec) : ciao_executor, dds4ccm_base {
+ after += QosProfile_Test_Component_lem_stub QosProfile_Test_Component_stub \
+ QosProfile_Test_Base_stub QosProfile_Test_Connector_stub \
+ QosProfile_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Component_exec
+ libs += Component_stub Component_lem_stub QosProfile_Test_Base_stub \
+ QosProfile_Test_Connector_stub QosProfile_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_Component_exec.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_Component_exec.h
+ Component_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(QosProfile_Test_Component_svnt) : ciao_servant, dds4ccm_base {
+ after += QosProfile_Test_Component_lem_stub QosProfile_Test_Base_stub \
+ QosProfile_Test_Connector_stub QosProfile_Test_Connector_svnt \
+ QosProfile_Test_Component_exec QosProfile_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Component_svnt
+ libs += Component_stub Component_lem_stub QosProfile_Test_Base_stub \
+ QosProfile_Test_Connector_stub QosProfile_Test_Connector_svnt \
+ Component_exec QosProfile_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ComponentS.cpp
+ QosProfile_Test_Component_svnt.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ComponentS.h
+ QosProfile_Test_Component_svnt.h
+ Component_svnt_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ComponentS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.cpp
new file mode 100644
index 00000000000..98fa5806980
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.cpp
@@ -0,0 +1,67 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "QosProfile_Test_Component_exec.h"
+
+namespace CIAO_QosProfile_Test_QosProfileComponent_Impl
+{
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ Component_exec_i::Component_exec_i (void)
+ {
+ }
+
+ Component_exec_i::~Component_exec_i (void)
+ {
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Component_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QosProfile_Test::CCM_QosProfileComponent_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Component_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_activate (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data();
+ }
+
+ void
+ Component_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QosProfile_Test_Component_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Component_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.h
new file mode 100644
index 00000000000..5db3b8868b3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Component/QosProfile_Test_Component_exec.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_COMPONENT_EXEC_H_
+#define CIAO_COMPONENT_EXEC_H_
+
+#include "QosProfile_Test_ComponentEC.h"
+
+#include /**/ "Component_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_QosProfile_Test_QosProfileComponent_Impl
+{
+ //============================================================
+ // Component_exec_i
+ //============================================================
+ class COMPONENT_EXEC_Export Component_exec_i
+ : public virtual QosProfileComponent_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Component_exec_i (void);
+ virtual ~Component_exec_i (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::QosProfile_Test::CCM_QosProfileComponent_Context_var context_;
+ ::QosProfile_Test::QosProfileTestConn::Writer_var writer_;
+ };
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QosProfile_Test_Component_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.idl
new file mode 100644
index 00000000000..3d5412a78b8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file QosProfile_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QOS_PROFILE_TEST_CONNECTOR_IDL_
+#define QOS_PROFILE_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/QosProfile_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/QosProfile_Test_ConnectorE.idl"
+
+module QosProfile_Test
+{
+ module ::CCM_DDS::Typed < ::QosProfileTest, ::QosProfileTestSeq> QosProfileTestConn;
+ connector QosProfile_Test_Connector : QosProfileTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* QOS_PROFILE_TEST_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.mpc
new file mode 100755
index 00000000000..18aa43b522d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/Connector/QosProfile_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p QosProfile_Test_Base -l .. -o ../lib -u DDS QosProfile_Test_Connector"
+
+project(QosProfile_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COHERENT_WRITE_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=QosProfile_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=COHERENT_WRITE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=QosProfile_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=COHERENT_WRITE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=QosProfile_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=COHERENT_WRITE_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=QosProfile_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ QosProfile_Test_Connector.idl
+ }
+}
+
+project(QosProfile_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += QosProfile_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=COHERENT_WRITE_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=QosProfile_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ QosProfile_Test_ConnectorE.idl
+ }
+}
+
+project(QosProfile_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += QosProfile_Test_Connector_lem_gen QosProfile_Test_Connector_stub QosProfile_Test_Base_stub DDS4CCM_lem_stub
+ libs += QosProfile_Test_Base_stub QosProfile_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QosProfile_Test_Connector_lem_stub
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ConnectorEC.h
+ QosProfile_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ConnectorEC.inl
+ }
+}
+
+project(QosProfile_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += QosProfile_Test_Connector_idl_gen QosProfile_Test_Base_stub
+ libs += QosProfile_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QosProfile_Test_Connector_stub
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ConnectorC.h
+ QosProfile_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ConnectorC.inl
+ }
+}
+
+project(QosProfile_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += QosProfile_Test_Connector_lem_stub QosProfile_Test_Connector_stub DDS4CCM_lem_stub QosProfile_Test_Base_stub
+ sharedname = QosProfile_Test_Connector_exec
+ libs += QosProfile_Test_Connector_stub QosProfile_Test_Connector_lem_stub QosProfile_Test_Base_stub DDS4CCM_lem_stub QosProfile_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_Connector_conn.h
+ QosProfile_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(QosProfile_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += QosProfile_Test_Connector_lem_stub QosProfile_Test_Connector_exec QosProfile_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = QosProfile_Test_Connector_svnt
+ libs += QosProfile_Test_Connector_stub \
+ QosProfile_Test_Connector_lem_stub \
+ QosProfile_Test_Base_stub \
+ QosProfile_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COHERENT_WRITE_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QosProfile_Test_ConnectorS.cpp
+ QosProfile_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ QosProfile_Test_ConnectorS.h
+ QosProfile_Test_Connector_svnt.h
+ QosProfile_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ QosProfile_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/Plan.cdp
new file mode 100644
index 00000000000..a03aa8911bd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/Plan.cdp
@@ -0,0 +1,205 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>QosProfile_Test_Depl_1</label>
+ <UUID>QosProfile_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ComponentComponentImplementation">
+ <name>ComponentComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QosProfile_Test_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QosProfile_Test_QosProfileComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="QosProfile_Test_ConnectorComponentImplementation">
+ <name>QosProfile_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="QosProfile_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="QosProfile_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QosProfile_Test_QosProfile_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QosProfile_Test_QosProfile_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QosProfile_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QosProfile_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ComponentComponentInstance">
+ <name>ComponentComponent</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ComponentComponentImplementation" />
+ </instance>
+ <instance xmi:id="QosProfile_Test_ConnectorComponentInstance">
+ <name>QosProfile_Test_ConnectorComponent</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QosProfile_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Wrong_Library#Wrong_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QosProfile_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_write_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QosProfile_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="QosProfile_Test_Connector_ExecArtifact">
+ <name>QosProfile_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>QosProfile_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="QosProfile_Test_Connector_SvntArtifact">
+ <name>QosProfile_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>QosProfile_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="QosProfile_Test_Connector_StubArtifact">
+ <name>QosProfile_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>QosProfile_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>Component_exec</name>
+ <source/>
+ <node/>
+ <location>Component_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>Component_svnt</name>
+ <source/>
+ <node/>
+ <location>Component_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..7ee62500559
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,37 @@
+<dds xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <qos_library name="QosProfile_Library">
+ <qos_profile name="QosProfile_Profile" is_default_qos="true">
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/run_test.pl
new file mode 100755
index 00000000000..82e952240b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QosProfile/descriptors/run_test.pl
@@ -0,0 +1,245 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+ delete_ior_files ();
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-ORBLogFile test.log -x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "OK: dance_plan_launcher returned an error status ($pl_status)\n";
+ kill_open_processes ();
+ unlink "test.log";
+ exit 0;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "ERROR : dance_plan_launcher didn't return with an error.\n";
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.idl
new file mode 100644
index 00000000000..be30edc9ae6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file QueryFilter_Starter.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERYFILTER_STARTER_IDL
+#define QUERYFILTER_STARTER_IDL
+
+#pragma ciao lem "Base/QueryFilter_StarterE.idl"
+
+interface QueryFilterStarter
+{
+ void set_reader_properties (in unsigned short nr_keys,
+ in unsigned short nr_iterations);
+ void start_read (in unsigned short run);
+};
+
+interface QueryFilterRestarter
+{
+ void restart_write ();
+};
+
+#endif /* QUERYFILTER_STARTER_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.mpc
new file mode 100755
index 00000000000..1dacde89666
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Starter.mpc
@@ -0,0 +1,114 @@
+// $Id$
+
+project(DDS_QueryFilter_Starter_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_STUB_Export \
+ -Wb,stub_export_include=QueryFilter_Starter_stub_export.h \
+ -Wb,skel_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,skel_export_include=QueryFilter_Starter_svnt_export.h \
+ -Wb,svnt_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,svnt_export_include=QueryFilter_Starter_svnt_export.h \
+ -Wb,exec_export_macro=READER_STARTER_EXEC_Export \
+ -Wb,exec_export_include=QueryFilter_Starter_exec_export.h -I..
+
+ IDL_Files {
+ QueryFilter_Starter.idl
+ }
+}
+
+project(DDS_QueryFilter_Starter_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_QueryFilter_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_LEM_STUB_Export \
+ -Wb,stub_export_include=QueryFilter_Starter_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ QueryFilter_StarterE.idl
+ }
+}
+
+project(DDS_QueryFilter_Starter_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QueryFilter_Starter_lem_gen DDS_QueryFilter_Starter_stub
+ libs += QueryFilter_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QueryFilter_Starter_lem_stub
+ dynamicflags = READER_STARTER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_StarterEC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_StarterEC.h
+ QueryFilter_Starter_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_StarterEC.inl
+ }
+}
+
+project(DDS_QueryFilter_Starter_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QueryFilter_Starter_idl_gen
+ libs +=
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QueryFilter_Starter_stub
+ dynamicflags = READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_StarterC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_StarterC.h
+ QueryFilter_Starter_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_StarterC.inl
+ }
+}
+
+
+project(DDS_QueryFilter_Starter_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_QueryFilter_Starter_lem_stub DDS_QueryFilter_Starter_stub\
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = QueryFilter_Starter_svnt
+ libs += QueryFilter_Starter_stub QueryFilter_Starter_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_STARTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_StarterS.cpp
+ QueryFilter_Starter_svnt.cpp
+ }
+
+ Header_Files {
+ QueryFilter_StarterS.h
+ QueryFilter_Starter_svnt.h
+ QueryFilter_Starter_svnt_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_StarterS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.idl
new file mode 100644
index 00000000000..dc6d2e6c800
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file QueryFilter_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_TEST_BASE_IDL
+#define QUERY_FILTER_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/QueryFilter_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "QueryFilterTest"
+#pragma DCPS_DATA_KEY "QueryFilterTest symbol"
+
+struct QueryFilterTest {
+ string symbol; //@key
+ long iteration;
+};
+
+typedef sequence<QueryFilterTest> QueryFilterTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.mpc
new file mode 100755
index 00000000000..080d970cb08
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Base/QueryFilter_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (QueryFilter_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = QueryFilter_Test_Base_stub
+ dynamicflags += QUERY_FILTER_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=QUERY_FILTER_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=QueryFilter_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ QueryFilter_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=QUERY_FILTER_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ QueryFilter_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.idl
new file mode 100644
index 00000000000..593fc21e8aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file QueryFilter_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_TEST_CONNECTOR_IDL_
+#define QUERY_FILTER_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/QueryFilter_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/QueryFilter_Test_ConnectorE.idl"
+
+module QueryFilter_Test
+{
+ module ::CCM_DDS::Typed < ::QueryFilterTest, ::QueryFilterTestSeq> QueryFilterTestConn;
+ connector QueryFilter_Test_Connector : QueryFilterTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* QUERY_FILTER_TEST_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.mpc
new file mode 100755
index 00000000000..babfda6364f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Connector/QueryFilter_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p QueryFilter_Test_Base -l .. -o ../lib -u DDS QueryFilter_Test_Connector"
+
+project(QueryFilter_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=QueryFilter_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=QUERY_FILTER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=QueryFilter_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=QUERY_FILTER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=QueryFilter_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=QUERY_FILTER_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=QueryFilter_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ QueryFilter_Test_Connector.idl
+ }
+}
+
+project(QueryFilter_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += QueryFilter_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=QueryFilter_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ QueryFilter_Test_ConnectorE.idl
+ }
+}
+
+project(QueryFilter_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += QueryFilter_Test_Connector_lem_gen QueryFilter_Test_Connector_stub QueryFilter_Test_Base_stub DDS4CCM_lem_stub
+ libs += QueryFilter_Test_Base_stub QueryFilter_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QueryFilter_Test_Connector_lem_stub
+ dynamicflags = QUERY_FILTER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ConnectorEC.h
+ QueryFilter_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ConnectorEC.inl
+ }
+}
+
+project(QueryFilter_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += QueryFilter_Test_Connector_idl_gen QueryFilter_Test_Base_stub
+ libs += QueryFilter_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = QueryFilter_Test_Connector_stub
+ dynamicflags = QUERY_FILTER_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ConnectorC.h
+ QueryFilter_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ConnectorC.inl
+ }
+}
+
+project(QueryFilter_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += QueryFilter_Test_Connector_lem_stub QueryFilter_Test_Connector_stub DDS4CCM_lem_stub QueryFilter_Test_Base_stub
+ sharedname = QueryFilter_Test_Connector_exec
+ libs += QueryFilter_Test_Connector_stub QueryFilter_Test_Connector_lem_stub QueryFilter_Test_Base_stub DDS4CCM_lem_stub QueryFilter_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_Connector_conn.h
+ QueryFilter_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(QueryFilter_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += QueryFilter_Test_Connector_lem_stub QueryFilter_Test_Connector_exec QueryFilter_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = QueryFilter_Test_Connector_svnt
+ libs += QueryFilter_Test_Connector_stub \
+ QueryFilter_Test_Connector_lem_stub \
+ QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ConnectorS.cpp
+ QueryFilter_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ConnectorS.h
+ QueryFilter_Test_Connector_svnt.h
+ QueryFilter_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/README b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/README
new file mode 100644
index 00000000000..79dc0f2962d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/README
@@ -0,0 +1,3 @@
+# $Id$
+
+This test tests the QueryFilter on the Reader.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.idl
new file mode 100644
index 00000000000..4f5b973bc6d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/QueryFilter_Test_Connector.idl"
+#include "Base/QueryFilter_Starter.idl"
+
+module QueryFilter_Test
+{
+ component Receiver
+ {
+ port QueryFilterTestConn::DDS_Get get_port;
+
+ provides QueryFilterStarter reader_start;
+ uses QueryFilterRestarter writer_restart;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.mpc
new file mode 100755
index 00000000000..9b80fe796a4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver.mpc
@@ -0,0 +1,157 @@
+// $Id$
+
+project(QueryFilter_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += QueryFilter_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ QueryFilter_Test_Receiver.idl
+ }
+}
+
+project(QueryFilter_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += QueryFilter_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ QueryFilter_Test_ReceiverE.idl
+ }
+}
+
+project(QueryFilter_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += QueryFilter_Test_Receiver_lem_gen QueryFilter_Test_Receiver_stub \
+ QueryFilter_Test_Connector_stub QueryFilter_Test_Base_stub \
+ DDS_QueryFilter_Starter_stub
+ libs += Receiver_stub QueryFilter_Test_Connector_stub \
+ QueryFilter_Test_Base_stub QueryFilter_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ReceiverEC.inl
+ }
+}
+
+project(QueryFilter_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += QueryFilter_Test_Receiver_idl_gen QueryFilter_Test_Connector_stub \
+ QueryFilter_Test_Base_stub QueryFilter_Test_Connector_lem_gen \
+ DDS_QueryFilter_Starter_stub DDS_QueryFilter_Starter_lem_stub
+ libs += QueryFilter_Test_Connector_stub QueryFilter_Test_Base_stub \
+ QueryFilter_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ReceiverC.inl
+ }
+}
+
+project(QueryFilter_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += QueryFilter_Test_Receiver_lem_stub QueryFilter_Test_Receiver_stub \
+ QueryFilter_Test_Base_stub QueryFilter_Test_Connector_stub \
+ QueryFilter_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_QueryFilter_Starter_lem_stub DDS_QueryFilter_Starter_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_stub QueryFilter_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub QueryFilter_Starter_lem_stub QueryFilter_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(QueryFilter_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += QueryFilter_Test_Receiver_lem_stub QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_stub QueryFilter_Test_Connector_svnt \
+ QueryFilter_Test_Receiver_exec QueryFilter_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_QueryFilter_Starter_stub \
+ DDS_QueryFilter_Starter_svnt DDS_QueryFilter_Starter_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_stub QueryFilter_Test_Connector_svnt \
+ Receiver_exec QueryFilter_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel QueryFilter_Starter_stub QueryFilter_Starter_svnt \
+ QueryFilter_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_ReceiverS.cpp
+ QueryFilter_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_ReceiverS.h
+ QueryFilter_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..a9992f030fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.cpp
@@ -0,0 +1,545 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "QueryFilter_Test_Receiver_exec.h"
+
+#include "ace/OS_NS_unistd.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#define QUERY "( (iteration > %0) AND (iteration < %1) )"
+
+#define MIN_ITERATION_1 "2"
+#define MAX_ITERATION_1 "5"
+
+#define MIN_ITERATION_2 "12"
+#define MAX_ITERATION_2 "25"
+
+
+namespace CIAO_QueryFilter_Test_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback, int run)
+ : callback_ (callback),
+ run_ (run)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Checking if last sample "
+ "is available in DDS...\n"));
+ if (this->run_ == 1 || this->callback_.check_last ())
+ {
+ this->callback_.run (this->run_);
+ }
+ return 0;
+ }
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ Starter_exec_i::Starter_exec_i (Receiver_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Starter_exec_i::~Starter_exec_i (void)
+ {
+ }
+
+ void
+ Starter_exec_i::set_reader_properties (CORBA::UShort nr_keys,
+ CORBA::UShort nr_iterations)
+ {
+ this->callback_.keys (nr_keys);
+ this->callback_.iterations (nr_iterations);
+ }
+
+ void
+ Starter_exec_i::start_read (CORBA::UShort run)
+ {
+ this->callback_.start_read (run);
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (10),
+ keys_ (5),
+ has_run_ (false),
+ current_min_iteration_ (ACE_OS::atoi (MIN_ITERATION_1)),
+ current_max_iteration_ (ACE_OS::atoi (MAX_ITERATION_1)),
+ ticker_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+
+ bool
+ Receiver_exec_i::check_last ()
+ {
+ try
+ {
+ QueryFilterTest queryfiltertest_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ char key[100];
+ ACE_OS::sprintf (key, "KEY_%d", this->keys_);
+ queryfiltertest_info.symbol = CORBA::string_dup (key);
+ this->reader_->read_one_last (
+ queryfiltertest_info,
+ readinfo,
+ ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::check_last - "
+ "last iteration <%d> - <%d>\n",
+ queryfiltertest_info.iteration,
+ this->current_max_iteration_ - 1));
+ return queryfiltertest_info.iteration >= this->current_max_iteration_ - 1;
+ }
+ catch (...)
+ {
+ // no need to catch. An error is given
+ // when this example didn't run at all.
+ }
+ return false;
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::check_iter (const QueryFilterTest & sample,
+ const char * test)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%C ALL : ")
+ ACE_TEXT ("sample received for <%C>: iteration <%u>\n"),
+ test,
+ sample.symbol.in (),
+ sample.iteration));
+ if (sample.iteration <= ACE_OS::atoi (MIN_ITERATION_1))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: %C ALL: "
+ "Didn't expect samples with iterations "
+ "<= %d\n",
+ test,
+ this->current_min_iteration_));
+ }
+ if (sample.iteration > this->current_max_iteration_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: %C ALL: "
+ "Didn't expect samples with iterations "
+ "> %d\n",
+ test,
+ this->current_max_iteration_));
+ }
+ }
+
+
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ QueryFilterTestSeq *queryfiltertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_all (
+ queryfiltertest_info_seq,
+ readinfo_seq);
+ if (queryfiltertest_info_seq->length () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : Receiver_exec_i::read_all : "
+ "No samples available in Reader!\n"));
+ }
+ for (CORBA::ULong it = 0; it < queryfiltertest_info_seq->length (); ++it)
+ {
+ this->check_iter ((*queryfiltertest_info_seq)[it], "READ");
+ }
+ }
+
+ void
+ Receiver_exec_i::get_all (void)
+ {
+ if (::CORBA::is_nil (this->getter_))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: No Getter\n"));
+ }
+ QueryFilterTest * qf_info = new QueryFilterTest;
+ ::CCM_DDS::ReadInfo readinfo;
+ bool result = this->getter_->get_one (qf_info, readinfo);
+ this->check_iter (*qf_info, "GET");
+ while (result)
+ {
+ result = this->getter_->get_one (qf_info, readinfo);
+ if (result)
+ {
+ this->check_iter (*qf_info, "GET");
+ }
+ }
+ }
+
+ void
+ Receiver_exec_i::test_all ()
+ {
+ const char * test = "GET ALL";
+ try
+ {
+ get_all ();
+ test = "READ ALL";
+ read_all ();
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("ERROR %C: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ test,
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: %C: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ test,
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (test);
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::test_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::test_exception ()
+ {
+ CCM_DDS::QueryFilter * filter = 0;
+ try
+ {
+ filter = this->reader_->filter ();
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::test_excep - "
+ "Expected InternalErr excep caught : retval <%u>\n",
+ ex.error_code));
+ return;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: Receiver_exec_i::test_exception: ");
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::test_exception - "
+ "Unexpected exception caught\n"));
+ return;
+ }
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::test_exception - "
+ "No exception caught while retrieving unset filter.\n"));
+ }
+
+ void
+ Receiver_exec_i::check_filter ()
+ {
+ CCM_DDS::QueryFilter * filter = 0;
+ try
+ {
+ filter = this->reader_->filter ();
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "caught InternalError exception: retval <%u>\n",
+ ex.error_code));
+ return;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: Receiver_exec_i::check_filter: ");
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "Exception caught\n"));
+ return;
+ }
+
+ //check query
+ bool error = false;
+ if (ACE_OS::strcmp (filter->query, QUERY) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "Unexpected query when retrieving filter: "
+ "expected <%C> - received <%C>\n",
+ QUERY, filter->query.in ()));
+ error = true;
+ }
+ //check current parameters.
+ if (filter->query_parameters.length () != 2)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "Unexpected number of parameters: "
+ "expected <%d> - received <%d>\n",
+ 2, filter->query_parameters.length ()));
+ error = true;
+ }
+
+ if (filter->query_parameters.length () >= 1)
+ {
+ if (ACE_OS::atoi (filter->query_parameters[0]) != this->current_min_iteration_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "Unexpected query when retrieving filter: "
+ "expected <%C> - received <%C>\n",
+ QUERY, filter->query.in ()));
+ error = true;
+ }
+ }
+ if (filter->query_parameters.length () >= 2)
+ {
+ if (ACE_OS::atoi (filter->query_parameters[1]) != this->current_max_iteration_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::check_filter - "
+ "Unexpected query when retrieving filter: "
+ "expected <%C> - received <%C>\n",
+ QUERY, filter->query.in ()));
+ error = true;
+ }
+ }
+ if (!error)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::check_filter - "
+ "Passed check_filter test.\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::test_set_query_parameters ()
+ {
+ try
+ {
+ CCM_DDS::QueryFilter filter;
+ filter.query = CORBA::string_dup ("na");
+ filter.query_parameters.length (2);
+ filter.query_parameters[0] = CORBA::string_dup (MIN_ITERATION_2);
+ filter.query_parameters[1] = CORBA::string_dup (MAX_ITERATION_2);
+ this->reader_->filter (filter);
+ this->current_min_iteration_ = ACE_OS::atoi (MIN_ITERATION_2);
+ this->current_max_iteration_ = ACE_OS::atoi (MAX_ITERATION_2);
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::test_set_query_parameters - "
+ "caught InternalError exception: retval <%u>\n",
+ ex.error_code));
+ return;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: Receiver_exec_i::test_set_query_parameters: ");
+ ACE_ERROR ((LM_ERROR, "ERROR: Receiver_exec_i::test_set_query_parameters - "
+ "Exception caught\n"));
+ return;
+ }
+ }
+
+ void
+ Receiver_exec_i::set_filter ()
+ {
+ ACE_DEBUG ((LM_DEBUG, "Set filter\n"));
+ CCM_DDS::QueryFilter filter;
+ filter.query = CORBA::string_dup (QUERY);
+ filter.query_parameters.length (2);
+ filter.query_parameters[0] = CORBA::string_dup (MIN_ITERATION_1);
+ filter.query_parameters[1] = CORBA::string_dup (MAX_ITERATION_1);
+ this->reader_->filter (filter);
+ }
+
+ void
+ Receiver_exec_i::start_read (CORBA::UShort run)
+ {
+ this->ticker_ = new read_action_Generator (*this, run);
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(1, 0),
+ ACE_Time_Value(1, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::run (CORBA::UShort run)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ this->has_run_ = true;
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::run - "
+ "Starting run number <%d>\n",
+ run));
+ switch (run)
+ {
+ case 1:
+ {
+ test_exception ();
+ set_filter ();
+ this->restarter_->restart_write ();
+ }
+ break;
+ case 2:
+ {
+ test_all ();
+ check_filter ();
+ test_set_query_parameters ();
+ this->restarter_->restart_write ();
+ }
+ break;
+ case 3:
+ {
+ test_all ();
+ check_filter ();
+ }
+ break;
+ }
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ // Port operations.
+ ::QueryFilter_Test::QueryFilterTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_read_port_data_listener (void)
+ {
+ return ::QueryFilter_Test::QueryFilterTestConn::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_read_port_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_get_port_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_QueryFilterStarter_ptr
+ Receiver_exec_i::get_reader_start ()
+ {
+ return new Starter_exec_i (*this);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QueryFilter_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ this->reader_ = this->context_->get_connection_get_port_data ();
+ this->getter_ = this->context_->get_connection_get_port_fresh_data ();
+ DDS::Duration_t to;
+ to.sec = 5;
+ to.nanosec = 0;
+ if (! ::CORBA::is_nil (this->getter_))
+ {
+ this->getter_->time_out (to);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to set time out.\n"));
+ }
+ this->restarter_ = this->context_->get_connection_writer_restart ();
+}
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ if (this->ticker_)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->has_run_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("Test did not run: Didn't receive ")
+ ACE_TEXT ("the expected number of DATA_ON_READER ")
+ ACE_TEXT ("events.\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Finished query filter test.\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QueryFilter_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.h
new file mode 100644
index 00000000000..91f373abf67
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Receiver/QueryFilter_Test_Receiver_exec.h
@@ -0,0 +1,142 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "QueryFilter_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_QueryFilter_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback,
+ int run);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &callback_;
+ int run_;
+
+ };
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ class Starter_exec_i
+ : public virtual ::CCM_QueryFilterStarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Starter_exec_i (Receiver_exec_i & callback);
+ virtual ~Starter_exec_i (void);
+
+ virtual void set_reader_properties (CORBA::UShort nr_keys,
+ CORBA::UShort nr_iterations);
+ virtual void start_read (CORBA::UShort run);
+
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Component attributes.
+
+ // Port operations.
+ virtual ::QueryFilter_Test::QueryFilterTestConn::CCM_Listener_ptr
+ get_read_port_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_read_port_status (void);
+
+ virtual ::CCM_QueryFilterStarter_ptr
+ get_reader_start ();
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_get_port_status (void);
+
+ bool check_last ();
+ void start_read (CORBA::UShort run);
+ void run (CORBA::UShort run);
+
+ ::CORBA::UShort iterations (void);
+
+ void iterations (::CORBA::UShort iterations);
+
+ ::CORBA::UShort keys (void);
+
+ void keys (::CORBA::UShort keys);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::QueryFilter_Test::CCM_Receiver_Context_var context_;
+ ::QueryFilter_Test::QueryFilterTestConn::Reader_var reader_;
+ ::QueryFilter_Test::QueryFilterTestConn::Getter_var getter_;
+ QueryFilterRestarter_var restarter_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ bool has_run_;
+
+ int current_min_iteration_;
+ int current_max_iteration_;
+
+ read_action_Generator *ticker_;
+
+ void test_all (void);
+ void read_all (void);
+ void get_all (void);
+ void check_iter (const QueryFilterTest & sample,
+ const char * test);
+ void check_filter (void);
+ void test_exception (void);
+ void test_set_query_parameters (void);
+ void set_filter (void);
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QueryFilter_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.idl
new file mode 100644
index 00000000000..d30deb7c6b2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_QUERY_FILTER_TEST_SENDER_IDL
+#define DDS_QUERY_FILTER_TEST_SENDER_IDL
+
+#include "Connector/QueryFilter_Test_Connector.idl"
+#include "Base/QueryFilter_Starter.idl"
+
+module QueryFilter_Test
+{
+ component Sender
+ {
+ port QueryFilter_Test::QueryFilterTestConn::DDS_Write info_write;
+
+ uses QueryFilterStarter start_reader;
+ provides QueryFilterRestarter restart_writer;
+
+ attribute unsigned short keys;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.mpc
new file mode 100755
index 00000000000..faa7da39896
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender.mpc
@@ -0,0 +1,155 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p QueryFilter_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(QueryFilter_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += QueryFilter_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ QueryFilter_Test_Sender.idl
+ }
+}
+
+project(QueryFilter_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += QueryFilter_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ QueryFilter_Test_SenderE.idl
+ }
+}
+
+project(QueryFilter_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += QueryFilter_Test_Sender_lem_gen QueryFilter_Test_Sender_stub \
+ QueryFilter_Test_Base_stub DDS_QueryFilter_Starter_stub
+ libs += QueryFilter_Test_Base_stub Sender_stub QueryFilter_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_SenderEC.inl
+ }
+}
+
+project(QueryFilter_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += QueryFilter_Test_Sender_idl_gen QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_stub DDS_QueryFilter_Starter_stub \
+ DDS_QueryFilter_Starter_lem_stub
+ libs += QueryFilter_Test_Base_stub QueryFilter_Test_Connector_stub \
+ QueryFilter_Starter_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_SenderC.inl
+ }
+}
+
+project(QueryFilter_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += QueryFilter_Test_Sender_lem_stub QueryFilter_Test_Sender_stub \
+ QueryFilter_Test_Connector_lem_stub QueryFilter_Test_Connector_stub \
+ DDS4CCM_lem_stub DDS_QueryFilter_Starter_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub QueryFilter_Test_Base_stub \
+ QueryFilter_Test_Connector_lem_stub QueryFilter_Test_Connector_stub \
+ QueryFilter_Starter_stub DDS4CCM_lem_stub QueryFilter_Starter_lem_stub \
+ QueryFilter_Starter_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(QueryFilter_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += QueryFilter_Test_Base_stub QueryFilter_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel QueryFilter_Test_Connector_stub \
+ QueryFilter_Test_Connector_svnt QueryFilter_Test_Connector_lem_stub \
+ DDS_QueryFilter_Starter_stub DDS_QueryFilter_Starter_svnt \
+ DDS_QueryFilter_Starter_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub QueryFilter_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel QueryFilter_Test_Connector_stub QueryFilter_Test_Connector_svnt \
+ QueryFilter_Test_Connector_lem_stub QueryFilter_Starter_stub \
+ QueryFilter_Starter_svnt QueryFilter_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QueryFilter_Test_SenderS.cpp
+ QueryFilter_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ QueryFilter_Test_SenderS.h
+ QueryFilter_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ QueryFilter_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..67c33e222d8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.cpp
@@ -0,0 +1,182 @@
+// -*- C++ -*-
+// $Id$
+
+#include "QueryFilter_Test_Sender_exec.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+#include "ace/Log_Msg.h"
+
+#define ITERATIONS 10
+
+namespace CIAO_QueryFilter_Test_Sender_Impl
+{
+ //============================================================
+ // WriteHandler
+ //============================================================
+ WriteHandler::WriteHandler (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.start ();
+ return 0;
+ }
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ Restarter_exec_i::Restarter_exec_i (Sender_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Restarter_exec_i::~Restarter_exec_i (void)
+ {
+ }
+
+ void
+ Restarter_exec_i::restart_write ()
+ {
+ this->callback_.restart ();
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (ITERATIONS),
+ keys_ (5),
+ run_ (1)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::restart (void)
+ {
+ ++this->run_;
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ if (! ::CORBA::is_nil (this->starter_))
+ {
+ this->starter_->set_reader_properties (this->keys_, this->iterations_);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to start the reader\n")));
+ }
+ if (this->run_ > 1)
+ {
+ for (CORBA::UShort iter_key = 1; iter_key < this->keys_ + 1; ++iter_key)
+ {
+ char key[7];
+ QueryFilterTest *new_key = new QueryFilterTest;
+ ACE_OS::sprintf (key, "KEY_%d", iter_key);
+ new_key->symbol = CORBA::string_dup(key);
+ for (CORBA::UShort iter = ((this->run_ - 2) * this->iterations_) + 1;
+ iter < this->run_ * this->iterations_ + 1;
+ ++iter)
+ {
+ new_key->iteration = iter;
+ this->writer_->write_one (*new_key, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"),
+ key, iter));
+ }
+ }
+ ACE_OS::sleep (1);
+ }
+ this->starter_->start_read (this->run_);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ ::CCM_QueryFilterRestarter_ptr
+ Sender_exec_i::get_restart_writer (void)
+ {
+ return new Restarter_exec_i (*this);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QueryFilter_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ this->starter_ = this->context_->get_connection_start_reader ();
+ WriteHandler *wh = new WriteHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (wh);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QueryFilter_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.h
new file mode 100644
index 00000000000..aaaf8b500f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/Sender/QueryFilter_Test_Sender_exec.h
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "QueryFilter_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_QueryFilter_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteHandler
+ //============================================================
+ class WriteHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Restarter_exec_i
+ //============================================================
+ class Restarter_exec_i
+ : public virtual ::CCM_QueryFilterRestarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Restarter_exec_i (Sender_exec_i & callback);
+ virtual ~Restarter_exec_i (void);
+
+ virtual void restart_write ();
+
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // Sender_exec_i
+ //============================================================
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::CCM_QueryFilterRestarter_ptr
+ get_restart_writer (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void restart (void);
+
+ private:
+ ::QueryFilter_Test::CCM_Sender_Context_var context_;
+ ::QueryFilter_Test::QueryFilterTestConn::Writer_var writer_;
+ QueryFilterStarter_var starter_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ CORBA::UShort run_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QueryFilter_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..05b925e0fcf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/Plan.cdp
@@ -0,0 +1,393 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>QueryFilter_Test_Depl_1</label>
+ <UUID>QueryFilter_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="QueryFilter_Test_ConnectorComponentImplementation">
+ <name>QueryFilter_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="QueryFilter_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="QueryFilter_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_QueryFilter_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_QueryFilter_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QueryFilter_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="QueryFilter_Test_ConnectorComponentInstance">
+ <name>QueryFilter_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QueryFilter_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Library#QueryFilter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="QueryFilter_Test_ConnectorComponentInstance2">
+ <name>QueryFilter_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QueryFilter_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Library#QueryFilter_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QueryFilter_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>get_port_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>get_port_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QueryFilter_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>get_port_fresh_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>get_port_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_consumer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QueryFilter_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QueryFilter_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>reader_starter</name>
+ <internalEndpoint>
+ <portName>start_reader</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>reader_start</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>restart_writer</name>
+ <internalEndpoint>
+ <portName>writer_restart</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>restart_writer</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="QueryFilter_Test_Connector_ExecArtifact">
+ <name>QueryFilter_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>QueryFilter_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="QueryFilter_Test_Connector_SvntArtifact">
+ <name>QueryFilter_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>QueryFilter_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="QueryFilter_Test_Connector_StubArtifact">
+ <name>QueryFilter_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>QueryFilter_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..571930e854d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="QueryFilter_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="QueryFilter_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/run_test.pl
new file mode 100755
index 00000000000..708c17b2051
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilter/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.idl
new file mode 100644
index 00000000000..657e6c9650c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file QFLE_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_LISTEN_EVENT_TEST_BASE_IDL
+#define QUERY_FILTER_LISTEN_EVENT_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/QFLE_Test_BaseSupport.h"
+
+struct QueryFilterListenEventTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<QueryFilterListenEventTest> QueryFilterListenEventTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.mpc
new file mode 100755
index 00000000000..96b322de121
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Base/QFLE_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_QFLE_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_QFLE_Test_Base_stub
+ dynamicflags += QUERY_FILTER_LISTEN_EVENT_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=QFLE_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ QFLE_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=QUERY_FILTER_LISTEN_EVENT_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ QFLE_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.idl
new file mode 100644
index 00000000000..59c46ddf3f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file QFLE_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_IDL_
+#define QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/QFLE_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/QFLE_Test_ConnectorE.idl"
+
+module QFLE_Test
+{
+ module ::CCM_DDS::Typed < ::QueryFilterListenEventTest, ::QueryFilterListenEventTestSeq> QueryFilterListenEventTestConn;
+ connector QFLE_Test_Connector : QueryFilterListenEventTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* QFLE_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.mpc
new file mode 100755
index 00000000000..78b5ffe9ceb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Connector/QFLE_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_QFLE_Test_Base -l .. -o ../lib -u DDS QFLE_Test_Connector"
+
+project(DDS_QFLE_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=QFLE_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=QFLE_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=QFLE_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=QFLE_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ QFLE_Test_Connector.idl
+ }
+}
+
+project(DDS_QFLE_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_QFLE_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=QFLE_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ QFLE_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_QFLE_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLE_Test_Connector_lem_gen DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_QFLE_Test_Base_stub DDS_QFLE_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_QFLE_Test_Connector_lem_stub
+ dynamicflags = QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ConnectorEC.h
+ QFLE_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLE_Test_Connector_idl_gen DDS_QFLE_Test_Base_stub
+ libs += DDS_QFLE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_QFLE_Test_Connector_stub
+ dynamicflags = QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ConnectorC.h
+ QFLE_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_QFLE_Test_Connector_lem_stub DDS_QFLE_Test_Connector_stub DDS4CCM_lem_stub DDS_QFLE_Test_Base_stub
+ sharedname = DDS_QFLE_Test_Connector_exec
+ libs += DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Connector_lem_stub DDS_QFLE_Test_Base_stub DDS4CCM_lem_stub DDS_QFLE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_Connector_conn.h
+ QFLE_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLE_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_QFLE_Test_Connector_lem_stub DDS_QFLE_Test_Connector_exec DDS_QFLE_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_QFLE_Test_Connector_svnt
+ libs += DDS_QFLE_Test_Connector_stub \
+ DDS_QFLE_Test_Connector_lem_stub \
+ DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_LISTEN_EVENT_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ConnectorS.cpp
+ QFLE_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ConnectorS.h
+ QFLE_Test_Connector_svnt.h
+ QFLE_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.idl
new file mode 100644
index 00000000000..08f63d47833
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/QFLE_Test_Connector.idl"
+
+module QFLE_Test
+{
+ component Receiver
+ {
+ port QueryFilterListenEventTestConn::DDS_Listen info_listen;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.mpc
new file mode 100755
index 00000000000..107f30d18ea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_QFLE_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_QFLE_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ QFLE_Test_Receiver.idl
+ }
+}
+
+project(DDS_QFLE_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_QFLE_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ QFLE_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_QFLE_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLE_Test_Receiver_lem_gen DDS_QFLE_Test_Receiver_stub \
+ DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Base_stub
+ libs += Receiver_stub DDS_QFLE_Test_Connector_stub \
+ DDS_QFLE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLE_Test_Receiver_idl_gen DDS_QFLE_Test_Connector_stub \
+ DDS_QFLE_Test_Base_stub DDS_QFLE_Test_Connector_lem_gen
+ libs += DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_QFLE_Test_Receiver_lem_stub DDS_QFLE_Test_Receiver_stub \
+ DDS_QFLE_Test_Base_stub DDS_QFLE_Test_Connector_stub \
+ DDS_QFLE_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLE_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_QFLE_Test_Receiver_lem_stub DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Connector_svnt \
+ DDS_QFLE_Test_Receiver_exec DDS_QFLE_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Connector_svnt \
+ Receiver_exec DDS_QFLE_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_ReceiverS.cpp
+ QFLE_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_ReceiverS.h
+ QFLE_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..b5a8deebc94
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.cpp
@@ -0,0 +1,238 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "QFLE_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#define QUERY "( (iteration > %0) AND (iteration < %1) )"
+
+#define MIN_ITERATION "2"
+#define MAX_ITERATION "5"
+
+namespace CIAO_QFLE_Test_Receiver_Impl
+{
+ //============================================================
+ // QueryFilterListenEventTest_Listener_exec_i
+ //============================================================
+ QueryFilterListenEventTest_Listener::QueryFilterListenEventTest_Listener (
+ Atomic_ThreadId &thread_id)
+ : thread_id_ (thread_id)
+ {
+ }
+
+ QueryFilterListenEventTest_Listener::~QueryFilterListenEventTest_Listener (void)
+ {
+ }
+
+ void
+ QueryFilterListenEventTest_Listener::on_one_data (
+ const QueryFilterListenEventTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ ACE_DEBUG ((LM_DEBUG, "QueryFilterListenEventTest_Listener::on_one_data: "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (!info.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QueryFilterListenEventTest_Listener::on_one_data: "
+ "instance handle seems to be invalid "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ if (info.source_timestamp.sec == 0 &&
+ info.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QueryFilterListenEventTest_Listener::on_one_data: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ if (an_instance.iteration <= ACE_OS::atoi (MIN_ITERATION) ||
+ an_instance.iteration > ACE_OS::atoi (MAX_ITERATION) )
+ {
+ ACE_ERROR ((LM_ERROR, "QueryFilterListenEventTest_Listener::on_one_data: "
+ "ERROR: Unexpected iteration received.\n"));
+ }
+ }
+
+ void
+ QueryFilterListenEventTest_Listener::on_many_data (
+ const QueryFilterListenEventTestSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /*info*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : thread_id_listener_ (0),
+ iterations_ (10),
+ keys_ (5)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_listen_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ ::QFLE_Test::QueryFilterListenEventTestConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener (void)
+ {
+ return new QueryFilterListenEventTest_Listener (
+ this->thread_id_listener_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QFLE_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_listen_data ();
+ if (CORBA::is_nil (this->reader_))
+ {
+ ACE_ERROR ((LM_ERROR, "Receiver_exec_i::configuration_complete - "
+ "Error get reader connection.\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate - "
+ "Set filter.\n"));
+ CCM_DDS::QueryFilter filter;
+ filter.query = CORBA::string_dup (QUERY);
+ filter.query_parameters.length (2);
+ filter.query_parameters[0] = CORBA::string_dup (MIN_ITERATION);
+ filter.query_parameters[1] = CORBA::string_dup (MAX_ITERATION);
+ this->reader_->filter (filter);
+
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate - "
+ "Start listening.\n"));
+ start ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for ReaderListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "QF_EVENT: "
+ "Thread switch for ReaderListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QF_EVENT: "
+ "Thread switch for ReaderListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QF_EVENT: ReaderListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "QF_EVENT: ReaderListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLE_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.h
new file mode 100644
index 00000000000..c4a5a859a16
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Receiver/QFLE_Test_Receiver_exec.h
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "QFLE_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+#include <map>
+
+namespace CIAO_QFLE_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // QueryFilterListenEventTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export QueryFilterListenEventTest_Listener
+ : public virtual ::QFLE_Test::QueryFilterListenEventTestConn::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ QueryFilterListenEventTest_Listener (
+ Atomic_ThreadId &thread_id);
+ virtual ~QueryFilterListenEventTest_Listener (void);
+
+ virtual void
+ on_one_data (
+ const QueryFilterListenEventTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const QueryFilterListenEventTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::QFLE_Test::QueryFilterListenEventTestConn::CCM_Listener_ptr
+ get_info_listen_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::QFLE_Test::CCM_Receiver_Context_var context_;
+ ::QFLE_Test::QueryFilterListenEventTestConn::Reader_var reader_;
+
+ Atomic_ThreadId thread_id_listener_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLE_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.idl
new file mode 100644
index 00000000000..de94251344b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_QUERY_FILTER_LISTEN_EVENT_TEST_SENDER_IDL
+#define DDS_QUERY_FILTER_LISTEN_EVENT_TEST_SENDER_IDL
+
+#include "Connector/QFLE_Test_Connector.idl"
+
+module QFLE_Test
+{
+ component Sender
+ {
+ port QueryFilterListenEventTestConn::DDS_Write info_write;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.mpc
new file mode 100755
index 00000000000..47dd0051979
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_QFLE_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_QFLE_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_QFLE_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ QFLE_Test_Sender.idl
+ }
+}
+
+project(DDS_QFLE_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_QFLE_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ QFLE_Test_SenderE.idl
+ }
+}
+
+project(DDS_QFLE_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLE_Test_Sender_lem_gen DDS_QFLE_Test_Sender_stub \
+ DDS_QFLE_Test_Base_stub
+ libs += DDS_QFLE_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_SenderEC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLE_Test_Sender_idl_gen DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_stub
+ libs += DDS_QFLE_Test_Base_stub DDS_QFLE_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_SenderC.inl
+ }
+}
+
+project(DDS_QFLE_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_QFLE_Test_Sender_lem_stub DDS_QFLE_Test_Sender_stub \
+ DDS_QFLE_Test_Connector_lem_stub DDS_QFLE_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_QFLE_Test_Base_stub \
+ DDS_QFLE_Test_Connector_lem_stub DDS_QFLE_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLE_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_QFLE_Test_Base_stub DDS_QFLE_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_QFLE_Test_Connector_stub \
+ DDS_QFLE_Test_Connector_svnt DDS_QFLE_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_QFLE_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_QFLE_Test_Connector_stub DDS_QFLE_Test_Connector_svnt \
+ DDS_QFLE_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLE_Test_SenderS.cpp
+ QFLE_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ QFLE_Test_SenderS.h
+ QFLE_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLE_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..d98e7480819
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.cpp
@@ -0,0 +1,200 @@
+// -*- C++ -*-
+// $Id$
+
+#include "QFLE_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "ace/Date_Time.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_QFLE_Test_Sender_Impl
+{
+ //============================================================
+ // WriteManyHandler
+ //============================================================
+ WriteTicker::WriteTicker (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ WriteTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.write_one ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new WriteTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::write_one (void)
+ {
+ if (this->last_key_ != this->samples_.end ())
+ {
+ try
+ {
+ ++this->last_key_->second->iteration;
+ this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Written key <%C> - <%u>\n",
+ this->last_key_->first.c_str (),
+ this->last_key_->second->iteration));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key_->first.c_str ()));
+ }
+ ++this->last_key_;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key_ = this->samples_.begin ();
+ while (this->last_key_ != this->samples_.end ())
+ {
+ if (this->last_key_->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key_;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key_ == this->samples_.end ())
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ }
+ }
+ }
+
+
+ void
+ Sender_exec_i::start (void)
+ {
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ QueryFilterListenEventTest *new_key = new QueryFilterListenEventTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->samples_[key] = new_key;
+ }
+ this->last_key_ = this->samples_.begin ();
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 50000),
+ ACE_Time_Value (0, 50000)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QFLE_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLE_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.h
new file mode 100644
index 00000000000..ff4e52ee95a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/Sender/QFLE_Test_Sender_exec.h
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "QFLE_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_QFLE_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // WriteTicker
+ //============================================================
+ class WriteTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ WriteTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void write_one (void);
+
+ private:
+ ::QFLE_Test::CCM_Sender_Context_var context_;
+ ::QFLE_Test::QueryFilterListenEventTestConn::Writer_var writer_;
+
+ WriteTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, QueryFilterListenEventTest_var> Writer_Table;
+ Writer_Table samples_;
+
+ Writer_Table::iterator last_key_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLE_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/Plan.cdp
new file mode 100644
index 00000000000..f05284bed01
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/Plan.cdp
@@ -0,0 +1,392 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>QFLE_Test_Depl_1</label>
+ <UUID>QFLE_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="QFLE_Test_ConnectorComponentImplementation">
+ <name>QFLE_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="QFLE_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="QFLE_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_QFLE_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_QFLE_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLE_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLE_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLE_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="QFLE_Test_ConnectorComponentInstance">
+ <name>QFLE_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QFLE_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLE_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="QFLE_Test_ConnectorComponentInstance2">
+ <name>QFLE_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QFLE_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLE_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_listen_reader_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLE_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="QFLE_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_listen_data_control</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLE_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLE_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="QFLE_Test_Connector_ExecArtifact">
+ <name>QFLE_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLE_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="QFLE_Test_Connector_SvntArtifact">
+ <name>QFLE_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLE_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="QFLE_Test_Connector_StubArtifact">
+ <name>QFLE_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLE_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/run_test.pl
new file mode 100755
index 00000000000..ddeee753cf7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenEvent/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.idl
new file mode 100644
index 00000000000..c6321f54ebc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file QFLS_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_LISTEN_STATE_TEST_BASE_IDL
+#define QUERY_FILTER_LISTEN_STATE_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/QFLS_Test_BaseSupport.h"
+
+struct QueryFilterListenStateTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<QueryFilterListenStateTest> QueryFilterListenStateTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.mpc
new file mode 100755
index 00000000000..df55be54498
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Base/QFLS_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_QFLS_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_QFLS_Test_Base_stub
+ dynamicflags += QUERY_FILTER_LISTEN_STATE_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=QFLS_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ QFLS_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=QUERY_FILTER_LISTEN_STATE_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ QFLS_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.idl
new file mode 100644
index 00000000000..37d5f4d05ba
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file QFLS_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_IDL_
+#define QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/QFLS_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/QFLS_Test_ConnectorE.idl"
+
+module QFLS_Test
+{
+ module ::CCM_DDS::Typed < ::QueryFilterListenStateTest, ::QueryFilterListenStateTestSeq> QueryFilterListenStateTestConn;
+ connector QFLS_Test_Connector : QueryFilterListenStateTestConn::DDS_State
+ {
+ };
+};
+
+#endif /* QFLS_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.mpc
new file mode 100755
index 00000000000..86fc499ea48
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Connector/QFLS_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_QFLS_Test_Base -l .. -o ../lib -u DDS QFLS_Test_Connector"
+
+project(DDS_QFLS_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=QFLS_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=QFLS_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=QFLS_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=QFLS_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ QFLS_Test_Connector.idl
+ }
+}
+
+project(DDS_QFLS_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_QFLS_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=QFLS_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ QFLS_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_QFLS_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLS_Test_Connector_lem_gen DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_QFLS_Test_Base_stub DDS_QFLS_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_QFLS_Test_Connector_lem_stub
+ dynamicflags = QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ConnectorEC.h
+ QFLS_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLS_Test_Connector_idl_gen DDS_QFLS_Test_Base_stub
+ libs += DDS_QFLS_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_QFLS_Test_Connector_stub
+ dynamicflags = QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ConnectorC.h
+ QFLS_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_QFLS_Test_Connector_lem_stub DDS_QFLS_Test_Connector_stub DDS4CCM_lem_stub DDS_QFLS_Test_Base_stub
+ sharedname = DDS_QFLS_Test_Connector_exec
+ libs += DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Connector_lem_stub DDS_QFLS_Test_Base_stub DDS4CCM_lem_stub DDS_QFLS_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_Connector_conn.h
+ QFLS_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLS_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_QFLS_Test_Connector_lem_stub DDS_QFLS_Test_Connector_exec DDS_QFLS_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_QFLS_Test_Connector_svnt
+ libs += DDS_QFLS_Test_Connector_stub \
+ DDS_QFLS_Test_Connector_lem_stub \
+ DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = QUERY_FILTER_LISTEN_STATE_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ConnectorS.cpp
+ QFLS_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ConnectorS.h
+ QFLS_Test_Connector_svnt.h
+ QFLS_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.idl
new file mode 100644
index 00000000000..a9b415db954
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/QFLS_Test_Connector.idl"
+
+module QFLS_Test
+{
+ component Receiver
+ {
+ port QueryFilterListenStateTestConn::DDS_StateListen info_state;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.mpc
new file mode 100755
index 00000000000..99925807e77
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver.mpc
@@ -0,0 +1,151 @@
+// $Id$
+
+project(DDS_QFLS_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_QFLS_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ QFLS_Test_Receiver.idl
+ }
+}
+
+project(DDS_QFLS_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_QFLS_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ QFLS_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_QFLS_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLS_Test_Receiver_lem_gen DDS_QFLS_Test_Receiver_stub \
+ DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Base_stub
+ libs += Receiver_stub DDS_QFLS_Test_Connector_stub \
+ DDS_QFLS_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLS_Test_Receiver_idl_gen DDS_QFLS_Test_Connector_stub \
+ DDS_QFLS_Test_Base_stub DDS_QFLS_Test_Connector_lem_gen
+ libs += DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_QFLS_Test_Receiver_lem_stub DDS_QFLS_Test_Receiver_stub \
+ DDS_QFLS_Test_Base_stub DDS_QFLS_Test_Connector_stub \
+ DDS_QFLS_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLS_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_QFLS_Test_Receiver_lem_stub DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Connector_svnt \
+ DDS_QFLS_Test_Receiver_exec DDS_QFLS_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Connector_svnt \
+ Receiver_exec DDS_QFLS_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_ReceiverS.cpp
+ QFLS_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_ReceiverS.h
+ QFLS_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..0233d59137e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.cpp
@@ -0,0 +1,245 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "QFLS_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+#define QUERY "( (iteration > %0) AND (iteration < %1) )"
+
+#define MIN_ITERATION "2"
+#define MAX_ITERATION "5"
+
+namespace CIAO_QFLS_Test_Receiver_Impl
+{
+ //============================================================
+ // QueryFilterListenStateTest_Listener_exec_i
+ //============================================================
+ QueryFilterListenStateTest_Listener::QueryFilterListenStateTest_Listener (
+ Atomic_ThreadId &thread_id)
+ : thread_id_ (thread_id)
+ {
+ }
+
+ QueryFilterListenStateTest_Listener::~QueryFilterListenStateTest_Listener (void)
+ {
+ }
+
+ void
+ QueryFilterListenStateTest_Listener::on_creation (
+ const QueryFilterListenStateTest& an_instance,
+ const CCM_DDS::ReadInfo& /*read_info*/)
+ {
+ ACE_DEBUG ((LM_DEBUG, "QueryFilterListenStateTest_Listener::on_creation: "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (an_instance.iteration <= ACE_OS::atoi (MIN_ITERATION) ||
+ an_instance.iteration > ACE_OS::atoi (MAX_ITERATION) )
+ {
+ ACE_ERROR ((LM_ERROR, "QueryFilterListenStateTest_Listener::on_creation: "
+ "ERROR: Unexpected iteration received.\n"));
+ }
+ }
+
+ void
+ QueryFilterListenStateTest_Listener::on_one_update (
+ const QueryFilterListenStateTest& an_instance,
+ const CCM_DDS::ReadInfo& /*read_info*/)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ ACE_DEBUG ((LM_DEBUG, "QueryFilterListenStateTest_Listener::on_one_update: "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (an_instance.iteration <= ACE_OS::atoi (MIN_ITERATION) ||
+ an_instance.iteration > ACE_OS::atoi (MAX_ITERATION) )
+ {
+ ACE_ERROR ((LM_ERROR, "QueryFilterListenStateTest_Listener::on_one_update: "
+ "ERROR: Unexpected iteration received.\n"));
+ }
+ }
+
+ void
+ QueryFilterListenStateTest_Listener::on_many_updates (
+ const QueryFilterListenStateTestSeq& /*an_instance*/,
+ const CCM_DDS::ReadInfoSeq& /*read_info*/)
+ {
+ }
+
+ void
+ QueryFilterListenStateTest_Listener::on_deletion (
+ const QueryFilterListenStateTest& /*an_instance*/,
+ const CCM_DDS::ReadInfo& /*read_info*/)
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : thread_id_listener_ (0),
+ iterations_ (10),
+ keys_ (5)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::start ()
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_state_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ ::QFLS_Test::QueryFilterListenStateTestConn::CCM_StateListener_ptr
+ Receiver_exec_i::get_info_state_data_listener (void)
+ {
+ return new QueryFilterListenStateTest_Listener (
+ this->thread_id_listener_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_state_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QFLS_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_state_data ();
+ if (CORBA::is_nil (this->reader_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Receiver_exec_i::configuration_complete - "
+ "Error get reader connection.\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate - "
+ "Set filter.\n"));
+ CCM_DDS::QueryFilter filter;
+ filter.query = CORBA::string_dup (QUERY);
+ filter.query_parameters.length (2);
+ filter.query_parameters[0] = CORBA::string_dup (MIN_ITERATION);
+ filter.query_parameters[1] = CORBA::string_dup (MAX_ITERATION);
+ this->reader_->filter (filter);
+
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate - "
+ "Start listening.\n"));
+ start ();
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for ReaderListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "QF_STATE: "
+ "Thread switch for ReaderListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QF_STATE: "
+ "Thread switch for ReaderListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: QF_STATE: ReaderListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "QF_STATE: ReaderListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLS_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.h
new file mode 100644
index 00000000000..36d348e0b6b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Receiver/QFLS_Test_Receiver_exec.h
@@ -0,0 +1,111 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "QFLS_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+#include <map>
+
+namespace CIAO_QFLS_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ //============================================================
+ // QueryFilterListenStateTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export QueryFilterListenStateTest_Listener
+ : public virtual ::QFLS_Test::QueryFilterListenStateTestConn::CCM_StateListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ QueryFilterListenStateTest_Listener (
+ Atomic_ThreadId &thread_id);
+ virtual ~QueryFilterListenStateTest_Listener (void);
+
+ virtual void
+ on_creation (const QueryFilterListenStateTest& an_instance,
+ const CCM_DDS::ReadInfo& read_info);
+
+ virtual void
+ on_one_update (const QueryFilterListenStateTest& an_instance,
+ const CCM_DDS::ReadInfo& read_info);
+
+ virtual void
+ on_many_updates (const QueryFilterListenStateTestSeq& an_instance,
+ const CCM_DDS::ReadInfoSeq& read_info);
+
+ virtual void
+ on_deletion (const QueryFilterListenStateTest& an_instance,
+ const CCM_DDS::ReadInfo& read_info);
+
+ private:
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ void start ();
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::QFLS_Test::QueryFilterListenStateTestConn::CCM_StateListener_ptr
+ get_info_state_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_state_status (void);
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::QFLS_Test::CCM_Receiver_Context_var context_;
+ ::QFLS_Test::QueryFilterListenStateTestConn::Reader_var reader_;
+
+ Atomic_ThreadId thread_id_listener_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLS_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.idl
new file mode 100644
index 00000000000..67d4cd36c64
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_QUERY_FILTER_LISTEN_STATE_TEST_SENDER_IDL
+#define DDS_QUERY_FILTER_LISTEN_STATE_TEST_SENDER_IDL
+
+#include "Connector/QFLS_Test_Connector.idl"
+
+module QFLS_Test
+{
+ component Sender
+ {
+ port QueryFilterListenStateTestConn::DDS_Update info_update;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.mpc
new file mode 100755
index 00000000000..cd24ca13bde
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_QFLS_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_QFLS_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_QFLS_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ QFLS_Test_Sender.idl
+ }
+}
+
+project(DDS_QFLS_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_QFLS_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ QFLS_Test_SenderE.idl
+ }
+}
+
+project(DDS_QFLS_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_QFLS_Test_Sender_lem_gen DDS_QFLS_Test_Sender_stub \
+ DDS_QFLS_Test_Base_stub
+ libs += DDS_QFLS_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_SenderEC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_QFLS_Test_Sender_idl_gen DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_stub
+ libs += DDS_QFLS_Test_Base_stub DDS_QFLS_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_SenderC.inl
+ }
+}
+
+project(DDS_QFLS_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_QFLS_Test_Sender_lem_stub DDS_QFLS_Test_Sender_stub \
+ DDS_QFLS_Test_Connector_lem_stub DDS_QFLS_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_QFLS_Test_Base_stub \
+ DDS_QFLS_Test_Connector_lem_stub DDS_QFLS_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_QFLS_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_QFLS_Test_Base_stub DDS_QFLS_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_QFLS_Test_Connector_stub \
+ DDS_QFLS_Test_Connector_svnt DDS_QFLS_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_QFLS_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_QFLS_Test_Connector_stub DDS_QFLS_Test_Connector_svnt \
+ DDS_QFLS_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ QFLS_Test_SenderS.cpp
+ QFLS_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ QFLS_Test_SenderS.h
+ QFLS_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ QFLS_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..117acacd338
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.cpp
@@ -0,0 +1,203 @@
+// -*- C++ -*-
+// $Id$
+
+#include "QFLS_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "ace/Date_Time.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_QFLS_Test_Sender_Impl
+{
+ //============================================================
+ // StartHandler
+ //============================================================
+ StartHandler::StartHandler(Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ int
+ StartHandler::handle_exception (ACE_HANDLE)
+ {
+ this->callback_.run ();
+ return 0;
+ }
+
+ //============================================================
+ // UpdateTicker
+ //============================================================
+ UpdateTicker::UpdateTicker (Sender_exec_i &callback)
+ : callback_ (callback),
+ last_iter_ (0)
+ {
+ }
+
+ int
+ UpdateTicker::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->callback_.update_one (++this->last_iter_);
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new UpdateTicker (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::update_one (CORBA::UShort iter)
+ {
+ if (iter <= this->iterations ())
+ {
+ for (CORBA::UShort i = 1; i < this->keys () + 1; ++i)
+ {
+ char key[7];
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ QueryFilterListenStateTest update_key;
+ update_key.key = CORBA::string_dup (key);
+ update_key.iteration = iter;
+ this->updater_->update_one (update_key, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Updated key <%C> - <%u>\n",
+ key, iter));
+
+ }
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::update_one - "
+ "Finished updating. Cancel Timer.\n"));
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (
+ this->ticker_);
+ }
+ }
+
+ void
+ Sender_exec_i::run ()
+ {
+
+ //first create the instances for consecutive updating.
+ for (CORBA::UShort i = 1; i < this->keys () + 1; ++i)
+ {
+ char key[7];
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ QueryFilterListenStateTest new_key;
+ new_key.key = CORBA::string_dup(key);
+ new_key.iteration = 0;
+ this->updater_->create_one (new_key);
+ }
+
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (5, 50000),
+ ACE_Time_Value (0, 50000)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ StartHandler *rh = new StartHandler (*this);
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh);
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::QFLS_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->updater_ = this->context_->get_connection_info_update_data ();
+ start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLS_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.h
new file mode 100644
index 00000000000..dbc2d8c0fbf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/Sender/QFLS_Test_Sender_exec.h
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "QFLS_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_QFLS_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ //============================================================
+ // StartHandler
+ //============================================================
+ class StartHandler :
+ public ACE_Event_Handler
+ {
+ public:
+ StartHandler (Sender_exec_i &callback);
+ virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE);
+ private:
+ Sender_exec_i &callback_;
+ };
+
+ //============================================================
+ // UpdateTicker
+ //============================================================
+ class UpdateTicker :
+ public ACE_Event_Handler
+ {
+ public:
+ UpdateTicker (Sender_exec_i &callback);
+ int handle_timeout (const ACE_Time_Value &, const void *);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ CORBA::UShort last_iter_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+ void run (void);
+ void update_one (CORBA::UShort iter);
+
+ private:
+ ::QFLS_Test::CCM_Sender_Context_var context_;
+ ::QFLS_Test::QueryFilterListenStateTestConn::Updater_var updater_;
+
+ UpdateTicker *ticker_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_QFLS_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/Plan.cdp
new file mode 100644
index 00000000000..fac9b056e54
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/Plan.cdp
@@ -0,0 +1,392 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>QFLS_Test_Depl_1</label>
+ <UUID>QFLS_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="QFLS_Test_ConnectorComponentImplementation">
+ <name>QFLS_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="QFLS_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="QFLS_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_QFLS_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_QFLS_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLS_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLS_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_QFLS_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="QFLS_Test_ConnectorComponentInstance">
+ <name>QFLS_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QFLS_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLS_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="QFLS_Test_ConnectorComponentInstance2">
+ <name>QFLS_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="QFLS_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>QFLS_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_state_rdr</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_state_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLS_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_state_dl</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_state_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="QFLS_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_state_dc</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_state_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLS_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="QFLS_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="QFLS_Test_Connector_ExecArtifact">
+ <name>QFLS_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLS_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="QFLS_Test_Connector_SvntArtifact">
+ <name>QFLS_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLS_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="QFLS_Test_Connector_StubArtifact">
+ <name>QFLS_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_QFLS_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/run_test.pl
new file mode 100755
index 00000000000..ddeee753cf7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/QueryFilterListenState/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl
new file mode 100644
index 00000000000..29903ba6b30
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file Reader_Starter.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef READER_STARTER_IDL
+#define READER_STARTER_IDL
+
+#pragma ciao lem "Base/Reader_StarterE.idl"
+
+interface ReaderStarter
+{
+ void start_read ();
+ void read_no_data ();
+ void set_reader_properties (in unsigned short nr_keys,
+ in unsigned short nr_iterations);
+};
+
+#endif /* SAMPLE_INFO_IDL */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc
new file mode 100755
index 00000000000..e5e5ef8ea8e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Starter.mpc
@@ -0,0 +1,115 @@
+// $Id$
+
+project(DDS_Reader_Starter_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after +=
+ idlflags += -Wb,stub_export_macro=READER_STARTER_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_stub_export.h \
+ -Wb,skel_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,skel_export_include=Reader_Starter_svnt_export.h \
+ -Wb,svnt_export_macro=READER_STARTER_SVNT_Export \
+ -Wb,svnt_export_include=Reader_Starter_svnt_export.h \
+ -Wb,exec_export_macro=READER_STARTER_EXEC_Export \
+ -Wb,exec_export_include=Reader_Starter_exec_export.h -I..
+
+ IDL_Files {
+ Reader_Starter.idl
+ }
+}
+
+project(DDS_Reader_Starter_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Reader_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_STARTER_LEM_STUB_Export \
+ -Wb,stub_export_include=Reader_Starter_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Reader_StarterE.idl
+ }
+}
+
+project(DDS_Reader_Starter_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Reader_Starter_lem_gen DDS_Reader_Starter_stub
+ libs += Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_lem_stub
+ dynamicflags = READER_STARTER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterEC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterEC.h
+ Reader_Starter_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterEC.inl
+ }
+}
+
+project(DDS_Reader_Starter_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Reader_Starter_idl_gen
+ libs +=
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Reader_Starter_stub
+ dynamicflags = READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterC.cpp
+ }
+
+ Header_Files {
+ Reader_StarterC.h
+ Reader_Starter_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterC.inl
+ }
+}
+
+
+project(DDS_Reader_Starter_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Reader_Starter_lem_stub DDS_Reader_Starter_stub\
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Reader_Starter_svnt
+ libs += Reader_Starter_stub Reader_Starter_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_STARTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_StarterS.cpp
+ Reader_Starter_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_StarterS.h
+ Reader_Starter_svnt.h
+ Reader_Starter_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_StarterS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl
new file mode 100644
index 00000000000..8d2c467acec
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file Reader_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef READER_TEST_BASE_IDL
+#define READER_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Reader_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "ReaderTest"
+#pragma DCPS_DATA_KEY "ReaderTest key"
+
+struct ReaderTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<ReaderTest> ReaderTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc
new file mode 100755
index 00000000000..e8606e033d9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Base/Reader_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Reader_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Reader_Test_Base_stub
+ dynamicflags += READER_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=READER_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Reader_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Reader_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=READER_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Reader_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl
new file mode 100644
index 00000000000..53cf908ef44
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Reader_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef READER_TEST_CONNECTOR_IDL_
+#define READER_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Reader_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Reader_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::ReaderTest, ::ReaderTestSeq> ReaderTest;
+};
+
+module Reader_Test
+{
+ connector Reader_Test_Connector : ::CCM_DDS::ReaderTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Reader_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc
new file mode 100755
index 00000000000..bf511b1341b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Connector/Reader_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Reader_Test_Base -l .. -o ../lib -u DDS Reader_Test_Connector"
+
+project(DDS_Reader_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=READER_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Reader_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=READER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Reader_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=READER_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Reader_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=READER_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Reader_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Reader_Test_Connector.idl
+ }
+}
+
+project(DDS_Reader_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Reader_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=READER_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Reader_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Reader_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_Reader_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Reader_Test_Connector_lem_gen DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Reader_Test_Connector_lem_stub
+ dynamicflags = READER_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ConnectorEC.h
+ Reader_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_Reader_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Reader_Test_Connector_idl_gen DDS_Reader_Test_Base_stub
+ libs += DDS_Reader_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Reader_Test_Connector_stub
+ dynamicflags = READER_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ConnectorC.h
+ Reader_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_Reader_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub DDS_Reader_Test_Base_stub
+ sharedname = DDS_Reader_Test_Connector_exec
+ libs += DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub DDS_Reader_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Reader_Test_Connector_conn.h
+ Reader_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Reader_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_exec DDS_Reader_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Reader_Test_Connector_svnt
+ libs += DDS_Reader_Test_Connector_stub \
+ DDS_Reader_Test_Connector_lem_stub \
+ DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = READER_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ConnectorS.cpp
+ Reader_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ConnectorS.h
+ Reader_Test_Connector_svnt.h
+ Reader_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/README b/modules/CIAO/connectors/dds4ccm/tests/Reader/README
new file mode 100644
index 00000000000..ec69fbb989d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/README
@@ -0,0 +1,22 @@
+# $Id$
+
+This test tests the reader.
+
+The following methods of the reader are tested:
+
+* read_one
+* read_all
+* read_one_last
+* read_one_all
+
+First of all, the Sender writes a known number of samples to DDS.
+After that the Sender informs the Receiver which test is about
+to run and how many samples should be read from DDS. Before the
+Receiver starts reading, he must find out that all samples resides
+in DDS on the receiving side. He does that by calling read_last every
+time a DATA_ON_READERS_STATUS comes in on the ConnectorStatusListener.
+Once the very last sample is in DDS on the receiving side, the Receiver
+starts to read the samples. Afterwards he checks wether all samples are
+avaiable (thus are read correctly from DDS).
+
+The Receiver also test whether the correct exceptions are thrown.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl
new file mode 100644
index 00000000000..a1c6ccaa8d9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Reader_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module Reader_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::ReaderTest::DDS_Listen info_out;
+
+ provides ReaderStarter reader_start;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc
new file mode 100755
index 00000000000..a6a1aec6c05
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver.mpc
@@ -0,0 +1,157 @@
+// $Id$
+
+project(DDS_Reader_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Reader_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Reader_Test_Receiver.idl
+ }
+}
+
+project(DDS_Reader_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Reader_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Reader_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_Reader_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Reader_Test_Receiver_lem_gen DDS_Reader_Test_Receiver_stub \
+ DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub \
+ DDS_Reader_Starter_stub
+ libs += Receiver_stub DDS_Reader_Test_Connector_stub \
+ DDS_Reader_Test_Base_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_Reader_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Reader_Test_Receiver_idl_gen DDS_Reader_Test_Connector_stub \
+ DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_lem_gen \
+ DDS_Reader_Starter_stub DDS_Reader_Starter_lem_stub
+ libs += DDS_Reader_Test_Connector_stub DDS_Reader_Test_Base_stub \
+ Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_Reader_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Reader_Test_Receiver_lem_stub DDS_Reader_Test_Receiver_stub \
+ DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub \
+ DDS_Reader_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_Reader_Starter_lem_stub DDS_Reader_Starter_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub Reader_Starter_lem_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL READER_STARTER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Reader_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Reader_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Reader_Test_Receiver_lem_stub DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \
+ DDS_Reader_Test_Receiver_exec DDS_Reader_Test_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Reader_Starter_stub \
+ DDS_Reader_Starter_svnt DDS_Reader_Starter_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \
+ Receiver_exec DDS_Reader_Test_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel Reader_Starter_stub Reader_Starter_svnt \
+ Reader_Starter_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_ReceiverS.cpp
+ Reader_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_Test_ReceiverS.h
+ Reader_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..beb5ad9d60b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.cpp
@@ -0,0 +1,638 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Reader_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_unistd.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Reader_Test_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Checking if last sample "
+ "is available in DDS...\n"));
+ if (this->callback_.check_last ())
+ this->callback_.run ();
+ return 0;
+ }
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ Starter_exec_i::Starter_exec_i (Receiver_exec_i & callback)
+ : callback_ (callback)
+ {
+ }
+
+ Starter_exec_i::~Starter_exec_i (void)
+ {
+ }
+
+ void
+ Starter_exec_i::set_reader_properties (CORBA::UShort nr_keys,
+ CORBA::UShort nr_iterations)
+ {
+ this->callback_.keys (nr_keys);
+ this->callback_.iterations (nr_iterations);
+ }
+
+ void
+ Starter_exec_i::start_read ()
+ {
+ this->callback_.start_read ();
+ }
+
+ void
+ Starter_exec_i::read_no_data ()
+ {
+ this->callback_.read_no_data ();
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (10),
+ keys_ (5),
+ has_run_ (false)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+
+ bool
+ Receiver_exec_i::check_last ()
+ {
+ try
+ {
+ if (! ::CORBA::is_nil (this->reader_))
+ {
+ ReaderTest readertest_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ char key[100];
+ ACE_OS::sprintf (key, "KEY_%d", this->keys_);
+ readertest_info.key = CORBA::string_dup (key);
+ this->reader_->read_one_last (
+ readertest_info,
+ readinfo,
+ ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::check_last: "
+ "key <%C> - iteration <%d>\n",
+ readertest_info.key.in (),
+ readertest_info.iteration));
+ return readertest_info.iteration == this->iterations_;
+ }
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "Receiver_exec_i::check_last: "
+ "Unexpected exception caught\n"));
+ }
+ return false;
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_one_last (bool test_handles)
+ {
+ try
+ {
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ ReaderTest readertest_info;
+ ::CCM_DDS::ReadInfo readinfo;
+ char key[100];
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ readertest_info.key = CORBA::string_dup (key);
+ DDS::InstanceHandle_t hnd = test_handles
+ ? this->handles_[key]
+ : ::DDS::HANDLE_NIL;
+ this->reader_->read_one_last (
+ readertest_info,
+ readinfo,
+ hnd);
+ if (readertest_info.iteration == this->iterations_)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE LAST: ")
+ ACE_TEXT ("last iteration received for <%C>: iteration <%u>\n"),
+ readertest_info.key.in (),
+ readertest_info.iteration));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE LAST: ")
+ ACE_TEXT ("Didn't receive last iteration for <%C>: ")
+ ACE_TEXT ("expected <%u> - received <%u>\n"),
+ readertest_info.key.in (),
+ this->iterations_,
+ readertest_info.iteration));
+ }
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_ERROR, ACE_TEXT ("READ ONE LAST: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE LAST: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ONE LAST:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_one_last : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::read_one_all (bool test_handles)
+ {
+ try
+ {
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ ReaderTest readertest_info;
+ ReaderTestSeq *readertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ char key[100];
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ readertest_info.key = CORBA::string_dup (key);
+ DDS::InstanceHandle_t hnd = test_handles
+ ? this->handles_[key]
+ : ::DDS::HANDLE_NIL;
+ this->reader_->read_one_all (
+ readertest_info,
+ readertest_info_seq,
+ readinfo_seq,
+ hnd);
+
+ if (readertest_info_seq->length () != this->iterations_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("samples for <%C>: expected <%u> - received <%u>\n"),
+ key,
+ this->iterations_,
+ readertest_info_seq->length ()));
+ }
+ else
+ {
+ this->handles_[key] = (*readinfo_seq)[0].instance_handle;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ")
+ ACE_TEXT ("All iterations received for <%C>: number of iterations <%u>\n"),
+ key,
+ readertest_info_seq->length ()));
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ")
+ ACE_TEXT ("Handle created for <%C>: length <%u> - isValid <%d>\n"),
+ key,
+ (*readinfo_seq)[0].instance_handle.length,
+ (*readinfo_seq)[0].instance_handle.isValid));
+ }
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ONE ALL: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ if (ex.error_code == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ")
+ ACE_TEXT ("caught InternalError exception: handles differ\n")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ONE ALL: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ONE ALL: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_one_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::read_last (void)
+ {
+ try
+ {
+ ReaderTestSeq *readertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_last (
+ readertest_info_seq,
+ readinfo_seq);
+
+ if (readertest_info_seq->length () != this->keys_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ LAST: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("instances : expected <%u> - received <%u>\n"),
+ this->keys_,
+ readertest_info_seq->length ()));
+ }
+ for (CORBA::ULong it = 0; it < readertest_info_seq->length (); ++it)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ LAST : ")
+ ACE_TEXT ("last iteration received for <%C>: iteration <%u>\n"),
+ (*readertest_info_seq)[it].key.in (),
+ (*readertest_info_seq)[it].iteration));
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ LAST: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ LAST: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ LAST: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_last : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ try
+ {
+ ReaderTestSeq *readertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_all (
+ readertest_info_seq,
+ readinfo_seq);
+
+ CORBA::ULong nr_samples = this->keys_ * this->iterations_;
+ if (readertest_info_seq->length () != nr_samples)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("samples : expected <%u> - received <%u>\n"),
+ nr_samples,
+ readertest_info_seq->length ()));
+ }
+ if (readertest_info_seq->length () > 0)
+ {
+ CORBA::UShort nr_keys_changed = 1;
+ CORBA::String_var last_key ((*readertest_info_seq)[0].key.in ());
+ CORBA::UShort iterations = 0;
+ for (CORBA::ULong it = 0; it < readertest_info_seq->length (); ++it)
+ {
+ if (ACE_OS::strcmp (last_key, (*readertest_info_seq)[it].key.in ()) != 0)
+ {
+ ACE_OS::strcpy (last_key, (*readertest_info_seq)[it].key.in ());
+ ++nr_keys_changed;
+ }
+ // check readinfo struct.
+ if (!(*readinfo_seq)[it].instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("received instance handle should be valid ")
+ ACE_TEXT ("for keyed data: ")
+ ACE_TEXT ("key <%C> - iteration <%u>\n"),
+ (*readertest_info_seq)[it].key.in (),
+ (*readertest_info_seq)[it].iteration));
+ }
+ if ((*readinfo_seq)[it].source_timestamp.sec == 0 &&
+ (*readinfo_seq)[it].source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: READ ALL: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ (*readertest_info_seq)[it].key.in (),
+ (*readertest_info_seq)[it].iteration));
+ }
+ ++iterations;
+ }
+ if (nr_keys_changed != this->keys_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("instances : expected <%u> - received <%u>\n"),
+ this->keys_,
+ nr_keys_changed));
+ }
+ if (iterations != (this->keys_ * this->iterations_))
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("samples : expected <%u> - received <%u>\n"),
+ nr_samples,
+ iterations));
+ }
+ }
+ }
+ catch (const CCM_DDS::NonExistent& ex)
+ {
+ for (CORBA::ULong i = 0; i < ex.indexes.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ ALL: ")
+ ACE_TEXT ("caught expected exception: index <%u>\n"),
+ ex.indexes[i]));
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ ALL: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ ALL: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_all : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::test_exception ()
+ {
+ // test exception handling
+ bool except_caught = false;
+ try
+ {
+ ReaderTest readertest_info;
+ readertest_info.key = CORBA::string_dup ("KEY_0");
+ ::CCM_DDS::ReadInfo readinfo;
+ this->reader_->read_one_last (readertest_info, readinfo, ::DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception: ")
+ ACE_TEXT ("Wrong exception caught while reading non existent instance\n")));
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ except_caught = true;
+ }
+ if (!except_caught)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception: ")
+ ACE_TEXT ("no excep caught while reading non existent instance\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::test_exception_with_handles ()
+ {
+ // test exception handling
+ bool except_caught = false;
+ try
+ {
+ ReaderTest readertest_info;
+ readertest_info.key = CORBA::string_dup ("KEY_1");
+ ::CCM_DDS::ReadInfo readinfo;
+ DDS::InstanceHandle_t hnd = this->handles_["KEY_2"];
+ this->reader_->read_one_last (
+ readertest_info,
+ readinfo,
+ hnd);
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ except_caught = true;
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver_exec_i::test_exception_with_handles: ")
+ ACE_TEXT ("Expected exception caught while reading non existent instance\n")));
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception_with_handles: ")
+ ACE_TEXT ("Wrong exception caught while reading non existent instance\n")));
+ }
+ if (!except_caught)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR : Receiver_exec_i::test_exception_with_handles: ")
+ ACE_TEXT ("no excep caught while reading non existent instance\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::read_no_data ()
+ {
+ try
+ {
+ ReaderTestSeq *readertest_info_seq;
+ ::CCM_DDS::ReadInfoSeq *readinfo_seq;
+ this->reader_->read_all (
+ readertest_info_seq,
+ readinfo_seq);
+
+ if (readertest_info_seq->length () > 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ NO DATA: ")
+ ACE_TEXT ("Didn't receive the expected number of ")
+ ACE_TEXT ("samples : expected <%u> - received <%u>\n"),
+ 0,
+ readertest_info_seq->length ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ NO DATA: ")
+ ACE_TEXT ("No data available.\n")));
+ }
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("ERROR: READ NO DATA: ")
+ ACE_TEXT ("Caught NonExistent exception")));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: READ NO DATA: ")
+ ACE_TEXT ("caught InternalError exception: retval <%u>\n"),
+ ex.error_code));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("ERROR: READ NO DATA: ");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: Receiver_exec_i::read_no_data : Exception caught\n")));
+ }
+ }
+
+ void
+ Receiver_exec_i::run ()
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+
+ this->has_run_ = true;
+ read_all ();
+ read_last ();
+ read_one_all ();
+ read_one_last ();
+ test_exception ();
+ //now test with collected handles
+ read_one_all (true);
+ read_one_last (true);
+ test_exception_with_handles ();
+ }
+
+ void
+ Receiver_exec_i::start_read ()
+ {
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(1, 0),
+ ACE_Time_Value(1, 0)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Receiver_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ // Port operations.
+ ::CCM_DDS::ReaderTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return 0;
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ ::CCM_ReaderStarter_ptr
+ Receiver_exec_i::get_reader_start ()
+ {
+ return new Starter_exec_i (*this);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Reader_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->ticker_)
+ {
+ ACE_ERROR ((LM_ERROR, "Still checking DDS upon exit\n"));
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ this->ticker_ = 0;
+ }
+
+ if (!this->has_run_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: ")
+ ACE_TEXT ("Test did not run: Didn't receive ")
+ ACE_TEXT ("the expected number of samples\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Reader_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h
new file mode 100644
index 00000000000..2d7a6251d7d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Receiver/Reader_Test_Receiver_exec.h
@@ -0,0 +1,132 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Reader_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Reader_Test_Receiver_Impl
+{
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ Receiver_exec_i &callback_;
+
+ };
+
+ //============================================================
+ // Starter_exec_i
+ //============================================================
+ class Starter_exec_i
+ : public virtual ::CCM_ReaderStarter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Starter_exec_i (Receiver_exec_i & callback);
+ virtual ~Starter_exec_i (void);
+
+ virtual void set_reader_properties (CORBA::UShort nr_keys,
+ CORBA::UShort nr_iterations);
+
+ virtual void read_no_data ();
+ virtual void start_read ();
+
+ private:
+ Receiver_exec_i &callback_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::ReaderTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_ReaderStarter_ptr
+ get_reader_start ();
+
+ void read_no_data ();
+ void start_read ();
+ bool check_last ();
+ void run (void);
+
+ ::CORBA::UShort iterations (void);
+
+ void iterations (::CORBA::UShort iterations);
+
+ ::CORBA::UShort keys (void);
+
+ void keys (::CORBA::UShort keys);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Reader_Test::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::ReaderTest::Reader_var reader_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ CORBA::Boolean has_run_;
+
+ void read_all ();
+ void read_last ();
+ void read_one_all (bool test_handles = false);
+ void read_one_last (bool test_handles = false);
+ void test_exception ();
+ void test_exception_with_handles ();
+
+ read_action_Generator *ticker_;
+
+ typedef std::map<ACE_CString, DDS::InstanceHandle_t> Handle_Table;
+ Handle_Table handles_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Reader_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl
new file mode 100644
index 00000000000..f8f0afcb3ae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_READER_TEST_SENDER_IDL
+#define DDS_READER_TEST_SENDER_IDL
+
+#include "Connector/Reader_Test_Connector.idl"
+#include "Base/Reader_Starter.idl"
+
+module Reader_Test
+{
+ component Sender
+ {
+ port CCM_DDS::ReaderTest::DDS_Write info_write;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+
+ uses ReaderStarter start_reader;
+
+ attribute unsigned short keys;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc
new file mode 100755
index 00000000000..6679ff15677
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender.mpc
@@ -0,0 +1,152 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Reader_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Reader_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Reader_Test_Connector_idl_gen DDS_Starter_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Reader_Test_Sender.idl
+ }
+}
+
+project(DDS_Reader_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Reader_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Reader_Test_SenderE.idl
+ }
+}
+
+project(DDS_Reader_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Reader_Test_Sender_lem_gen DDS_Reader_Test_Sender_stub \
+ DDS_Reader_Test_Base_stub DDS_Reader_Starter_stub
+ libs += DDS_Reader_Test_Base_stub Sender_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_SenderEC.inl
+ }
+}
+
+project(DDS_Reader_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Reader_Test_Sender_idl_gen DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_stub DDS_Reader_Starter_stub \
+ DDS_Reader_Starter_lem_stub
+ libs += DDS_Reader_Test_Base_stub DDS_Reader_Test_Connector_stub \
+ Reader_Starter_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Reader_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_SenderC.inl
+ }
+}
+
+project(DDS_Reader_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Reader_Test_Sender_lem_stub DDS_Reader_Test_Sender_stub \
+ DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Reader_Test_Base_stub \
+ DDS_Reader_Test_Connector_lem_stub DDS_Reader_Test_Connector_stub \
+ Reader_Starter_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Reader_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Reader_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Reader_Test_Base_stub DDS_Reader_Test_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel DDS_Reader_Test_Connector_stub \
+ DDS_Reader_Test_Connector_svnt DDS_Reader_Test_Connector_lem_stub \
+ DDS_Reader_Starter_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub DDS_Reader_Test_Base_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel DDS_Reader_Test_Connector_stub DDS_Reader_Test_Connector_svnt \
+ DDS_Reader_Test_Connector_lem_stub Reader_Starter_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Reader_Test_SenderS.cpp
+ Reader_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Reader_Test_SenderS.h
+ Reader_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Reader_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..242249bbcd2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.cpp
@@ -0,0 +1,202 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Reader_Test_Sender_exec.h"
+#include "ace/Log_Msg.h"
+
+namespace CIAO_Reader_Test_Sender_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Sender_exec_i &callback)
+ : callback_ (callback)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr ,
+ const DDS::InconsistentTopicStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr ,
+ const DDS::RequestedIncompatibleQosStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr ,
+ const DDS::SampleRejectedStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr ,
+ const DDS::OfferedDeadlineMissedStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr ,
+ const DDS::OfferedIncompatibleQosStatus & )
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind status_kind)
+ {
+ if (status_kind == ::DDS::PUBLICATION_MATCHED_STATUS)
+ this->callback_.start ();
+ }
+
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : iterations_ (10),
+ keys_ (5),
+ done_ (false),
+ ccm_activated_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ //start can be called more than once...
+ if (!this->done_ && this->ccm_activated_)
+ {
+ this->done_ = true;
+ if (! ::CORBA::is_nil (this->starter_))
+ {
+ this->starter_->set_reader_properties (this->keys_, this->iterations_);
+ this->starter_->read_no_data ();
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unable to start the reader\n")));
+ return;
+ }
+ for (CORBA::UShort iter_key = 1; iter_key < this->keys_ + 1; ++iter_key)
+ {
+ char key[7];
+ ReaderTest *new_key = new ReaderTest;
+ ACE_OS::sprintf (key, "KEY_%d", iter_key);
+ new_key->key = CORBA::string_dup(key);
+ for (CORBA::UShort iter = 1; iter < this->iterations_ + 1; ++iter)
+ {
+ new_key->iteration = iter;
+ this->writer_->write_one (*new_key, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"),
+ key, iter));
+ }
+ }
+ this->starter_->start_read ();
+ }
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_info_out_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (*this);
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Reader_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ this->starter_ = this->context_->get_connection_start_reader ();
+ this->ccm_activated_ = true;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Exception caught\n")));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: GET_CONNECTION_START_READER : Unknown exception caught\n")));
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Reader_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h
new file mode 100644
index 00000000000..8b1fc86efbe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/Sender/Reader_Test_Sender_exec.h
@@ -0,0 +1,98 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Reader_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_Reader_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Sender_exec_i &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic( ::DDS::Topic_ptr ,
+ const DDS::InconsistentTopicStatus & );
+ virtual
+ void on_requested_incompatible_qos( ::DDS::DataReader_ptr ,
+ const DDS::RequestedIncompatibleQosStatus & );
+ virtual
+ void on_sample_rejected( ::DDS::DataReader_ptr ,
+ const DDS::SampleRejectedStatus & );
+ virtual
+ void on_offered_deadline_missed( ::DDS::DataWriter_ptr ,
+ const DDS::OfferedDeadlineMissedStatus & );
+ virtual
+ void on_offered_incompatible_qos( ::DDS::DataWriter_ptr ,
+ const DDS::OfferedIncompatibleQosStatus & );
+ virtual
+ void on_unexpected_status( ::DDS::Entity_ptr ,
+ ::DDS::StatusKind );
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void start (void);
+
+ private:
+ ::Reader_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::ReaderTest::Writer_var writer_;
+ ReaderStarter_var starter_;
+
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ bool done_;
+ bool ccm_activated_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Reader_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp
new file mode 100644
index 00000000000..718e64b1b42
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/Plan.cdp
@@ -0,0 +1,388 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Reader_Test_Depl_1</label>
+ <UUID>Reader_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Reader_Test_ConnectorComponentImplementation">
+ <name>Reader_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Reader_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Reader_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Reader_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Reader_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Reader_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="Reader_Test_ConnectorComponentInstance">
+ <name>Reader_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Reader_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Library#Reader_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Reader_Test_ConnectorComponentInstance2">
+ <name>Reader_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Reader_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Library#Reader_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Reader_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>5</ulong>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>50</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Reader_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_out_connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Reader_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Reader_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>reader_starter</name>
+ <internalEndpoint>
+ <portName>start_reader</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>reader_start</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Reader_Test_Connector_ExecArtifact">
+ <name>Reader_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Reader_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Reader_Test_Connector_SvntArtifact">
+ <name>Reader_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Reader_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Reader_Test_Connector_StubArtifact">
+ <name>Reader_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Reader_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..8406e3003a3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Description
+XML QoS Profile
+
+The QoS configuration of the DDS entities in the generated example is
+loaded from this file.
+
+This file is used only when it is in the current working directory
+or when the enviroment variable
+NDDS_QOS_PROFILES is defined and points to this file.
+
+For more information about XML QoS Profiles see Chapter 15 in the
+RTI Data Distribution Service user manual.
+-->
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <!-- QoS Library containing the QoS profile used in the generated example.
+
+ A QoS library is a named set of QoS profiles.
+ -->
+ <qos_library name="Reader_Library">
+ <!-- QoS profile used to configure reliable communication between the DataWriter
+ and DataReader created in the example code.
+
+ A QoS profile groups a set of related QoS.
+ -->
+ <qos_profile name="Reader_Profile" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl
new file mode 100755
index 00000000000..997852c0618
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Reader/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 30 seconds to allow task to complete\n";
+sleep (30);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl
new file mode 100644
index 00000000000..dc4f13b6f93
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file SL_Disabled_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_DISABLED_BASE_IDL
+#define SL_DISABLED_BASE_IDL
+
+#pragma ndds typesupport "Base/SL_Disabled_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc
new file mode 100644
index 00000000000..87a021362d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Base/SL_Disabled_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SL_Disabled_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SL_Disabled_Base_stub
+ dynamicflags += SL_DISABLED_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=SL_DISABLED_BASE_STUB_Export \
+ -Wb,stub_export_include=SL_Disabled_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ SL_Disabled_Base.idl
+ }
+
+ opendds_ts_flags += --export=SL_DISABLED_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ SL_Disabled_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl
new file mode 100644
index 00000000000..4fb52425ceb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file SL_Disabled_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_DISABLED_CONNECTOR_IDL_
+#define SL_DISABLED_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/SL_Disabled_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/SL_Disabled_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module SL_Disabled
+{
+ connector SL_Disabled_Connector : ::CCM_DDS::TestTopic::DDS_State
+ {
+ };
+};
+
+#endif /* SL_Disabled_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc
new file mode 100644
index 00000000000..7b56d2276f5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Connector/SL_Disabled_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_Disabled_Base -l .. -o ../lib -u DDS SL_Disabled_Connector"
+
+project(DDS_SL_OC_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SL_DISABLED_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=SL_Disabled_Connector_stub_export.h \
+ -Wb,skel_export_macro=SL_DISABLED_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=SL_Disabled_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SL_DISABLED_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=SL_Disabled_Connector_svnt_export.h \
+ -Wb,conn_export_macro=SL_DISABLED_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=SL_Disabled_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_Disabled_Connector.idl
+ }
+}
+
+project(DDS_SL_OC_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_OC_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=SL_DISABLED_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=SL_Disabled_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ SL_Disabled_ConnectorE.idl
+ }
+}
+
+project(DDS_SL_OC_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_OC_Connector_lem_gen DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub
+ libs += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_OC_Connector_lem_stub
+ dynamicflags = SL_DISABLED_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ConnectorEC.h
+ SL_Disabled_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ConnectorEC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_OC_Connector_idl_gen DDS_SL_Disabled_Base_stub
+ libs += DDS_SL_Disabled_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_Disabled_Connector_stub
+ dynamicflags = SL_DISABLED_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ConnectorC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ConnectorC.h
+ SL_Disabled_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ConnectorC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub DDS_SL_Disabled_Base_stub
+ sharedname = DDS_SL_Disabled_Connector_exec
+ libs += DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub DDS_SL_Disabled_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_DISABLED_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_Connector_conn.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_Connector_conn.h
+ SL_Disabled_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_Disabled_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_exec DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_SL_Disabled_Connector_svnt
+ libs += DDS_SL_Disabled_Connector_stub \
+ DDS_SL_OC_Connector_lem_stub \
+ DDS_SL_Disabled_Base_stub \
+ DDS_SL_Disabled_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_DISABLED_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ConnectorS.cpp
+ SL_Disabled_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ConnectorS.h
+ SL_Disabled_Connector_svnt.h
+ SL_Disabled_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl
new file mode 100644
index 00000000000..69961d9a952
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/SL_Disabled_Connector.idl"
+
+module SL_Disabled
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_StateListen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc
new file mode 100644
index 00000000000..e6da1488efa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_SL_Disabled_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_OC_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ SL_Disabled_Receiver.idl
+ }
+}
+
+project(DDS_SL_Disabled_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_Disabled_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ SL_Disabled_ReceiverE.idl
+ }
+}
+
+project(DDS_SL_OC_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_Disabled_Receiver_lem_gen DDS_SL_Disabled_Receiver_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub
+ libs += Receiver_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ReceiverEC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_Disabled_Receiver_idl_gen DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub DDS_SL_OC_Connector_lem_gen
+ libs += DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ReceiverC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ReceiverC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_OC_Receiver_lem_stub DDS_SL_Disabled_Receiver_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_Disabled_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_OC_Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_Disabled_Receiver_exec DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt Receiver_exec DDS_SL_OC_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_ReceiverS.cpp
+ SL_Disabled_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_ReceiverS.h
+ SL_Disabled_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp
new file mode 100644
index 00000000000..671c45eb08e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.cpp
@@ -0,0 +1,231 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for statelistener: NOT_ENABLED
+
+#include "SL_Disabled_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+namespace CIAO_SL_Disabled_Receiver_Impl
+{
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ try
+ {
+ this->pulse_callback_.read_all();
+ }
+ catch (...)
+ {
+ // @todo
+ }
+ return 0;
+ }
+
+ //============================================================
+ // StateListener_exec_i
+ //============================================================
+ StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &no_operation)
+ :no_operation_(no_operation)
+ {
+ }
+
+ StateListener_exec_i::~StateListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::StateListener
+ void
+ StateListener_exec_i::on_creation (const ::TestTopic & /*datum*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->no_operation_ = false;
+ }
+
+ void
+ StateListener_exec_i::on_one_update (const ::TestTopic & /*datum*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->no_operation_ = false;
+ }
+
+ void
+ StateListener_exec_i::on_many_updates (const ::TestTopicSeq & /*data*/,
+ const ::CCM_DDS::ReadInfoSeq & /*infos*/)
+ {
+ this->no_operation_ = false;
+ }
+
+ void
+ StateListener_exec_i::on_deletion (const ::TestTopic & /*datum*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->no_operation_ = false;
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (10),
+ no_operation_ (true),
+ updater_data_ (false)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ TestTopicSeq_var TestTopic_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ try
+ {
+ this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out());
+ for (CORBA::ULong i = 0; i < readinfoseq->length(); ++i)
+ {
+ this->updater_data_ = true;
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for (CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ TestTopic_infos[i].key.in (),
+ TestTopic_infos[i].x));
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n")));
+ }
+ }
+
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return new StateListener_exec_i(this->no_operation_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::SL_Disabled::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data ();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::StateListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+
+ lc->mode (::CCM_DDS::NOT_ENABLED);
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(3, usec),
+ ACE_Time_Value(3, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (!this->no_operation_.value ()|| !this->updater_data_.value())
+ {
+
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Received an unexpected ")
+ ACE_TEXT (" operation. StateListener or Updater doesn't work in Receiver")
+ ));
+ }
+
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Haven't received an unexpected ")
+ ACE_TEXT (" oparation from StateListener in Receiver")
+ ));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_Disabled_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h
new file mode 100644
index 00000000000..8b5460e8057
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Receiver/SL_Disabled_Receiver_exec.h
@@ -0,0 +1,117 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "SL_Disabled_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_SL_Disabled_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // read_action_Generator
+ //============================================================
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ Receiver_exec_i &pulse_callback_;
+
+ };
+
+ //============================================================
+ // StateListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export StateListener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_StateListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ StateListener_exec_i (Atomic_Boolean &);
+ virtual ~StateListener_exec_i (void);
+
+ virtual void
+ on_creation (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_one_update (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_updates (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & infos);
+ virtual void
+ on_deletion (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ private:
+ Atomic_Boolean &no_operation_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void read_all (void);
+
+ private:
+ ::SL_Disabled::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::TestTopic::Reader_var reader_;
+ read_action_Generator * ticker_;
+
+ CORBA::ULong rate_;
+ Atomic_Boolean no_operation_;
+ Atomic_Boolean updater_data_;
+};
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_Disabled_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl
new file mode 100644
index 00000000000..c03faed763a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_SL_DISABLED_SENDER_IDL
+#define DDS_SL_DISABLED_SENDER_IDL
+
+#include "Connector/SL_Disabled_Connector.idl"
+
+module SL_Disabled
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Update test_topic_update;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc
new file mode 100644
index 00000000000..43f66775112
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_Disabled_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_SL_Disabled_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SL_OC_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_Disabled_Sender.idl
+ }
+}
+
+project(DDS_SL_Disabled_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_Disabled_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ SL_Disabled_SenderE.idl
+ }
+}
+
+project(DDS_SL_Disabled_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_Disabled_Sender_lem_gen DDS_SL_Disabled_Sender_stub DDS_SL_Disabled_Base_stub
+ libs += DDS_SL_Disabled_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_SenderEC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_SenderEC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_Disabled_Sender_idl_gen DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub
+ libs += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_SenderC.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_SenderC.inl
+ }
+}
+
+project(DDS_SL_Disabled_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_Disabled_Sender_lem_stub DDS_SL_Disabled_Sender_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_SL_Disabled_Base_stub DDS_SL_OC_Connector_lem_stub DDS_SL_Disabled_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_Sender_exec.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_Disabled_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_Disabled_Base_stub DDS_SL_Disabled_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_OC_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_SL_Disabled_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_Disabled_Connector_stub DDS_SL_Disabled_Connector_svnt DDS_SL_OC_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_Disabled_SenderS.cpp
+ SL_Disabled_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SL_Disabled_SenderS.h
+ SL_Disabled_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_Disabled_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp
new file mode 100644
index 00000000000..bf3bb99ef50
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.cpp
@@ -0,0 +1,358 @@
+// -*- C++ -*-
+// $Id$
+
+#include "SL_Disabled_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_SL_Disabled_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : test_nr_(UPDATE_CREATE),
+ test_ok_(true)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ CORBA::Boolean
+ Sender_exec_i::create_one(void)
+ {
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ if (! ::CORBA::is_nil (this->updater_) )
+ {
+ this->updater_->create_one(i);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_Disabled: create_one with instance key <%C>\n"),
+ i.key.in()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil")));
+ result = false;
+ }
+ }
+ catch (const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_one()
+ {
+ //update already created instance with handle nil
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ this->updater_->update_one(i, DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_one()
+ {
+ //delete registerd instance with DDS::HANDLE_NIL
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::create_many()
+ {
+ //create many with no exception
+ CORBA::Boolean result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->create_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n")));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_many()
+ {
+ CORBA::Boolean result = false;
+ try
+ {
+ this->updater_->update_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_many()
+ {
+ CORBA::Boolean result = false;
+ result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->delete_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+
+ return result;
+ }
+
+ void
+ Sender_exec_i::add_instances_of_topic ()
+ {
+ CORBA::UShort total = 3;
+ this->topic_seq_one_.length (total);
+ //sequence for tests with .._one
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_one_[i-1] = new_key;
+ }
+ //sequence for tests with .._many
+ this->topic_seq_many_.length (total);
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "many_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_many_[i-1] = new_key;
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if(this->test_ok_.value())
+ {
+ switch (this->test_nr_)
+ {
+ case UPDATE_CREATE:
+ this->test_ok_ = this->create_one();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_ONE;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ break;
+ case UPDATE_ONE:
+ this->test_ok_ = this->update_one();
+ this->test_nr_ = DELETE_ONE;
+ break;
+ case DELETE_ONE:
+ this->test_ok_ = this->delete_one();
+ this->test_nr_ = CREATE_MANY;
+ case CREATE_MANY:
+ this->test_ok_ = this->create_many();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_MANY;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ this->test_nr_ = UPDATE_MANY;
+ break;
+ case UPDATE_MANY:
+ this->test_ok_ = this->update_many();
+ this->test_nr_ = DELETE_MANY;
+ break;
+ case DELETE_MANY:
+ this->test_ok_ = this->delete_many();
+ this->test_nr_ = END_TEST;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 1L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::SL_Disabled::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->updater_= this->context_->get_connection_test_topic_update_data ();
+ }
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->add_instances_of_topic ();
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_Disabled_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h
new file mode 100644
index 00000000000..b5d37e7a059
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/Sender/SL_Disabled_Sender_exec.h
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "SL_Disabled_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_SL_Disabled_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ enum UPDATER_TEST {
+ UPDATE_CREATE,
+ UPDATE_ONE,
+ DELETE_ONE,
+ CREATE_MANY,
+ UPDATE_MANY,
+ DELETE_MANY,
+ END_TEST
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void tick (void);
+
+ private:
+ void start (void);
+ void stop (void);
+ void add_instances_of_topic (void);
+ CORBA::Boolean create_one(void);
+ CORBA::Boolean update_one(void);
+ CORBA::Boolean delete_one(void);
+ CORBA::Boolean create_many(void);
+ CORBA::Boolean update_many(void);
+ CORBA::Boolean delete_many(void);
+
+ pulse_Generator * ticker_;
+ ::SL_Disabled::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Updater_var updater_;
+ UPDATER_TEST test_nr_;
+ Atomic_Boolean test_ok_;
+ TestTopicSeq topic_seq_one_;
+ TestTopicSeq topic_seq_many_;
+ };
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_Disabled_Sender_Impl (void);
+
+
+
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp
new file mode 100644
index 00000000000..9a086079ff7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/Plan.cdp
@@ -0,0 +1,365 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SL_Disabled_Depl_1</label>
+ <UUID>SL_Disabled_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SL_Disabled_ConnectorComponentImplementation">
+ <name>SL_Disabled_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="SL_Disabled_Connector_ExecArtifact" />
+ <artifact xmi:idref="SL_Disabled_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_SL_Disabled_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_SL_Disabled_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_Disabled_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_Disabled_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_Disabled_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="SL_Disabled_ConnectorComponentInstance">
+ <name>SL_Disabled_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_Disabled_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SL_Disabled_ConnectorComponentInstance2">
+ <name>SL_Disabled_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_Disabled_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_Disabled_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_statelistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_Disabled_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_Disabled_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_Disabled_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_Disabled_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="SL_Disabled_Connector_ExecArtifact">
+ <name>SL_Disabled_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_Disabled_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="SL_Disabled_Connector_SvntArtifact">
+ <name>SL_Disabled_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_Disabled_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="SL_Disabled_Connector_StubArtifact">
+ <name>SL_Disabled_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_Disabled_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl
new file mode 100755
index 00000000000..66cc403a1fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLDisabled/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl
new file mode 100644
index 00000000000..a1ef6e34f42
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file SL_ManyByMany_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_MANYBYMANY_BASE_IDL
+#define SL_MANYBYMANY_BASE_IDL
+
+#pragma ndds typesupport "Base/SL_ManyByMany_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc
new file mode 100644
index 00000000000..0730e183bb9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Base/SL_ManyByMany_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SL_ManyByMany_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SL_ManyByMany_Base_stub
+ dynamicflags += SL_MANYBYMANY_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=SL_MANYBYMANY_BASE_STUB_Export \
+ -Wb,stub_export_include=SL_ManyByMany_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ SL_ManyByMany_Base.idl
+ }
+
+ opendds_ts_flags += --export=SL_MANYBYMANY_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ SL_ManyByMany_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl
new file mode 100644
index 00000000000..ea597b5c5c1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file SL_ManyByMany_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_MANYBYMANY_CONNECTOR_IDL_
+#define SL_MANYBYMANY_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/SL_ManyByMany_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/SL_ManyByMany_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module SL_ManyByMany
+{
+ connector SL_ManyByMany_Connector : ::CCM_DDS::TestTopic::DDS_State
+ {
+ };
+};
+
+#endif /* SL_ManyByMany_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc
new file mode 100644
index 00000000000..77df887a47d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Connector/SL_ManyByMany_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_ManyByMany_Base -l .. -o ../lib -u DDS SL_ManyByMany_Connector"
+
+project(DDS_SL_MBM_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SL_MANYBYMANY_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=SL_ManyByMany_Connector_stub_export.h \
+ -Wb,skel_export_macro=SL_MANYBYMANY_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=SL_ManyByMany_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SL_MANYBYMANY_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=SL_ManyByMany_Connector_svnt_export.h \
+ -Wb,conn_export_macro=SL_MANYBYMANY_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=SL_ManyByMany_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_ManyByMany_Connector.idl
+ }
+}
+
+project(DDS_SL_MBM_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_MBM_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=SL_MANYBYMANY_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=SL_ManyByMany_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ SL_ManyByMany_ConnectorE.idl
+ }
+}
+
+project(DDS_SL_MBM_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_MBM_Connector_lem_gen DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub
+ libs += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_MBM_Connector_lem_stub
+ dynamicflags = SL_MANYBYMANY_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ConnectorEC.h
+ SL_ManyByMany_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ConnectorEC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_MBM_Connector_idl_gen DDS_SL_ManyByMany_Base_stub
+ libs += DDS_SL_ManyByMany_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_ManyByMany_Connector_stub
+ dynamicflags = SL_MANYBYMANY_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ConnectorC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ConnectorC.h
+ SL_ManyByMany_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ConnectorC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub DDS_SL_ManyByMany_Base_stub
+ sharedname = DDS_SL_ManyByMany_Connector_exec
+ libs += DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub DDS_SL_ManyByMany_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_MANYBYMANY_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_Connector_conn.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_Connector_conn.h
+ SL_ManyByMany_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_ManyByMany_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_exec DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_SL_ManyByMany_Connector_svnt
+ libs += DDS_SL_ManyByMany_Connector_stub \
+ DDS_SL_MBM_Connector_lem_stub \
+ DDS_SL_ManyByMany_Base_stub \
+ DDS_SL_ManyByMany_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_MANYBYMANY_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ConnectorS.cpp
+ SL_ManyByMany_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ConnectorS.h
+ SL_ManyByMany_Connector_svnt.h
+ SL_ManyByMany_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl
new file mode 100644
index 00000000000..509db69e052
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/SL_ManyByMany_Connector.idl"
+
+module SL_ManyByMany
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_StateListen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc
new file mode 100644
index 00000000000..88db59ce7dd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_SL_ManyByMany_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_MBM_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ SL_ManyByMany_Receiver.idl
+ }
+}
+
+project(DDS_SL_ManyByMany_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_ManyByMany_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ SL_ManyByMany_ReceiverE.idl
+ }
+}
+
+project(DDS_SL_MBM_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Receiver_lem_gen DDS_SL_ManyByMany_Receiver_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub
+ libs += Receiver_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ReceiverEC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Receiver_idl_gen DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub DDS_SL_MBM_Connector_lem_gen
+ libs += DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ReceiverC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ReceiverC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_MBM_Receiver_lem_stub DDS_SL_ManyByMany_Receiver_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_ManyByMany_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_MBM_Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_ManyByMany_Receiver_exec DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt Receiver_exec DDS_SL_MBM_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_ReceiverS.cpp
+ SL_ManyByMany_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_ReceiverS.h
+ SL_ManyByMany_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp
new file mode 100644
index 00000000000..de63a9a54e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.cpp
@@ -0,0 +1,373 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for statelistener: MANY_BY_MANY. Expect the operations on_creation, on_deletion, on_many_updates
+
+#include "SL_ManyByMany_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+namespace CIAO_SL_ManyByMany_Receiver_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ read_action_Generator::read_action_Generator (Receiver_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ read_action_Generator::~read_action_Generator ()
+ {
+ }
+
+ int
+ read_action_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ try
+ {
+ this->pulse_callback_.read_all();
+ }
+ catch (...)
+ {
+ // @todo
+ }
+ return 0;
+ }
+ //============================================================
+ // Facet Executor Implementation Class: StateListener_exec_i
+ //============================================================
+ StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &no_operation,
+ Atomic_Boolean &on_creation,
+ Atomic_Boolean &on_many_update,
+ Atomic_Boolean &on_deletion,
+ Atomic_Boolean &create_data,
+ Atomic_Boolean &update_data)
+ :no_operation_(no_operation),
+ on_creation_(on_creation),
+ on_many_update_(on_many_update),
+ on_deletion_(on_deletion),
+ create_data_(create_data),
+ update_data_(update_data)
+ {
+ }
+
+ StateListener_exec_i::~StateListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::StateListener
+ void
+ StateListener_exec_i::on_creation (const ::TestTopic & data,
+ const ::CCM_DDS::ReadInfo & readinfo)
+ {
+ this->on_creation_ = true;
+ ACE_Time_Value tv;
+ tv <<= readinfo.source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Statelistener:on_creation : ")
+ ACE_TEXT ("Received datum for <%C> at %u\n"),
+ data.key.in (),
+ data.x));
+ //one of the data must have the key 'KEY_1' with x == 1
+ if((strcmp(data.key.in() ,"KEY_1")==0) && (data.x == 1L))
+ {
+ this->create_data_ = true;
+ }
+ }
+
+ void
+ StateListener_exec_i::on_one_update (const ::TestTopic & /*datum*/,
+ const ::CCM_DDS::ReadInfo & /*info*/)
+ {
+ this->no_operation_ = false;
+ }
+
+ void
+ StateListener_exec_i::on_many_updates (const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & readinfoseq)
+ {
+ this->on_many_update_ = true;
+ for(CORBA::ULong i = 0; i < readinfoseq.length(); ++i)
+ {
+ if( readinfoseq[i].instance_status != CCM_DDS::INSTANCE_UPDATED)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.instance_status ")
+ ACE_TEXT ("'CCM_DDS::INSTANCE_UPDATED'")
+ ACE_TEXT (" with operation 'on_many_updates' from StateListener in Receiver\n")
+ ));
+
+ }
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for(CORBA::ULong i = 0; i < data.length(); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ data[i].key.in (),
+ data[i].x));
+ //one of the data must have the key 'KEY_1' with x == 2
+ if((strcmp(data[i].key,"KEY_1")==0 ) && (data[i].x == 2L))
+ {
+ this->update_data_ = true;
+ }
+ }
+ }
+
+ void
+ StateListener_exec_i::on_deletion (const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ if(info.instance_status != CCM_DDS::INSTANCE_DELETED)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.instance_status ")
+ ACE_TEXT ("'CCM_DDS::INSTANCE_DELETED'")
+ ACE_TEXT (" with operation 'on_deletion' from StateListener in Receiver\n")
+ ));
+
+ }
+ if((!datum.key.in()==0) && (info.instance_status == CCM_DDS::INSTANCE_DELETED))
+ {
+ this->on_deletion_ = true;
+ }
+ }
+ //============================================================
+ // Facet Executor Implementation Class: PortStatusListener_exec_i
+ //============================================================
+ PortStatusListener_exec_i::PortStatusListener_exec_i ()
+ {
+ }
+
+ PortStatusListener_exec_i::~PortStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::PortStatusListener
+ void
+ PortStatusListener_exec_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::RequestedDeadlineMissedStatus & /* status */)
+ {
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i ();
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : rate_ (10),
+ no_operation_(true),
+ on_creation_(false),
+ on_many_update_(false),
+ on_deletion_(false),
+ create_data_(false),
+ update_data_(false),
+ reader_data_(false)
+ {
+ this->ticker_ = new read_action_Generator (*this);
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Receiver_exec_i::read_all (void)
+ {
+ if (::CORBA::is_nil (this->reader_.in ()))
+ {
+ return;
+ }
+ TestTopicSeq_var TestTopic_infos;
+ ::CCM_DDS::ReadInfoSeq_var readinfoseq;
+ try
+ {
+ this->reader_->read_all(TestTopic_infos.out(), readinfoseq.out());
+ for(CORBA::ULong i = 0; i < readinfoseq->length(); ++i)
+ {
+ ACE_Time_Value tv;
+ tv <<= readinfoseq[i].source_timestamp;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL ReadInfo ")
+ ACE_TEXT ("-> UTC date =%#T\n"),
+ &tv));
+ }
+ for(CORBA::ULong i = 0; i < TestTopic_infos->length(); ++i)
+ {
+ this->reader_data_= true;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("READ_ALL keyed test info : ")
+ ACE_TEXT ("Number <%d> : received TestTopic_info for <%C> at %u\n"),
+ i,
+ TestTopic_infos[i].key.in (),
+ TestTopic_infos[i].x));
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("internal error or no data\n")));
+ }
+ }
+
+ // Component attributes.
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new PortStatuslistener\n")));
+ return new PortStatusListener_exec_i ();
+ }
+
+ ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return new StateListener_exec_i(this->no_operation_,
+ this->on_creation_,
+ this->on_many_update_,
+ this->on_deletion_,
+ this->create_data_,
+ this->update_data_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::SL_ManyByMany::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ this->reader_ = this->context_->get_connection_info_out_data();
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::StateListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+
+ lc->mode (::CCM_DDS::MANY_BY_MANY);
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value(3, usec),
+ ACE_Time_Value(3, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to schedule Timer\n"));
+ }
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ delete this->ticker_;
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CORBA::Boolean no_error = true;
+ if(!this->no_operation_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive an unexpected ")
+ ACE_TEXT (" operation 'on_one_update' from StateListener in Receiver\n")
+ ));
+ }
+ if(!this->on_creation_ .value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" operation 'on_creation' from StateListener in Receiver\n")
+ ));
+ }
+ if(!this->create_data_ .value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" data with 'on_creation' from StateListener in Receiver\n")
+ ));
+ }
+ if(!this->on_many_update_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR:didn't receive the expected ")
+ ACE_TEXT (" operation 'on_many_updates' from StateListener in Receiver\n")
+ ));
+ }
+ if(!this->update_data_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR:didn't receive the expected ")
+ ACE_TEXT (" data with 'on_many_updates' from StateListener in Receiver\n")
+ ));
+ }
+ if(!this->on_deletion_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" operation 'on_deletion' from StateListener in Receiver\n")
+ ));
+ }
+ if(this->reader_data_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did receive unexpected ")
+ ACE_TEXT (" data on the Reader in combination with StateListener in Receiver\n")
+ ));
+ }
+ if(no_error==true)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK : Have received the expected ")
+ ACE_TEXT (" operations for MANY_BY_MANY from StateListener in Receiver\n")
+ ));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_ManyByMany_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h
new file mode 100644
index 00000000000..b74cb60eb0f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Receiver/SL_ManyByMany_Receiver_exec.h
@@ -0,0 +1,138 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "SL_ManyByMany_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_SL_ManyByMany_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Receiver_exec_i;
+ class read_action_Generator
+ : public ACE_Event_Handler
+ {
+ public:
+ read_action_Generator (Receiver_exec_i &callback);
+
+ ~read_action_Generator ();
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ private:
+ /// Maintains a handle that actually process the event
+ Receiver_exec_i &pulse_callback_;
+
+ };
+ class RECEIVER_EXEC_Export PortStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_PortStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ PortStatusListener_exec_i (void);
+ virtual ~PortStatusListener_exec_i (void);
+
+ virtual void
+ on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status);
+
+ virtual void
+ on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status);
+ };
+ class RECEIVER_EXEC_Export StateListener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_StateListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ StateListener_exec_i (Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &,
+ Atomic_Boolean &, Atomic_Boolean &, Atomic_Boolean &);
+ virtual ~StateListener_exec_i (void);
+
+ virtual void
+ on_creation (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_one_update (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_updates (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & infos);
+ virtual void
+ on_deletion (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ private:
+ Atomic_Boolean &no_operation_;
+ Atomic_Boolean &on_creation_;
+ Atomic_Boolean &on_many_update_;
+ Atomic_Boolean &on_deletion_;
+ Atomic_Boolean &create_data_;
+ Atomic_Boolean &update_data_;
+
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void read_all(void);
+
+ private:
+ ::SL_ManyByMany::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::TestTopic::Reader_var reader_;
+ read_action_Generator * ticker_;
+ CORBA::ULong rate_;
+ Atomic_Boolean no_operation_;
+ Atomic_Boolean on_creation_;
+ Atomic_Boolean on_many_update_;
+ Atomic_Boolean on_deletion_;
+ Atomic_Boolean create_data_;
+ Atomic_Boolean update_data_;
+ Atomic_Boolean reader_data_;
+
+};
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_ManyByMany_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl
new file mode 100644
index 00000000000..59d0fec7676
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_SL_MANYBYMANY_SENDER_IDL
+#define DDS_SL_MANYBYMANY_SENDER_IDL
+
+#include "Connector/SL_ManyByMany_Connector.idl"
+
+module SL_ManyByMany
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Update test_topic_update;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc
new file mode 100644
index 00000000000..6ca574dfe16
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_ManyByMany_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_SL_ManyByMany_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SL_MBM_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_ManyByMany_Sender.idl
+ }
+}
+
+project(DDS_SL_ManyByMany_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_ManyByMany_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ SL_ManyByMany_SenderE.idl
+ }
+}
+
+project(DDS_SL_ManyByMany_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Sender_lem_gen DDS_SL_ManyByMany_Sender_stub DDS_SL_ManyByMany_Base_stub
+ libs += DDS_SL_ManyByMany_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_SenderEC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_SenderEC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Sender_idl_gen DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub
+ libs += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_SenderC.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_SenderC.inl
+ }
+}
+
+project(DDS_SL_ManyByMany_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Sender_lem_stub DDS_SL_ManyByMany_Sender_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_SL_ManyByMany_Base_stub DDS_SL_MBM_Connector_lem_stub DDS_SL_ManyByMany_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_Sender_exec.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_ManyByMany_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_ManyByMany_Base_stub DDS_SL_ManyByMany_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_MBM_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_SL_ManyByMany_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_ManyByMany_Connector_stub DDS_SL_ManyByMany_Connector_svnt DDS_SL_MBM_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_ManyByMany_SenderS.cpp
+ SL_ManyByMany_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SL_ManyByMany_SenderS.h
+ SL_ManyByMany_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_ManyByMany_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp
new file mode 100644
index 00000000000..662e1b1326b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.cpp
@@ -0,0 +1,363 @@
+// -*- C++ -*-
+// $Id$
+
+#include "SL_ManyByMany_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_SL_ManyByMany_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : test_nr_(UPDATE_CREATE),
+ test_ok_(true)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ CORBA::Boolean
+ Sender_exec_i::create_one(void)
+ {
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ if (! ::CORBA::is_nil (this->updater_) )
+ {
+ this->updater_->create_one(i);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_ManyByMany: create_one with instance key <%C>\n"),
+ i.key.in()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil")));
+ result = false;
+ }
+ }
+ catch (const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_one()
+ {
+ //update already created instance with handle nil
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ i.x++;
+ this->updater_->update_one(i, DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_one()
+ {
+ //delete registerd instance with DDS::HANDLE_NIL
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::create_many()
+ {
+ //create many with no exception
+ CORBA::Boolean result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->create_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n")));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_many()
+ {
+ CORBA::Boolean result = false;
+ try
+ {
+ for(CORBA::ULong i = 0; i < this->topic_seq_many_.length(); i++)
+ {
+ this->topic_seq_many_[i].x= i+ 10;
+ }
+ this->updater_->update_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("with update_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_many()
+ {
+ CORBA::Boolean result = false;
+ result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->delete_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+
+ return result;
+ }
+
+ void
+ Sender_exec_i::add_instances_of_topic ()
+ {
+ CORBA::UShort total = 3;
+ this->topic_seq_one_.length (total);
+ //sequence for tests with .._one
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_one_[i-1] = new_key;
+ }
+ //sequence for tests with .._many
+ this->topic_seq_many_.length (total);
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "many_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_many_[i-1] = new_key;
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if(this->test_ok_.value())
+ {
+ switch (this->test_nr_)
+ {
+ case UPDATE_CREATE:
+ this->test_ok_ = this->create_one();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_ONE;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ break;
+ case UPDATE_ONE:
+ this->test_ok_ = this->update_one();
+ this->test_nr_ = DELETE_ONE;
+ break;
+ case DELETE_ONE:
+ this->test_ok_ = this->delete_one();
+ this->test_nr_ = CREATE_MANY;
+ case CREATE_MANY:
+ this->test_ok_ = this->create_many();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_MANY;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ this->test_nr_ = UPDATE_MANY;
+ break;
+ case UPDATE_MANY:
+ this->test_ok_ = this->update_many();
+ this->test_nr_ = DELETE_MANY;
+ break;
+ case DELETE_MANY:
+ this->test_ok_ = this->delete_many();
+ this->test_nr_ = END_TEST;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 3L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::SL_ManyByMany::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->updater_= this->context_->get_connection_test_topic_update_data ();
+ }
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->add_instances_of_topic ();
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_ManyByMany_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h
new file mode 100644
index 00000000000..b53cbe1b3bc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/Sender/SL_ManyByMany_Sender_exec.h
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "SL_ManyByMany_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_SL_ManyByMany_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ enum UPDATER_TEST {
+ UPDATE_CREATE,
+ UPDATE_ONE,
+ DELETE_ONE,
+ CREATE_MANY,
+ UPDATE_MANY,
+ DELETE_MANY,
+ END_TEST
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void tick (void);
+
+ private:
+ void start (void);
+ void stop (void);
+ void add_instances_of_topic (void);
+ CORBA::Boolean create_one(void);
+ CORBA::Boolean update_one(void);
+ CORBA::Boolean delete_one(void);
+ CORBA::Boolean create_many(void);
+ CORBA::Boolean update_many(void);
+ CORBA::Boolean delete_many(void);
+
+ pulse_Generator * ticker_;
+ ::SL_ManyByMany::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Updater_var updater_;
+ UPDATER_TEST test_nr_;
+ Atomic_Boolean test_ok_;
+ TestTopicSeq topic_seq_one_;
+ TestTopicSeq topic_seq_many_;
+ };
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_ManyByMany_Sender_Impl (void);
+
+
+
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp
new file mode 100644
index 00000000000..76d9ea2f269
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/Plan.cdp
@@ -0,0 +1,365 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SL_ManyByMany_Depl_1</label>
+ <UUID>SL_ManyByMany_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SL_ManyByMany_ConnectorComponentImplementation">
+ <name>SL_ManyByMany_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="SL_ManyByMany_Connector_ExecArtifact" />
+ <artifact xmi:idref="SL_ManyByMany_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_SL_ManyByMany_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_SL_ManyByMany_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_ManyByMany_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_ManyByMany_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_ManyByMany_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="SL_ManyByMany_ConnectorComponentInstance">
+ <name>SL_ManyByMany_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_ManyByMany_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SL_ManyByMany_ConnectorComponentInstance2">
+ <name>SL_ManyByMany_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_ManyByMany_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_ManyByMany_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_statelistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_ManyByMany_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_ManyByMany_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_ManyByMany_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_ManyByMany_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="SL_ManyByMany_Connector_ExecArtifact">
+ <name>SL_ManyByMany_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_ManyByMany_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="SL_ManyByMany_Connector_SvntArtifact">
+ <name>SL_ManyByMany_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_ManyByMany_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="SL_ManyByMany_Connector_StubArtifact">
+ <name>SL_ManyByMany_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_ManyByMany_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl
new file mode 100755
index 00000000000..66cc403a1fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLManyByMany/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl
new file mode 100644
index 00000000000..eae516f7136
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file SL_OneByOne_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_ONEBYONE_BASE_IDL
+#define SL_ONEBYONE_BASE_IDL
+
+#pragma ndds typesupport "Base/SL_OneByOne_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc
new file mode 100644
index 00000000000..96f81db664a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Base/SL_OneByOne_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SL_OneByOne_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SL_OneByOne_Base_stub
+ dynamicflags += SL_ONEBYONE_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=SL_ONEBYONE_BASE_STUB_Export \
+ -Wb,stub_export_include=SL_OneByOne_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ SL_OneByOne_Base.idl
+ }
+
+ opendds_ts_flags += --export=SL_ONEBYONE_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ SL_OneByOne_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc
new file mode 100644
index 00000000000..381ffe38c3e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SLOneByOne_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_OneByOne_Base -l .. -o ../lib -u DDS SL_OneByOne_Connector"
+
+project(DDS_SL_OBO_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SL_ONEBYONE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=SL_OneByOne_Connector_stub_export.h \
+ -Wb,skel_export_macro=SL_ONEBYONE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=SL_OneByOne_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SL_ONEBYONE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=SL_OneByOne_Connector_svnt_export.h \
+ -Wb,conn_export_macro=SL_ONEBYONE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=SL_OneByOne_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_OneByOne_Connector.idl
+ }
+}
+
+project(DDS_SL_OBO_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_OBO_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=SL_ONEBYONE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=SL_OneByOne_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ SL_OneByOne_ConnectorE.idl
+ }
+}
+
+project(DDS_SL_OBO_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_OBO_Connector_lem_gen DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub
+ libs += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_OBO_Connector_lem_stub
+ dynamicflags = SL_ONEBYONE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ConnectorEC.h
+ SL_OneByOne_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ConnectorEC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_OBO_Connector_idl_gen DDS_SL_OneByOne_Base_stub
+ libs += DDS_SL_OneByOne_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SL_OneByOne_Connector_stub
+ dynamicflags = SL_ONEBYONE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ConnectorC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ConnectorC.h
+ SL_OneByOne_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ConnectorC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub DDS_SL_OneByOne_Base_stub
+ sharedname = DDS_SL_OneByOne_Connector_exec
+ libs += DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub DDS_SL_OneByOne_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_ONEBYONE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_Connector_conn.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_Connector_conn.h
+ SL_OneByOne_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_OneByOne_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_exec DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_SL_OneByOne_Connector_svnt
+ libs += DDS_SL_OneByOne_Connector_stub \
+ DDS_SL_OBO_Connector_lem_stub \
+ DDS_SL_OneByOne_Base_stub \
+ DDS_SL_OneByOne_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SL_ONEBYONE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ConnectorS.cpp
+ SL_OneByOne_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ConnectorS.h
+ SL_OneByOne_Connector_svnt.h
+ SL_OneByOne_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl
new file mode 100644
index 00000000000..d522a746ef6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Connector/SL_OneByOne_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file SL_OneByOne_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef SL_ONEBYONE_CONNECTOR_IDL_
+#define SL_ONEBYONE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/SL_OneByOne_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/SL_OneByOne_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module SL_OneByOne
+{
+ connector SL_OneByOne_Connector : ::CCM_DDS::TestTopic::DDS_State
+ {
+ };
+};
+
+#endif /* SL_OneByOne_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl
new file mode 100644
index 00000000000..88f9e6bec6a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/SL_OneByOne_Connector.idl"
+
+module SL_OneByOne
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_StateListen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc
new file mode 100644
index 00000000000..4ff2ea80094
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_SL_OneByOne_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SL_OBO_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ SL_OneByOne_Receiver.idl
+ }
+}
+
+project(DDS_SL_OneByOne_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_OneByOne_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ SL_OneByOne_ReceiverE.idl
+ }
+}
+
+project(DDS_SL_OBO_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_OneByOne_Receiver_lem_gen DDS_SL_OneByOne_Receiver_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub
+ libs += Receiver_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ReceiverEC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_OneByOne_Receiver_idl_gen DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub DDS_SL_OBO_Connector_lem_gen
+ libs += DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ReceiverC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ReceiverC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_OBO_Receiver_lem_stub DDS_SL_OneByOne_Receiver_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_OneByOne_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_OBO_Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OneByOne_Receiver_exec DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt Receiver_exec DDS_SL_OBO_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_ReceiverS.cpp
+ SL_OneByOne_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_ReceiverS.h
+ SL_OneByOne_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp
new file mode 100644
index 00000000000..25fc7a95945
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.cpp
@@ -0,0 +1,278 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Test for statelistener: ONE_BY_ONE. Expect the operations on_creation, on_deletion, on_one_update
+
+#include "SL_OneByOne_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_SL_OneByOne_Receiver_Impl
+{
+ //============================================================
+ // StateListener_exec_i
+ //============================================================
+ StateListener_exec_i::StateListener_exec_i (Atomic_Boolean &on_many_updates,
+ Atomic_Boolean &on_creation,
+ Atomic_Boolean &on_one_update,
+ Atomic_Boolean &on_deletion,
+ Atomic_ThreadId &thread_id)
+ : on_many_updates_ (on_many_updates),
+ on_creation_ (on_creation),
+ on_one_update_ (on_one_update),
+ on_deletion_ (on_deletion),
+ thread_id_ (thread_id)
+ {
+ }
+
+ StateListener_exec_i::~StateListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::StateListener
+ void
+ StateListener_exec_i::on_creation (const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ if (!datum.key.in() == 0 && info.instance_status == CCM_DDS::INSTANCE_CREATED)
+ {
+ this->on_creation_ = true;
+ }
+ ACE_DEBUG ((LM_DEBUG, "StateListener_exec_i::on_creation - "
+ "Received sample: key <%C> - iteration <%d>\n",
+ datum.key.in (),
+ datum.x));
+ }
+
+ void
+ StateListener_exec_i::on_one_update (const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ if (info.instance_status != CCM_DDS::INSTANCE_UPDATED)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.status ")
+ ACE_TEXT ("'CCM_DDS::INSTANCE_UPDATED'")
+ ACE_TEXT (" with operation 'on_one_update' from StateListener in Receiver\n")
+ ));
+
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "StateListener_exec_i::on_one_update - "
+ "Received sample: key <%C> - iteration <%d>\n",
+ datum.key.in (),
+ datum.x));
+
+ if (!datum.key.in() == 0 && info.instance_status == CCM_DDS::INSTANCE_UPDATED)
+ {
+ this->on_one_update_ = true;
+ }
+ }
+
+ void
+ StateListener_exec_i::on_many_updates (const ::TestTopicSeq & /*data*/,
+ const ::CCM_DDS::ReadInfoSeq & /*infos*/)
+ {
+ this->on_many_updates_ = true;
+ }
+
+ void
+ StateListener_exec_i::on_deletion (const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ if (info.instance_status != CCM_DDS::INSTANCE_DELETED)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected info.status ")
+ ACE_TEXT ("'CCM_DDS::INSTANCE_DELETED' ")
+ ACE_TEXT ("with operation 'on_deletion' from StateListener in Receiver\n")
+ ));
+
+ }
+ if (!datum.key.in() == 0 && info.instance_status == CCM_DDS::INSTANCE_DELETED)
+ {
+ this->on_deletion_ = true;
+ }
+ ACE_DEBUG ((LM_DEBUG, "StateListener_exec_i::on_deletion - "
+ "Received sample: key <%C> - iteration <%d>\n",
+ datum.key.in (),
+ datum.x));
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : on_many_updates_ (false),
+ updater_data_ (false),
+ on_creation_ (false),
+ on_one_update_ (false),
+ on_deletion_ (false),
+ thread_id_listener_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Component attributes.
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return new StateListener_exec_i (this->on_many_updates_,
+ this->on_creation_,
+ this->on_one_update_,
+ this->on_deletion_,
+ this->thread_id_listener_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::SL_OneByOne::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::StateListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CORBA::Boolean no_error = true;
+ if (this->on_many_updates_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Received unexpected ")
+ ACE_TEXT ("operation 'on_many_updates' from StateListener in Receiver\n")
+ ));
+ }
+
+ if (!this->on_creation_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" operation 'on_creation' from StateListener in Receiver\n")
+ ));
+ }
+ if (!this->on_one_update_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" operation 'on_one_update' from StateListener in Receiver\n")
+ ));
+ }
+ if (!this->on_deletion_.value ())
+ {
+ no_error = false;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: didn't receive the expected ")
+ ACE_TEXT (" operation 'on_deletion' from StateListener in Receiver\n")
+ ));
+ }
+
+ if (no_error)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK: Have received the expected ")
+ ACE_TEXT (" operations for ONE_BY_ONE from StateListener in Receiver\n")
+ ));
+ }
+
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for StatusListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK: "
+ "Thread switch for StatusListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread switch for StatusListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: StatusListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "OK: StatusListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_OneByOne_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h
new file mode 100644
index 00000000000..4eb7a3d13d2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Receiver/SL_OneByOne_Receiver_exec.h
@@ -0,0 +1,108 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "SL_OneByOne_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_SL_OneByOne_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean> Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // StateListener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export StateListener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_StateListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ StateListener_exec_i (Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_Boolean &,
+ Atomic_ThreadId &);
+ virtual ~StateListener_exec_i (void);
+
+ virtual void
+ on_creation (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_one_update (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_updates (
+ const ::TestTopicSeq & data,
+ const ::CCM_DDS::ReadInfoSeq & infos);
+ virtual void
+ on_deletion (
+ const ::TestTopic & datum,
+ const ::CCM_DDS::ReadInfo & info);
+ private:
+ Atomic_Boolean &on_many_updates_;
+ Atomic_Boolean &on_creation_;
+ Atomic_Boolean &on_one_update_;
+ Atomic_Boolean &on_deletion_;
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_StateListener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::SL_OneByOne::CCM_Receiver_Context_var context_;
+
+ Atomic_Boolean on_many_updates_;
+ Atomic_Boolean updater_data_;
+ Atomic_Boolean on_creation_;
+ Atomic_Boolean on_one_update_;
+ Atomic_Boolean on_deletion_;
+ Atomic_ThreadId thread_id_listener_;
+ };
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_OneByOne_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl
new file mode 100644
index 00000000000..3408f28190a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_SL_ONEBYONE_SENDER_IDL
+#define DDS_SL_ONEBYONE_SENDER_IDL
+
+#include "Connector/SL_OneByOne_Connector.idl"
+
+module SL_OneByOne
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Update test_topic_update;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc
new file mode 100644
index 00000000000..347d73bca4e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SL_OneByOne_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_SL_OneByOne_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SL_OBO_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ SL_OneByOne_Sender.idl
+ }
+}
+
+project(DDS_SL_OneByOne_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SL_OneByOne_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ SL_OneByOne_SenderE.idl
+ }
+}
+
+project(DDS_SL_OneByOne_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SL_OneByOne_Sender_lem_gen DDS_SL_OneByOne_Sender_stub DDS_SL_OneByOne_Base_stub
+ libs += DDS_SL_OneByOne_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_SenderEC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_SenderEC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SL_OneByOne_Sender_idl_gen DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub
+ libs += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_SenderC.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_SenderC.inl
+ }
+}
+
+project(DDS_SL_OneByOne_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SL_OneByOne_Sender_lem_stub DDS_SL_OneByOne_Sender_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_SL_OneByOne_Base_stub DDS_SL_OBO_Connector_lem_stub DDS_SL_OneByOne_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_Sender_exec.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SL_OneByOne_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SL_OneByOne_Base_stub DDS_SL_OneByOne_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OBO_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_SL_OneByOne_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SL_OneByOne_Connector_stub DDS_SL_OneByOne_Connector_svnt DDS_SL_OBO_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SL_OneByOne_SenderS.cpp
+ SL_OneByOne_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SL_OneByOne_SenderS.h
+ SL_OneByOne_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ SL_OneByOne_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp
new file mode 100644
index 00000000000..8885fd86841
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.cpp
@@ -0,0 +1,358 @@
+// -*- C++ -*-
+// $Id$
+
+#include "SL_OneByOne_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_SL_OneByOne_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : test_nr_(UPDATE_CREATE),
+ test_ok_(true)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ CORBA::Boolean
+ Sender_exec_i::create_one(void)
+ {
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ if (! ::CORBA::is_nil (this->updater_) )
+ {
+ this->updater_->create_one(i);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("SL_OneByOne: create_one with instance key <%C>\n"),
+ i.key.in()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil")));
+ result = false;
+ }
+ }
+ catch (const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_one()
+ {
+ //update already created instance with handle nil
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ this->updater_->update_one(i, DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_one()
+ {
+ //delete registered instance with DDS::HANDLE_NIL
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registered instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, DDS::HANDLE_NIL);
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::create_many()
+ {
+ //create many with no exception
+ CORBA::Boolean result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->create_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n")));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_many()
+ {
+ CORBA::Boolean result = false;
+ try
+ {
+ this->updater_->update_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_many()
+ {
+ CORBA::Boolean result = false;
+ result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->delete_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+
+ return result;
+ }
+
+ void
+ Sender_exec_i::add_instances_of_topic ()
+ {
+ CORBA::UShort total = 3;
+ this->topic_seq_one_.length (total);
+ //sequence for tests with .._one
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_one_[i-1] = new_key;
+ }
+ //sequence for tests with .._many
+ this->topic_seq_many_.length (total);
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "many_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_many_[i-1] = new_key;
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if(this->test_ok_.value())
+ {
+ switch (this->test_nr_)
+ {
+ case UPDATE_CREATE:
+ this->test_ok_ = this->create_one();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_ONE;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ break;
+ case UPDATE_ONE:
+ this->test_ok_ = this->update_one();
+ this->test_nr_ = DELETE_ONE;
+ break;
+ case DELETE_ONE:
+ this->test_ok_ = this->delete_one();
+ this->test_nr_ = CREATE_MANY;
+ case CREATE_MANY:
+ this->test_ok_ = this->create_many();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_MANY;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ this->test_nr_ = UPDATE_MANY;
+ break;
+ case UPDATE_MANY:
+ this->test_ok_ = this->update_many();
+ this->test_nr_ = DELETE_MANY;
+ break;
+ case DELETE_MANY:
+ this->test_ok_ = this->delete_many();
+ this->test_nr_ = END_TEST;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 1L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::SL_OneByOne::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->updater_= this->context_->get_connection_test_topic_update_data ();
+ }
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->add_instances_of_topic ();
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_OneByOne_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h
new file mode 100644
index 00000000000..629317869b6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/Sender/SL_OneByOne_Sender_exec.h
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "SL_OneByOne_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_SL_OneByOne_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ enum UPDATER_TEST {
+ UPDATE_CREATE,
+ UPDATE_ONE,
+ DELETE_ONE,
+ CREATE_MANY,
+ UPDATE_MANY,
+ DELETE_MANY,
+ END_TEST
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void tick (void);
+
+ private:
+ void start (void);
+ void stop (void);
+ void add_instances_of_topic (void);
+ CORBA::Boolean create_one(void);
+ CORBA::Boolean update_one(void);
+ CORBA::Boolean delete_one(void);
+ CORBA::Boolean create_many(void);
+ CORBA::Boolean update_many(void);
+ CORBA::Boolean delete_many(void);
+
+ pulse_Generator * ticker_;
+ ::SL_OneByOne::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Updater_var updater_;
+ UPDATER_TEST test_nr_;
+ Atomic_Boolean test_ok_;
+ TestTopicSeq topic_seq_one_;
+ TestTopicSeq topic_seq_many_;
+ };
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_SL_OneByOne_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp
new file mode 100644
index 00000000000..a794a8b59a1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/Plan.cdp
@@ -0,0 +1,365 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SL_OneByOne_Depl_1</label>
+ <UUID>SL_OneByOne_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SL_OneByOne_ConnectorComponentImplementation">
+ <name>SL_OneByOne_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="SL_OneByOne_Connector_ExecArtifact" />
+ <artifact xmi:idref="SL_OneByOne_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_SL_OneByOne_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_SL_OneByOne_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_OneByOne_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SL_OneByOne_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SL_OneByOne_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="SL_OneByOne_ConnectorComponentInstance">
+ <name>SL_OneByOne_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_OneByOne_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SL_OneByOne_ConnectorComponentInstance2">
+ <name>SL_OneByOne_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SL_OneByOne_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_OneByOne_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_statelistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_OneByOne_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SL_OneByOne_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_OneByOne_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SL_OneByOne_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="SL_OneByOne_Connector_ExecArtifact">
+ <name>SL_OneByOne_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_OneByOne_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="SL_OneByOne_Connector_SvntArtifact">
+ <name>SL_OneByOne_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_OneByOne_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="SL_OneByOne_Connector_StubArtifact">
+ <name>SL_OneByOne_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_SL_OneByOne_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl
new file mode 100755
index 00000000000..66cc403a1fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SLOneByOne/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 20 seconds to allow task to complete\n";
+sleep (20);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl
new file mode 100644
index 00000000000..94d30cd743c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file SetConnectorAttribute_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SETCONNECTORATTRIBUTE_BASE_IDL
+#define SETCONNECTORATTRIBUTE_BASE_IDL
+
+#pragma ndds typesupport "Base/SetConnectorAttribute_BaseSupport.h"
+
+struct SetConnectorAttributeTest {
+ string key;
+ long iteration;
+};
+
+typedef sequence<SetConnectorAttributeTest> SetConnectorAttributeTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc
new file mode 100644
index 00000000000..5d5a42ccba8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Base/SetConnectorAttribute_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SCABase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SCABase_stub
+ dynamicflags += SETCONNECTORATTRIBUTE_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_BASE_STUB_Export \
+ -Wb,stub_export_include=SetConnectorAttribute_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ SetConnectorAttribute_Base.idl
+ }
+
+ opendds_ts_flags += --export=SETCONNECTORATTRIBUTE_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ SetConnectorAttribute_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl
new file mode 100644
index 00000000000..53f741205e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file SetConnectorAttribute_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SETCONNECTORATTRIBUTE_CONNECTOR_IDL_
+#define SETCONNECTORATTRIBUTE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/SetConnectorAttribute_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/SetConnectorAttribute_ConnectorE.idl"
+
+module SetConnectorAttribute
+{
+ module ::CCM_DDS::Typed
+ < ::SetConnectorAttributeTest, ::SetConnectorAttributeTestSeq>
+ SetConnectorAttributeTestConn;
+ connector SetConnectorAttribute_Connector : SetConnectorAttributeTestConn::DDS_Event
+ {
+ };
+};
+
+#endif /* SetConnectorAttribute_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc
new file mode 100644
index 00000000000..6f913842f95
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/Connector/SetConnectorAttribute_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SCABase -l .. -o ../lib -u DDS SetConnectorAttribute_Connector"
+
+project(DDS_SCAConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=SetConnectorAttribute_Connector_stub_export.h \
+ -Wb,skel_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=SetConnectorAttribute_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=SetConnectorAttribute_Connector_svnt_export.h \
+ -Wb,conn_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=SetConnectorAttribute_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ SetConnectorAttribute_Connector.idl
+ }
+}
+
+project(DDS_SCAConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SCAConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=SETCONNECTORATTRIBUTE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=SetConnectorAttribute_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ SetConnectorAttribute_ConnectorE.idl
+ }
+}
+
+project(DDS_SCAConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SCAConnector_lem_gen DDS_SCAConnector_stub DDS_SCABase_stub DDS4CCM_lem_stub
+ libs += DDS_SCABase_stub DDS_SCAConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SCAConnector_lem_stub
+ dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SetConnectorAttribute_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ SetConnectorAttribute_ConnectorEC.h
+ SetConnectorAttribute_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ SetConnectorAttribute_ConnectorEC.inl
+ }
+}
+
+project(DDS_SCAConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SCAConnector_idl_gen DDS_SCABase_stub
+ libs += DDS_SCABase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SCAConnector_stub
+ dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SetConnectorAttribute_ConnectorC.cpp
+ }
+
+ Header_Files {
+ SetConnectorAttribute_ConnectorC.h
+ SetConnectorAttribute_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ SetConnectorAttribute_ConnectorC.inl
+ }
+}
+
+project(DDS_SCAConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SCAConnector_lem_stub DDS_SCAConnector_stub DDS4CCM_lem_stub DDS_SCABase_stub
+ sharedname = DDS_SCAConnector_exec
+ libs += DDS_SCAConnector_stub DDS_SCAConnector_lem_stub DDS_SCABase_stub DDS4CCM_lem_stub DDS_SCABase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SetConnectorAttribute_Connector_conn.cpp
+ }
+
+ Header_Files {
+ SetConnectorAttribute_Connector_conn.h
+ SetConnectorAttribute_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SCAConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SCAConnector_lem_stub DDS_SCAConnector_exec DDS_SCAConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_SCAConnector_svnt
+ libs += DDS_SCAConnector_stub \
+ DDS_SCAConnector_lem_stub \
+ DDS_SCABase_stub \
+ DDS_SCAConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SETCONNECTORATTRIBUTE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ SetConnectorAttribute_ConnectorS.cpp
+ SetConnectorAttribute_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ SetConnectorAttribute_ConnectorS.h
+ SetConnectorAttribute_Connector_svnt.h
+ SetConnectorAttribute_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ SetConnectorAttribute_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README
new file mode 100644
index 00000000000..8986a3b67ca
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/README
@@ -0,0 +1,15 @@
+# $Id$
+
+Tests whether the connector attribute are
+properly set by the D&C framework.
+The following connector attributes are defined in
+the deployment plan:
+ * key_fields
+ * domain_id
+ * qos_profile
+ * topic_name
+
+On ccm_activate in the connector, these values
+are checked.
+
+An error is reported for every mismatch.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp
new file mode 100644
index 00000000000..f7fe2fc0074
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/Plan.cdp
@@ -0,0 +1,150 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SetConnectorAttributeAttribute_Depl_1</label>
+ <UUID>SetConnectorAttributeAttribute_Depl_1</UUID>
+
+
+ <implementation xmi:id="SetConnectorAttributeConnectorComponentImplementation">
+ <name>SetConnectorAttributeConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="SetConnectorAttributeConnector_ExecArtifact" />
+ <artifact xmi:idref="SetConnectorAttributeConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SetConnectorAttribute_SetConnectorAttribute_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SetConnectorAttribute_SetConnectorAttribute_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SetConnectorAttributeConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SetConnectorAttributeConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="SetConnectorAttributeConnectorComponentInstance">
+ <name>SetConnectorAttributeConnectorComponent</name>
+ <node>ComponentNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SetConnectorAttributeConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SetConnectorAttribute</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>domain_id</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>100</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>'qos profile'</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>key_fields</name>
+ <value>
+ <type>
+ <kind>tk_sequence</kind>
+ <sequence>
+ <elementType>
+ <kind>tk_string</kind>
+ </elementType>
+ </sequence>
+ </type>
+ <value>
+ <element>
+ <string>string_1</string>
+ </element>
+ <element>
+ <string>string_2</string>
+ </element>
+ <element>
+ <string>string_3</string>
+ </element>
+ <element>
+ <string>string_4</string>
+ </element>
+ <element>
+ <string>string_5</string>
+ </element>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <artifact xmi:id="SetConnectorAttributeConnector_ExecArtifact">
+ <name>SetConnectorAttributeConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_SCAConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="SetConnectorAttributeConnector_SvntArtifact">
+ <name>SetConnectorAttributeConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_SCAConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="SetConnectorAttributeConnector_StubArtifact">
+ <name>SetConnectorAttributeConnector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_SCAConnector_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl
new file mode 100755
index 00000000000..b51ae16243d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SetConnectorAttributes/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001);
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode");
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 5 seconds to allow task to complete\n";
+sleep (5);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.idl
new file mode 100644
index 00000000000..11bcfb8cf8a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.idl
@@ -0,0 +1,40 @@
+// $Id$
+
+/**
+ * @file Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef BASE_IDL
+#define BASE_IDL
+
+#pragma ndds typesupport "Base/BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "SharedDPTest1"
+#pragma DCPS_DATA_KEY "SharedDPTest1 key1"
+
+#pragma DCPS_DATA_TYPE "SharedDPTest2"
+#pragma DCPS_DATA_KEY "SharedDPTest2 key2"
+
+#pragma DCPS_DATA_TYPE "SharedDPTest3"
+#pragma DCPS_DATA_KEY "SharedDPTest3 key3"
+
+struct SharedDPTest1 {
+ string key1;
+ long iteration1;
+};
+typedef sequence<SharedDPTest1> SharedDPTest1Seq;
+
+struct SharedDPTest2 {
+ string key2;
+ long iteration2;
+};
+typedef sequence<SharedDPTest2> SharedDPTest2Seq;
+
+struct SharedDPTest3 {
+ string key3;
+ long iteration3;
+};
+typedef sequence<SharedDPTest3> SharedDPTest3Seq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.mpc
new file mode 100644
index 00000000000..5ef7334a4bc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Base/Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SharedDP_DDBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SharedDP_DDBase_stub
+ dynamicflags += BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=BASE_STUB_Export \
+ -Wb,stub_export_include=Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Base.idl
+ }
+
+ opendds_ts_flags += --export=BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.idl
new file mode 100644
index 00000000000..888ebbf77d8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ */
+
+#ifndef DDS_SHARED_DP_COMPONENT_IDL
+#define DDS_SHARED_DP_COMPONENT_IDL
+
+#include "Connector1/Connector1.idl"
+#include "Connector2/Connector2.idl"
+#include "Connector3/Connector3.idl"
+
+module SharedDP
+{
+ component SharedDPComponent
+ {
+ port CCM_DDS::SharedDPTest1::DDS_Write write1;
+ port CCM_DDS::SharedDPTest2::DDS_Write write2;
+ port CCM_DDS::SharedDPTest3::DDS_Write write3;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.mpc
new file mode 100644
index 00000000000..8c71912af03
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component.mpc
@@ -0,0 +1,158 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SharedDPBase -l ../lib -o ../lib -c controller -u DDS Component"
+
+project(DDS_SharedDP_DDComponent_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SharedDP_Connector1_idl_gen DDS_SharedDP_Connector2_idl_gen \
+ DDS_SharedDP_Connector3_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Component_stub_export.h \
+ -Wb,skel_export_macro=COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Component_svnt_export.h \
+ -Wb,svnt_export_macro=COMPONENT_SVNT_Export \
+ -Wb,svnt_export_include=Component_svnt_export.h \
+ -Wb,exec_export_macro=COMPONENT_EXEC_Export \
+ -Wb,exec_export_include=Component_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Component.idl
+ }
+}
+
+project(DDS_SharedDP_DDComponent_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SharedDP_DDComponent_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_LEM_STUB_Export \
+ -Wb,stub_export_include=Component_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ ComponentE.idl
+ }
+}
+
+project(DDS_SharedDP_DDComponent_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDP_DDComponent_lem_gen DDS_SharedDP_DDComponent_stub DDS_SharedDP_DDBase_stub
+ libs += DDS_SharedDP_DDBase_stub Component_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Component_lem_stub
+ dynamicflags = COMPONENT_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentEC.cpp
+ }
+
+ Header_Files {
+ ComponentEC.h
+ Component_lem_stub_export.h
+ }
+
+ Inline_Files {
+ ComponentEC.inl
+ }
+}
+
+project(DDS_SharedDP_DDComponent_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDP_DDComponent_idl_gen DDS_SharedDP_DDBase_stub \
+ DDS_SharedDP_Connector1_stub DDS_SharedDP_Connector2_stub DDS_SharedDP_Connector3_stub \
+ DDS_SharedDP_Connector1_lem_gen DDS_SharedDP_Connector2_lem_gen DDS_SharedDP_Connector3_lem_gen
+ libs += DDS_SharedDP_DDBase_stub DDS_Connector1_stub DDS_Connector2_stub DDS_Connector3_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Component_stub
+ dynamicflags = COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentC.cpp
+ }
+
+ Header_Files {
+ ComponentC.h
+ Component_stub_export.h
+ }
+
+ Inline_Files {
+ ComponentC.inl
+ }
+}
+
+project(DDS_SharedDP_DDComponent_exec) : ciao_executor, dds4ccm_base, dds4ccm_impl {
+ after += DDS_SharedDP_DDComponent_lem_stub DDS_SharedDP_DDComponent_stub \
+ DDS_SharedDP_Connector1_lem_stub DDS_SharedDP_Connector1_stub \
+ DDS_SharedDP_Connector2_lem_stub DDS_SharedDP_Connector2_stub \
+ DDS_SharedDP_Connector3_lem_stub DDS_SharedDP_Connector3_stub \
+ DDS4CCM_lem_stub CIAO_DDS4CCM_DDS_Impl
+ sharedname = Component_exec
+ libs += Component_stub Component_lem_stub DDS_SharedDP_DDBase_stub \
+ DDS_Connector1_lem_stub DDS_Connector1_stub \
+ DDS_Connector2_lem_stub DDS_Connector2_stub \
+ DDS_Connector3_lem_stub DDS_Connector3_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = COMPONENT_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Component_exec.cpp
+ }
+
+ Header_Files {
+ Component_exec.h
+ Component_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDP_DDComponent_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SharedDP_DDBase_stub DDS_SharedDP_DDComponent_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_SharedDP_Connector1_stub DDS_SharedDP_Connector1_svnt DDS_SharedDP_Connector1_lem_stub \
+ DDS_SharedDP_Connector2_stub DDS_SharedDP_Connector2_svnt DDS_SharedDP_Connector2_lem_stub \
+ DDS_SharedDP_Connector3_stub DDS_SharedDP_Connector3_svnt DDS_SharedDP_Connector3_lem_stub
+ sharedname = Component_svnt
+ libs += Component_stub Component_lem_stub \
+ DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_Connector1_stub DDS_Connector1_svnt DDS_Connector1_lem_stub \
+ DDS_Connector2_stub DDS_Connector2_svnt DDS_Connector2_lem_stub \
+ DDS_Connector3_stub DDS_Connector3_svnt DDS_Connector3_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentS.cpp
+ Component_svnt.cpp
+ }
+
+ Header_Files {
+ ComponentS.h
+ Component_svnt.h
+ Component_svnt_export.h
+ }
+
+ Inline_Files {
+ ComponentS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.cpp
new file mode 100644
index 00000000000..c67655b13ec
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.cpp
@@ -0,0 +1,140 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Component_exec.h"
+#include "ace/Log_Msg.h"
+
+#include "Base/BaseSupport.h"
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+
+namespace CIAO_SharedDP_SharedDPComponent_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Component_exec_i
+ //============================================================
+
+ Component_exec_i::Component_exec_i (void)
+ {
+ }
+
+ Component_exec_i::~Component_exec_i (void)
+ {
+ }
+
+ void
+ Component_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::SharedDP::CCM_SharedDPComponent_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Component_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Component_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ DDS::DataWriter_var dw1 =
+ this->context_->get_connection_write1_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd1 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw1.in ());
+ DDSDataWriter * dds_dw1 = ccm_dds_rd1->get_impl ();
+ DDSPublisher * dds_p1 = dds_dw1->get_publisher ();
+ this->dds_dp1_ = dds_p1->get_participant ();
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer1\n"));
+ }
+
+ try
+ {
+ DDS::DataWriter_var dw2 =
+ this->context_->get_connection_write2_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd2 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw2.in ());
+ DDSDataWriter * dds_dw2 = ccm_dds_rd2->get_impl ();
+ DDSPublisher * dds_p2 = dds_dw2->get_publisher ();
+ this->dds_dp2_ = dds_p2->get_participant ();
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer2\n"));
+ }
+
+ try
+ {
+ DDS::DataWriter_var dw3 =
+ this->context_->get_connection_write3_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd3 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw3.in ());
+ DDSDataWriter * dds_dw3 = ccm_dds_rd3->get_impl ();
+ DDSPublisher * dds_p3 = dds_dw3->get_publisher ();
+ this->dds_dp3_ = dds_p3->get_participant ();
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer3\n"));
+ }
+ }
+
+ void
+ Component_exec_i::ccm_passivate (void)
+ {
+ if (!this->dds_dp1_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 1 seems to be NIL\n"));
+ if (!this->dds_dp2_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 2 seems to be NIL\n"));
+ if (!this->dds_dp3_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 3 seems to be NIL\n"));
+ }
+
+ void
+ Component_exec_i::ccm_remove (void)
+ {
+ if (this->dds_dp1_ != this->dds_dp2_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 2 don't seem to "
+ "share the same DomainParticipant\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Connector 1 and 2 seems to "
+ "share the same DomainParticipant\n"));
+ }
+ if (this->dds_dp1_ == this->dds_dp3_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 3 seem to "
+ "share the same DomainParticipant\n"));
+ }
+ if (this->dds_dp2_ == this->dds_dp3_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 2 and 3 seem to "
+ "share the same DomainParticipant\n"));
+ }
+ }
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Component_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Component_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.h
new file mode 100644
index 00000000000..341c942af15
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Component/Component_exec.h
@@ -0,0 +1,58 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_COMPONENT_EXEC_H_
+#define CIAO_COMPONENT_EXEC_H_
+
+
+#include "ComponentEC.h"
+
+#include /**/ "Component_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+class SharedDPTest1DataWriter;
+class SharedDPTest2DataWriter;
+class SharedDPTest3DataWriter;
+class DDSDomainParticipant;
+
+namespace CIAO_SharedDP_SharedDPComponent_Impl
+{
+ class Component_exec_i
+ : public virtual SharedDPComponent_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Component_exec_i (void);
+ virtual ~Component_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::SharedDP::CCM_SharedDPComponent_Context_var context_;
+
+ SharedDPTest1DataWriter * writer1_;
+ SharedDPTest2DataWriter * writer2_;
+ SharedDPTest3DataWriter * writer3_;
+
+ DDSDomainParticipant * dds_dp1_;
+ DDSDomainParticipant * dds_dp2_;
+ DDSDomainParticipant * dds_dp3_;
+ };
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Component_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.idl
new file mode 100644
index 00000000000..a81668b8a25
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @file Connector1.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHARED_DP_CONNECTOR1_IDL_
+#define SHARED_DP_CONNECTOR1_IDL_
+
+#include <Components.idl>
+#include "Base/Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector1/Connector1E.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::SharedDPTest1, ::SharedDPTest1Seq> SharedDPTest1;
+};
+
+module SharedDP_Connector1
+{
+ connector Connector1 : ::CCM_DDS::SharedDPTest1::DDS_Event
+ {
+ };
+};
+
+
+
+#endif /* SHARED_DP_CONNECTOR1_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.mpc
new file mode 100644
index 00000000000..7a369c45ae9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector1/Connector1.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_SharedDP_Connector1_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR1_STUB_Export \
+ -Wb,stub_export_include=Connector1_stub_export.h \
+ -Wb,skel_export_macro=SHAREDDP_CONNECTOR1_SVNT_Export \
+ -Wb,skel_export_include=Connector1_svnt_export.h \
+ -Wb,svnt_export_macro=SHAREDDP_CONNECTOR1_SVNT_Export \
+ -Wb,svnt_export_include=Connector1_svnt_export.h \
+ -Wb,conn_export_macro=SHAREDDP_CONNECTOR1_CONN_Export \
+ -Wb,conn_export_include=Connector1_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Connector1.idl
+ }
+}
+
+project(DDS_SharedDP_Connector1_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SharedDP_Connector1_idl_gen
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR1_LEM_STUB_Export \
+ -Wb,stub_export_include=Connector1_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Connector1E.idl
+ }
+}
+
+project(DDS_SharedDP_Connector1_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDP_Connector1_lem_gen DDS_SharedDP_Connector1_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub
+ libs += DDS_SharedDP_DDBase_stub DDS_Connector1_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector1_lem_stub
+ dynamicflags = SHAREDDP_CONNECTOR1_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector1EC.cpp
+ }
+
+ Header_Files {
+ Connector1EC.h
+ Connector1_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Connector1EC.inl
+ }
+}
+
+project(DDS_SharedDP_Connector1_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDP_Connector1_idl_gen DDS_SharedDP_DDBase_stub
+ libs += DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector1_stub
+ dynamicflags = SHAREDDP_CONNECTOR1_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector1C.cpp
+ }
+
+ Header_Files {
+ Connector1C.h
+ Connector1_stub_export.h
+ }
+
+ Inline_Files {
+ Connector1C.inl
+ }
+}
+
+project(DDS_SharedDP_Connector1_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SharedDP_Connector1_lem_stub DDS_SharedDP_Connector1_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ sharedname = DDS_Connector1_exec
+ libs += DDS_Connector1_stub DDS_Connector1_lem_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR1_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector1_conn.cpp
+ }
+
+ Header_Files {
+ Connector1_conn.h
+ Connector1_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDP_Connector1_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SharedDP_Connector1_lem_stub DDS_SharedDP_Connector1_exec DDS_SharedDP_Connector1_stub DDS4CCM_lem_stub
+ sharedname = DDS_Connector1_svnt
+ libs += DDS_Connector1_stub \
+ DDS_Connector1_lem_stub \
+ DDS_SharedDP_DDBase_stub \
+ DDS_Connector1_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR1_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector1S.cpp
+ Connector1_svnt.cpp
+ }
+
+ Header_Files {
+ Connector1S.h
+ Connector1_svnt.h
+ Connector1_svnt_export.h
+ }
+
+ Inline_Files {
+ Connector1S.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.idl
new file mode 100644
index 00000000000..fbb5820b808
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Connector2.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHARED_DP_CONNECTOR2_IDL_
+#define SHARED_DP_CONNECTOR2_IDL_
+
+#include <Components.idl>
+#include "Base/Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector2/Connector2E.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::SharedDPTest2, ::SharedDPTest2Seq> SharedDPTest2;
+};
+
+module SharedDP_Connector2
+{
+ connector Connector2 : ::CCM_DDS::SharedDPTest2::DDS_Event
+ {
+ };
+};
+
+#endif /* SHARED_DP_CONNECTOR2_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.mpc
new file mode 100644
index 00000000000..2a5abfef8d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector2/Connector2.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_SharedDP_Connector2_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR2_STUB_Export \
+ -Wb,stub_export_include=Connector2_stub_export.h \
+ -Wb,skel_export_macro=SHAREDDP_CONNECTOR2_SVNT_Export \
+ -Wb,skel_export_include=Connector2_svnt_export.h \
+ -Wb,svnt_export_macro=SHAREDDP_CONNECTOR2_SVNT_Export \
+ -Wb,svnt_export_include=Connector2_svnt_export.h \
+ -Wb,conn_export_macro=SHAREDDP_CONNECTOR2_CONN_Export \
+ -Wb,conn_export_include=Connector2_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Connector2.idl
+ }
+}
+
+project(DDS_SharedDP_Connector2_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SharedDP_Connector2_idl_gen
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR2_LEM_STUB_Export \
+ -Wb,stub_export_include=Connector2_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Connector2E.idl
+ }
+}
+
+project(DDS_SharedDP_Connector2_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDP_Connector2_lem_gen DDS_SharedDP_Connector2_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub
+ libs += DDS_SharedDP_DDBase_stub DDS_Connector2_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector2_lem_stub
+ dynamicflags = SHAREDDP_CONNECTOR2_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector2EC.cpp
+ }
+
+ Header_Files {
+ Connector2EC.h
+ Connector2_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Connector2EC.inl
+ }
+}
+
+project(DDS_SharedDP_Connector2_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDP_Connector2_idl_gen DDS_SharedDP_DDBase_stub
+ libs += DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector2_stub
+ dynamicflags = SHAREDDP_CONNECTOR2_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector2C.cpp
+ }
+
+ Header_Files {
+ Connector2C.h
+ Connector2_stub_export.h
+ }
+
+ Inline_Files {
+ Connector2C.inl
+ }
+}
+
+project(DDS_SharedDP_Connector2_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SharedDP_Connector2_lem_stub DDS_SharedDP_Connector2_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ sharedname = DDS_Connector2_exec
+ libs += DDS_Connector2_stub DDS_Connector2_lem_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR2_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector2_conn.cpp
+ }
+
+ Header_Files {
+ Connector2_conn.h
+ Connector2_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDP_Connector2_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SharedDP_Connector2_lem_stub DDS_SharedDP_Connector2_exec DDS_SharedDP_Connector2_stub DDS4CCM_lem_stub
+ sharedname = DDS_Connector2_svnt
+ libs += DDS_Connector2_stub \
+ DDS_Connector2_lem_stub \
+ DDS_SharedDP_DDBase_stub \
+ DDS_Connector2_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR2_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector2S.cpp
+ Connector2_svnt.cpp
+ }
+
+ Header_Files {
+ Connector2S.h
+ Connector2_svnt.h
+ Connector2_svnt_export.h
+ }
+
+ Inline_Files {
+ Connector2S.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.idl
new file mode 100644
index 00000000000..29e798d9350
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Connector3.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHARED_DP_CONNECTOR3_IDL_
+#define SHARED_DP_CONNECTOR3_IDL_
+
+#include <Components.idl>
+#include "Base/Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector3/Connector3E.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::SharedDPTest3, ::SharedDPTest3Seq> SharedDPTest3;
+};
+
+module SharedDP_Connector3
+{
+ connector Connector3 : ::CCM_DDS::SharedDPTest3::DDS_Event
+ {
+ };
+};
+
+#endif /* SHARED_DP_CONNECTOR3_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.mpc
new file mode 100644
index 00000000000..2e7e85481aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/Connector3/Connector3.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_SharedDP_Connector3_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR3_STUB_Export \
+ -Wb,stub_export_include=Connector3_stub_export.h \
+ -Wb,skel_export_macro=SHAREDDP_CONNECTOR3_SVNT_Export \
+ -Wb,skel_export_include=Connector3_svnt_export.h \
+ -Wb,svnt_export_macro=SHAREDDP_CONNECTOR3_SVNT_Export \
+ -Wb,svnt_export_include=Connector3_svnt_export.h \
+ -Wb,conn_export_macro=SHAREDDP_CONNECTOR3_CONN_Export \
+ -Wb,conn_export_include=Connector3_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Connector3.idl
+ }
+}
+
+project(DDS_SharedDP_Connector3_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SharedDP_Connector3_idl_gen
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR3_LEM_STUB_Export \
+ -Wb,stub_export_include=Connector3_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Connector3E.idl
+ }
+}
+
+project(DDS_SharedDP_Connector3_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDP_Connector3_lem_gen DDS_SharedDP_Connector3_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub
+ libs += DDS_SharedDP_DDBase_stub DDS_Connector3_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector3_lem_stub
+ dynamicflags = SHAREDDP_CONNECTOR3_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector3EC.cpp
+ }
+
+ Header_Files {
+ Connector3EC.h
+ Connector3_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Connector3EC.inl
+ }
+}
+
+project(DDS_SharedDP_Connector3_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDP_Connector3_idl_gen DDS_SharedDP_DDBase_stub
+ libs += DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector3_stub
+ dynamicflags = SHAREDDP_CONNECTOR3_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector3C.cpp
+ }
+
+ Header_Files {
+ Connector3C.h
+ Connector3_stub_export.h
+ }
+
+ Inline_Files {
+ Connector3C.inl
+ }
+}
+
+project(DDS_SharedDP_Connector3_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SharedDP_Connector3_lem_stub DDS_SharedDP_Connector3_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ sharedname = DDS_Connector3_exec
+ libs += DDS_Connector3_stub DDS_Connector3_lem_stub DDS_SharedDP_DDBase_stub DDS4CCM_lem_stub DDS_SharedDP_DDBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR3_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector3_conn.cpp
+ }
+
+ Header_Files {
+ Connector3_conn.h
+ Connector3_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDP_Connector3_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SharedDP_Connector3_lem_stub DDS_SharedDP_Connector3_exec DDS_SharedDP_Connector3_stub DDS4CCM_lem_stub
+ sharedname = DDS_Connector3_svnt
+ libs += DDS_Connector3_stub \
+ DDS_Connector3_lem_stub \
+ DDS_SharedDP_DDBase_stub \
+ DDS_Connector3_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR3_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector3S.cpp
+ Connector3_svnt.cpp
+ }
+
+ Header_Files {
+ Connector3S.h
+ Connector3_svnt.h
+ Connector3_svnt_export.h
+ }
+
+ Inline_Files {
+ Connector3S.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/Plan.cdp
new file mode 100644
index 00000000000..a8991de43aa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/Plan.cdp
@@ -0,0 +1,444 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SharedDPTest_Depl_1</label>
+ <UUID>SharedDPTest_Depl_1</UUID>
+
+ <implementation xmi:id="Connector1Implementation">
+ <name>Connector1Implementation</name>
+ <source/>
+ <artifact xmi:idref="Connector1_ExecArtifact" />
+ <artifact xmi:idref="Connector1_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector1_Connector1_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector1_Connector1_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector1_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector1_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Connector2Implementation">
+ <name>Connector2Implementation</name>
+ <source/>
+ <artifact xmi:idref="Connector2_ExecArtifact" />
+ <artifact xmi:idref="Connector2_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector2_Connector2_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector2_Connector2_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector2_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector2_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Connector3Implementation">
+ <name>Connector3Implementation</name>
+ <source/>
+ <artifact xmi:idref="Connector3_ExecArtifact" />
+ <artifact xmi:idref="Connector3_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector3_Connector3_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector3_Connector3_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector3_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector3_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_SharedDPComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Connector1Instance">
+ <name>Connector1Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="Connector1Implementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector2Instance">
+ <name>Connector2Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="Connector2Implementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP2</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector3Instance">
+ <name>Connector3Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="Connector3Implementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StandaloneDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Standalone_Library#Standalone_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ComponentInstance">
+ <name>Component</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>writer_connection1</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write1_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector1Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection2</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write2_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector2Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection3</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write3_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector3Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>Component_exec</name>
+ <source/>
+ <node/>
+ <location>Component_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>Component_svnt</name>
+ <source/>
+ <node/>
+ <location>Component_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Connector1_ExecArtifact">
+ <name>DDS_Connector1_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector1_exec</location>
+ </artifact>
+ <artifact xmi:id="Connector1_SvntArtifact">
+ <name>DDS_Connector1_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector1_svnt</location>
+ </artifact>
+ <artifact xmi:id="Connector1_StubArtifact">
+ <name>DDS_Connector1_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector1_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Connector2_ExecArtifact">
+ <name>DDS_Connector2_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector2_exec</location>
+ </artifact>
+ <artifact xmi:id="Connector2_SvntArtifact">
+ <name>DDS_Connector2_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector2_svnt</location>
+ </artifact>
+ <artifact xmi:id="Connector2_StubArtifact">
+ <name>DDS_Connector2_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector2_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Connector3_ExecArtifact">
+ <name>DDS_Connector3_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector3_exec</location>
+ </artifact>
+ <artifact xmi:id="Connector3_SvntArtifact">
+ <name>DDS_Connector3_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector3_svnt</location>
+ </artifact>
+ <artifact xmi:id="Connector3_StubArtifact">
+ <name>DDS_Connector3_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector3_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..f163ee334f4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <qos_library name="Shared_Library">
+ <qos_profile name="Shared_Profile" is_default_qos="true">
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+ <qos_library name="Standalone_Library">
+ <qos_profile name="Standalone_Profile" is_default_qos="true">
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/run_test.pl
new file mode 100755
index 00000000000..5a57844e894
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/DifferentDatatype/descriptors/run_test.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/README b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/README
new file mode 100644
index 00000000000..fc697e66371
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/README
@@ -0,0 +1,11 @@
+# $Id$
+
+To save resources, every subsequent connector with the same
+library name and profile name, should get the same domain-
+participant.
+
+There're three connectors. Two (Connector1 and Connector2)
+with the same library/profile name.
+One (Connector3) with a different library/profile name.
+
+The component checks the pointers of the domainparticipants.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.idl
new file mode 100644
index 00000000000..91ccce681ee
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef BASE_IDL
+#define BASE_IDL
+
+#pragma ndds typesupport "Base/BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "SharedDPTest"
+#pragma DCPS_DATA_KEY "SharedDPTest key"
+
+struct SharedDPTest {
+ string key;
+ long iteration;
+};
+typedef sequence<SharedDPTest> SharedDPTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.mpc
new file mode 100644
index 00000000000..00ca646663f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Base/Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SharedDPBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SharedDPBase_stub
+ dynamicflags += BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=BASE_STUB_Export \
+ -Wb,stub_export_include=Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Base.idl
+ }
+
+ opendds_ts_flags += --export=BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.idl
new file mode 100644
index 00000000000..d86e77e5a5d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ */
+
+#ifndef DDS_SHARED_DP_COMPONENT_IDL
+#define DDS_SHARED_DP_COMPONENT_IDL
+
+#include "Connector/Connector.idl"
+
+module SharedDP
+{
+ component SharedDPComponent
+ {
+ port CCM_DDS::SharedDPTest::DDS_Write write1;
+ port CCM_DDS::SharedDPTest::DDS_Write write2;
+ port CCM_DDS::SharedDPTest::DDS_Write write3;
+ port CCM_DDS::SharedDPTest::DDS_Write write4;
+
+ attribute boolean perform_test;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.mpc
new file mode 100644
index 00000000000..b49e7da658d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component.mpc
@@ -0,0 +1,149 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SharedDPBase -l ../lib -o ../lib -c controller -u DDS Component"
+
+project(DDS_SharedDPComponent_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SharedDP_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Component_stub_export.h \
+ -Wb,skel_export_macro=COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Component_svnt_export.h \
+ -Wb,svnt_export_macro=COMPONENT_SVNT_Export \
+ -Wb,svnt_export_include=Component_svnt_export.h \
+ -Wb,exec_export_macro=COMPONENT_EXEC_Export \
+ -Wb,exec_export_include=Component_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Component.idl
+ }
+}
+
+project(DDS_SharedDPComponent_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SharedDPComponent_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=COMPONENT_LEM_STUB_Export \
+ -Wb,stub_export_include=Component_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ ComponentE.idl
+ }
+}
+
+project(DDS_SharedDPComponent_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDPComponent_lem_gen DDS_SharedDPComponent_stub DDS_SharedDPBase_stub
+ libs += DDS_SharedDPBase_stub Component_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Component_lem_stub
+ dynamicflags = COMPONENT_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentEC.cpp
+ }
+
+ Header_Files {
+ ComponentEC.h
+ Component_lem_stub_export.h
+ }
+
+ Inline_Files {
+ ComponentEC.inl
+ }
+}
+
+project(DDS_SharedDPComponent_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDPComponent_idl_gen DDS_SharedDPBase_stub \
+ DDS_SharedDP_Connector_lem_gen DDS_SharedDP_Connector_stub
+ libs += DDS_SharedDPBase_stub DDS_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Component_stub
+ dynamicflags = COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentC.cpp
+ }
+
+ Header_Files {
+ ComponentC.h
+ Component_stub_export.h
+ }
+
+ Inline_Files {
+ ComponentC.inl
+ }
+}
+
+project(DDS_SharedDPComponent_exec) : ciao_executor, dds4ccm_base, dds4ccm_impl {
+ after += DDS_SharedDPComponent_lem_stub DDS_SharedDPComponent_stub \
+ DDS_SharedDP_Connector_lem_stub DDS_SharedDP_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Component_exec
+ libs += Component_stub Component_lem_stub DDS_SharedDPBase_stub \
+ DDS_Connector_lem_stub DDS_Connector_stub \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = COMPONENT_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Component_exec.cpp
+ }
+
+ Header_Files {
+ Component_exec.h
+ Component_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDPComponent_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SharedDPBase_stub DDS_SharedDPComponent_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_SharedDP_Connector_stub DDS_SharedDP_Connector_svnt \
+ DDS_SharedDP_Connector_lem_stub
+ sharedname = Component_svnt
+ libs += Component_stub Component_lem_stub \
+ DDS_SharedDPBase_stub DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_Connector_stub DDS_Connector_svnt DDS_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = COMPONENT_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ComponentS.cpp
+ Component_svnt.cpp
+ }
+
+ Header_Files {
+ ComponentS.h
+ Component_svnt.h
+ Component_svnt_export.h
+ }
+
+ Inline_Files {
+ ComponentS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.cpp
new file mode 100644
index 00000000000..d72899f20ae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.cpp
@@ -0,0 +1,239 @@
+// -*- C++ -*-
+// $Id$
+
+// Test whether Connector 1,2 and 3 are sharing the same DomainParticipant.
+// Connector 4 should have a different DomainParticipant.
+// Also test whether Connector 1 and 2 share the same topic.
+
+#include "Component_exec.h"
+#include "ace/Log_Msg.h"
+
+#include "Base/BaseSupport.h"
+
+#include "dds4ccm/impl/dds/DataWriter.h"
+
+const char * tp_name_conn_1_ = "SharedDP";
+const char * tp_name_conn_2_ = "SharedDP";
+const char * tp_name_conn_3_ = "SharedDP1";
+const char * tp_name_conn_4_ = "StandaloneDP";
+
+namespace CIAO_SharedDP_SharedDPComponent_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Component_exec_i
+ //============================================================
+
+ Component_exec_i::Component_exec_i (void)
+ : perform_test_ (false)
+ {
+ }
+
+ Component_exec_i::~Component_exec_i (void)
+ {
+ }
+
+ void
+ Component_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::SharedDP::CCM_SharedDPComponent_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Component_exec_i::configuration_complete (void)
+ {
+ }
+
+ CORBA::Boolean
+ Component_exec_i::perform_test (void)
+ {
+ return this->perform_test_;
+ }
+
+ void
+ Component_exec_i::perform_test (CORBA::Boolean perform_test)
+ {
+ this->perform_test_ = perform_test;
+ }
+
+ void
+ Component_exec_i::ccm_activate (void)
+ {
+ try
+ {
+ DDS::DataWriter_var dw1 =
+ this->context_->get_connection_write1_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd1 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw1.in ());
+ DDSDataWriter * dds_dw1 = ccm_dds_rd1->get_impl ();
+ DDSPublisher * dds_p1 = dds_dw1->get_publisher ();
+ this->dds_dp1_ = dds_p1->get_participant ();
+
+ DDSTopicDescription * td1 =
+ this->dds_dp1_->lookup_topicdescription (tp_name_conn_1_);
+ this->dds_tp1_ = DDSTopic::narrow (td1);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer1\n"));
+ }
+
+ try
+ {
+ DDS::DataWriter_var dw2 =
+ this->context_->get_connection_write2_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd2 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw2.in ());
+ DDSDataWriter * dds_dw2 = ccm_dds_rd2->get_impl ();
+ DDSPublisher * dds_p2 = dds_dw2->get_publisher ();
+ this->dds_dp2_ = dds_p2->get_participant ();
+ DDSTopicDescription * td2 =
+ this->dds_dp2_->lookup_topicdescription (tp_name_conn_2_);
+ this->dds_tp2_ = DDSTopic::narrow (td2);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer2\n"));
+ }
+
+ try
+ {
+ DDS::DataWriter_var dw3 =
+ this->context_->get_connection_write3_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd3 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw3.in ());
+ DDSDataWriter * dds_dw3 = ccm_dds_rd3->get_impl ();
+ DDSPublisher * dds_p3 = dds_dw3->get_publisher ();
+ this->dds_dp3_ = dds_p3->get_participant ();
+ DDSTopicDescription * td3 =
+ this->dds_dp3_->lookup_topicdescription (tp_name_conn_3_);
+ this->dds_tp3_ = DDSTopic::narrow (td3);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer3\n"));
+ }
+
+ try
+ {
+ DDS::DataWriter_var dw4 =
+ this->context_->get_connection_write4_dds_entity ();
+ CIAO::DDS4CCM::CCM_DDS_DataWriter_i *ccm_dds_rd4 =
+ dynamic_cast <CIAO::DDS4CCM::CCM_DDS_DataWriter_i *> (dw4.in ());
+ DDSDataWriter * dds_dw4 = ccm_dds_rd4->get_impl ();
+ DDSPublisher * dds_p4 = dds_dw4->get_publisher ();
+ this->dds_dp4_ = dds_p4->get_participant ();
+ DDSTopicDescription * td4 =
+ this->dds_dp4_->lookup_topicdescription (tp_name_conn_4_);
+ this->dds_tp4_ = DDSTopic::narrow (td4);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Unable to create dds_entity for writer3\n"));
+ }
+ }
+
+ void
+ Component_exec_i::ccm_passivate (void)
+ {
+ if (this->perform_test_)
+ {
+ if (!this->dds_dp1_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 1 seems to be NIL\n"));
+ if (!this->dds_dp2_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 2 seems to be NIL\n"));
+ if (!this->dds_dp3_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 3 seems to be NIL\n"));
+ if (!this->dds_dp4_)
+ ACE_ERROR ((LM_ERROR, "ERROR: DomainParticipant for Connector 4 seems to be NIL\n"));
+
+ if (!this->dds_tp1_)
+ ACE_ERROR ((LM_ERROR, "ERROR: Topic for Connector 1 seems to be NIL\n"));
+ if (!this->dds_tp2_)
+ ACE_ERROR ((LM_ERROR, "ERROR: Topic for Connector 2 seems to be NIL\n"));
+ if (!this->dds_tp3_)
+ ACE_ERROR ((LM_ERROR, "ERROR: Topic for Connector 3 seems to be NIL\n"));
+ if (!this->dds_tp4_)
+ ACE_ERROR ((LM_ERROR, "ERROR: Topic for Connector 4 seems to be NIL\n"));
+ }
+ }
+
+ void
+ Component_exec_i::ccm_remove (void)
+ {
+ if (this->perform_test_)
+ {
+ //check shared DomainParticipants
+ if (this->dds_dp1_ != this->dds_dp2_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 2 don't seem to "
+ "share the same DomainParticipant\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Connector 1 and 2 seems to "
+ "share the same DomainParticipant\n"));
+ }
+ if (this->dds_dp1_ == this->dds_dp4_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 4 seem to "
+ "share the same DomainParticipant\n"));
+ }
+ if (this->dds_dp2_ == this->dds_dp4_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 2 and 4 seem to "
+ "share the same DomainParticipant\n"));
+ }
+ if (this->dds_dp3_ == this->dds_dp4_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 3 and 4 seem to "
+ "share the same DomainParticipant\n"));
+ }
+
+ //check shared Topics
+ if (this->dds_tp1_ != this->dds_tp2_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 2 don't seem to "
+ "share the same Topic\n"));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Connector 1 and 2 seems to "
+ "share the same Topic\n"));
+ }
+ if (this->dds_tp1_ == this->dds_tp3_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 3 seem to "
+ "share the same Topic\n"));
+ }
+ if (this->dds_tp1_ == this->dds_tp4_)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Connector 1 and 4 seem to "
+ "share the same Topic\n"));
+ }
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Don't test this component. It's used for compilation errors.\n"));
+ }
+ }
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Component_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Component_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.h b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.h
new file mode 100644
index 00000000000..69f397a4dfb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Component/Component_exec.h
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_COMPONENT_EXEC_H_
+#define CIAO_COMPONENT_EXEC_H_
+
+
+#include "ComponentEC.h"
+
+#include /**/ "Component_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+class SharedDPTest1DataWriter;
+class SharedDPTest2DataWriter;
+class SharedDPTest3DataWriter;
+class SharedDPTest4DataWriter;
+class DDSDomainParticipant;
+class DDSTopic;
+
+namespace CIAO_SharedDP_SharedDPComponent_Impl
+{
+ class Component_exec_i
+ : public virtual SharedDPComponent_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Component_exec_i (void);
+ virtual ~Component_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ CORBA::Boolean perform_test (void);
+ void perform_test (CORBA::Boolean perform_test);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::SharedDP::CCM_SharedDPComponent_Context_var context_;
+
+ CORBA::Boolean perform_test_;
+
+ SharedDPTest1DataWriter * writer1_;
+ SharedDPTest2DataWriter * writer2_;
+ SharedDPTest3DataWriter * writer3_;
+ SharedDPTest4DataWriter * writer4_;
+
+ DDSDomainParticipant * dds_dp1_;
+ DDSDomainParticipant * dds_dp2_;
+ DDSDomainParticipant * dds_dp3_;
+ DDSDomainParticipant * dds_dp4_;
+
+ DDSTopic * dds_tp1_;
+ DDSTopic * dds_tp2_;
+ DDSTopic * dds_tp3_;
+ DDSTopic * dds_tp4_;
+ };
+
+ extern "C" COMPONENT_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Component_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.idl
new file mode 100644
index 00000000000..11d4d0cc409
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef SHARED_DP_CONNECTOR_IDL_
+#define SHARED_DP_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::SharedDPTest, ::SharedDPTestSeq> SharedDPTest;
+};
+
+module SharedDP_Connector
+{
+ connector SDP_Connector : ::CCM_DDS::SharedDPTest::DDS_Event
+ {
+ };
+};
+
+#endif /* SHARED_DP_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.mpc
new file mode 100644
index 00000000000..8e7678a41fc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/Connector/Connector.mpc
@@ -0,0 +1,142 @@
+// $Id$
+
+project(DDS_SharedDP_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Connector_stub_export.h \
+ -Wb,skel_export_macro=SHAREDDP_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Connector_svnt_export.h \
+ -Wb,svnt_export_macro=SHAREDDP_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Connector_svnt_export.h \
+ -Wb,conn_export_macro=SHAREDDP_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Connector.idl
+ }
+}
+
+project(DDS_SharedDP_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SharedDP_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=SHAREDDP_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ ConnectorE.idl
+ }
+}
+
+project(DDS_SharedDP_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SharedDP_Connector_lem_gen DDS_SharedDP_Connector_stub DDS_SharedDPBase_stub DDS4CCM_lem_stub
+ libs += DDS_SharedDPBase_stub DDS_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector_lem_stub
+ dynamicflags = SHAREDDP_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorEC.cpp
+ }
+
+ Header_Files {
+ ConnectorEC.h
+ Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ ConnectorEC.inl
+ }
+}
+
+project(DDS_SharedDP_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SharedDP_Connector_idl_gen DDS_SharedDPBase_stub
+ libs += DDS_SharedDPBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector_stub
+ dynamicflags = SHAREDDP_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorC.cpp
+ }
+
+ Header_Files {
+ ConnectorC.h
+ Connector_stub_export.h
+ }
+
+ Inline_Files {
+ ConnectorC.inl
+ }
+}
+
+project(DDS_SharedDP_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SharedDP_Connector_lem_stub DDS_SharedDP_Connector_stub DDS4CCM_lem_stub DDS_SharedDPBase_stub
+ sharedname = DDS_Connector_exec
+ libs += DDS_Connector_stub DDS_Connector_lem_stub DDS_SharedDPBase_stub DDS4CCM_lem_stub DDS_SharedDPBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector_conn.cpp
+ }
+
+ Header_Files {
+ Connector_conn.h
+ Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SharedDP_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SharedDP_Connector_lem_stub DDS_SharedDP_Connector_exec DDS_SharedDP_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Connector_svnt
+ libs += DDS_Connector_stub \
+ DDS_Connector_lem_stub \
+ DDS_SharedDPBase_stub \
+ DDS_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SHAREDDP_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorS.cpp
+ Connector_svnt.cpp
+ }
+
+ Header_Files {
+ ConnectorS.h
+ Connector_svnt.h
+ Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ ConnectorS.inl
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/DefaultQoS.cdp b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/DefaultQoS.cdp
new file mode 100644
index 00000000000..7c10cb028b9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/DefaultQoS.cdp
@@ -0,0 +1,320 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SharedDPTest_Depl</label>
+ <UUID>SharedDPTest_Depl</UUID>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="Connector_ExecArtifact" />
+ <artifact xmi:idref="Connector_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector_SDP_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector_SDP_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_SharedDPComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <instance xmi:id="Connector1Instance">
+ <name>Connector1Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector2Instance">
+ <name>Connector2Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector3Instance">
+ <name>Connector3Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP1</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector4Instance">
+ <name>Connector4Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StandaloneDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Standalone_Library#Standalone_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ComponentInstance">
+ <name>Component</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>writer_connection1</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write1_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector1Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection2</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write2_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector2Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection3</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write3_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector3Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection4</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write4_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector4Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>Component_exec</name>
+ <source/>
+ <node/>
+ <location>Component_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>Component_svnt</name>
+ <source/>
+ <node/>
+ <location>Component_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Connector_ExecArtifact">
+ <name>DDS_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Connector_SvntArtifact">
+ <name>DDS_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Connector_StubArtifact">
+ <name>DDS_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/Plan.cdp
new file mode 100644
index 00000000000..56628402110
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/Plan.cdp
@@ -0,0 +1,495 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>SharedDPTest_Depl</label>
+ <UUID>SharedDPTest_Depl</UUID>
+
+ <implementation xmi:id="ConnectorImplementation">
+ <name>ConnectorImplementation</name>
+ <source/>
+ <artifact xmi:idref="Connector_ExecArtifact" />
+ <artifact xmi:idref="Connector_SvntArtifact" />
+ <execParameter>
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector_SDP_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_Connector_SDP_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>DDS_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="ComponentImplementation">
+ <name>ComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Component_ExecArtifact" />
+ <artifact xmi:idref="Component_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Component_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_SharedDP_SharedDPComponent_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Component_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <!-- This connector is used to detect run_time errors,
+ not for functional testing.-->
+ <instance xmi:id="Connector0Instance">
+ <name>Connector0Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector1Instance">
+ <name>Connector1Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector2Instance">
+ <name>Connector2Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector3Instance">
+ <name>Connector3Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SharedDP1</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Shared_Library#Shared_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Connector4Instance">
+ <name>Connector4Instance</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ConnectorImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>StandaloneDP</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Standalone_Library#Standalone_Profile</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="ComponentInstance">
+ <name>Component</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>perform_test</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>true</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- This component is used to detect run_time errors,
+ not for functional testing.-->
+ <instance xmi:id="Component0Instance">
+ <name>Component0</name>
+ <node>ComponentNode</node>
+ <source/>
+ <implementation xmi:idref="ComponentImplementation" />
+ <configProperty>
+ <name>perform_test</name>
+ <value>
+ <type>
+ <kind>tk_boolean</kind>
+ </type>
+ <value>
+ <boolean>false</boolean>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>writer_connection01</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write1_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Component0Instance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector0Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection02</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write2_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Component0Instance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector0Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection03</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write3_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Component0Instance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector0Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection04</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write4_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Component0Instance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector0Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection1</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write1_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector1Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection2</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write2_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector2Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection3</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write3_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector3Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection4</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>write4_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Connector4Instance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Component_ExecArtifact">
+ <name>Component_exec</name>
+ <source/>
+ <node/>
+ <location>Component_exec</location>
+ </artifact>
+ <artifact xmi:id="Component_SvntArtifact">
+ <name>Component_svnt</name>
+ <source/>
+ <node/>
+ <location>Component_svnt</location>
+ </artifact>
+ <artifact xmi:id="Component_StubArtifact">
+ <name>Component_stub</name>
+ <source/>
+ <node/>
+ <location>Component_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Connector_ExecArtifact">
+ <name>DDS_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Connector_SvntArtifact">
+ <name>DDS_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Connector_StubArtifact">
+ <name>DDS_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Connector_stub</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/USER_QOS_PROFILES.xml
new file mode 100644
index 00000000000..f163ee334f4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/USER_QOS_PROFILES.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d">
+ <qos_library name="Shared_Library">
+ <qos_profile name="Shared_Profile" is_default_qos="true">
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+ <qos_library name="Standalone_Library">
+ <qos_profile name="Standalone_Profile" is_default_qos="true">
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>10</sec>
+ <nanosec>0</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <durability>
+ <kind>TRANSIENT_DURABILITY_QOS</kind>
+ </durability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_LAST_HISTORY_QOS</kind>
+ <depth>20</depth>
+ </history>
+ <durability>
+ <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
+ </durability>
+ </datareader_qos>
+ </qos_profile>
+ </qos_library>
+</dds> \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test.pl
new file mode 100755
index 00000000000..c1a88c75f90
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test_default_qos.pl b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test_default_qos.pl
new file mode 100755
index 00000000000..b7b2c12ee80
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/SharedDomainParticipant/SameDatatype/descriptors/run_test_default_qos.pl
@@ -0,0 +1,238 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 1;
+@ports = ( 60001 );
+@iorbases = ( "NodeApp1.ior" );
+@iorfiles = 0;
+@nodenames = ( "ComponentNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "DefaultQoS.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl
new file mode 100644
index 00000000000..a55a8a9106f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file State_Connection_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef STATE_CONNECTION_TEST_BASE_IDL
+#define STATE_CONNECTION_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/State_Connection_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "State_ConnectionTest"
+#pragma DCPS_DATA_KEY "State_ConnectionTest key"
+
+struct State_ConnectionTest {
+ string key; //@key
+ long iteration;
+};
+
+typedef sequence<State_ConnectionTest> State_ConnectionTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc
new file mode 100644
index 00000000000..a0c2462af7b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Base/State_Connection_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_SCT_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_SCT_Base_stub
+ dynamicflags += STATE_CONNECTION_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=STATE_CONNECTION_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=State_Connection_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ State_Connection_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=STATE_CONNECTION_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ State_Connection_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl
new file mode 100644
index 00000000000..268dd4acae6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file State_Connection_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef KEYED_TEST_CONNECTOR_IDL_
+#define KEYED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/State_Connection_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/State_Connection_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::State_ConnectionTest, ::State_ConnectionTestSeq> State_ConnectionTest;
+};
+
+module State_Connection_Test
+{
+ connector State_Connection_Test_Connector : ::CCM_DDS::State_ConnectionTest::DDS_State
+ {
+ };
+};
+
+#endif /* State_Connection_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc
new file mode 100644
index 00000000000..6e02d6eea27
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Connector/State_Connection_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SCT_Base -l .. -o ../lib -u DDS State_Connection_Test_Connector"
+
+project(DDS_SCT_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=STATE_CONNECTION_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=State_Connection_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=STATE_CONNECTION_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=State_Connection_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=STATE_CONNECTION_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=State_Connection_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=STATE_CONNECTION_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=State_Connection_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ State_Connection_Test_Connector.idl
+ }
+}
+
+project(DDS_SCT_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SCT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=STATE_CONNECTION_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=State_Connection_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ State_Connection_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_SCT_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SCT_Connector_lem_gen DDS_SCT_Connector_stub DDS_SCT_Base_stub DDS4CCM_lem_stub
+ libs += DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SCT_Connector_lem_stub
+ dynamicflags = STATE_CONNECTION_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ConnectorEC.h
+ State_Connection_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_SCT_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SCT_Connector_idl_gen DDS_SCT_Base_stub
+ libs += DDS_SCT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_SCT_Connector_stub
+ dynamicflags = STATE_CONNECTION_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ConnectorC.h
+ State_Connection_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_SCT_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub DDS4CCM_lem_stub DDS_SCT_Base_stub
+ sharedname = DDS_SCT_Connector_exec
+ libs += DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS_SCT_Base_stub DDS4CCM_lem_stub DDS_SCT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = STATE_CONNECTION_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_Connector_conn.h
+ State_Connection_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SCT_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_SCT_Connector_lem_stub DDS_SCT_Connector_exec DDS_SCT_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_SCT_Connector_svnt
+ libs += DDS_SCT_Connector_stub \
+ DDS_SCT_Connector_lem_stub \
+ DDS_SCT_Base_stub \
+ DDS_SCT_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = STATE_CONNECTION_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ConnectorS.cpp
+ State_Connection_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ConnectorS.h
+ State_Connection_Test_Connector_svnt.h
+ State_Connection_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README
new file mode 100644
index 00000000000..9be82d2e260
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/README
@@ -0,0 +1,35 @@
+# $Id$
+
+This test tests all possible connections between
+a Sender and a DDS State connector and a Receiver and a
+DDS State connector.
+The Sender requests the following connections:
+ * An updater
+ * A DDS updater
+
+The Receiver expects the following listeners to be created:
+ * A DataListenerControl for the DDS_Listen port
+ * A 'normal' listener for the DDS_Listen port
+ * A StateListener for the DDS_StateListen port
+ * A PortStatusListener for the DDS_Get port
+ * A PortStatusListener for the DDS_Read port
+ * A PortStatusListener for the DDS_Listen port
+ * A PortStatusListener for the DDS_StateLisen port
+
+The Receiver requests the following connections:
+ * A reader for the DDS_Read port
+ * A DDS reader for the DDS_Read port
+ * A reader for the DDS_Get port
+ * A getter for the DDS_Get port
+ * A DDS reader for the DDS_Read port
+ * A reader for the DDS_Listen port
+ * A DataControlListener for the DDS_Listen port
+ * A DDS reader for the DDS_Listen port
+ * A reader for the DDS_StateListen port
+ * A StateListener for the DDS_StateListen port
+ * A DDS reader for the DDS_StateListen port
+
+This test tests every single connection and reports an error when
+a connections couldn't be esthablished.
+
+No actual read/write/listen operations are performed.
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl
new file mode 100644
index 00000000000..e38088656f4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/State_Connection_Test_Connector.idl"
+
+module State_Connection_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::State_ConnectionTest::DDS_Read info_read;
+ port CCM_DDS::State_ConnectionTest::DDS_Get info_get;
+ port CCM_DDS::State_ConnectionTest::DDS_Listen info_listen;
+ port CCM_DDS::State_ConnectionTest::DDS_StateListen info_statelisten;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc
new file mode 100644
index 00000000000..2d627ca41ee
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_SCT_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_SCT_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ State_Connection_Test_Receiver.idl
+ }
+}
+
+project(DDS_SCT_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SCT_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ State_Connection_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_SCT_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SCT_Receiver_lem_gen DDS_SCT_Receiver_stub DDS_SCT_Connector_stub DDS_SCT_Base_stub
+ libs += Receiver_stub DDS_SCT_Connector_stub DDS_SCT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_SCT_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SCT_Receiver_idl_gen DDS_SCT_Connector_stub DDS_SCT_Base_stub DDS_SCT_Connector_lem_gen
+ libs += DDS_SCT_Connector_stub DDS_SCT_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_SCT_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SCT_Receiver_lem_stub DDS_SCT_Receiver_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SCT_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SCT_Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Receiver_exec DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_stub DDS_SCT_Connector_svnt Receiver_exec DDS_SCT_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_ReceiverS.cpp
+ State_Connection_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_ReceiverS.h
+ State_Connection_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..0575753bcb9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.cpp
@@ -0,0 +1,325 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "State_Connection_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_State_Connection_Test_Receiver_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_i
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : //DDS_Read
+ reader_data_ok_ (false),
+ reader_dds_entity_ok_ (false),
+ //DDS_Get
+ getter_data_ok_ (false),
+ getter_fresh_data_ok_ (false),
+ getter_dds_entity_ok_ (false),
+ //DDS_Listen
+ listen_data_ok_ (false),
+ listen_data_control_ok_ (false),
+ listen_dds_entity_ok_ (false),
+ //DDS_StateListen
+ statelisten_data_ok_ (false),
+ statelisten_data_control_ok_ (false),
+ statelisten_dds_entity_ok_ (false),
+ //Provides for DDS_Read
+ reader_port_status_created_ (false),
+ //Provides for DDS_Get
+ getter_port_status_created_ (false),
+ //Provides for DDS_Listen
+ listen_data_listener_created_ (false),
+ listen_port_status_created_ (false),
+ //Provides for DDS_StateListen
+ statelisten_data_listener_created_ (false),
+ statelisten_port_status_created_ (false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_read_status (void)
+ {
+ this->reader_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ //Provides for DDS_Get
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_get_status (void)
+ {
+ this->getter_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ //Provides for DDS_Listen
+ ::CCM_DDS::State_ConnectionTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_listen_data_listener ()
+ {
+ this->listen_data_listener_created_ = true;
+ return ::CCM_DDS::State_ConnectionTest::CCM_Listener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_listen_status (void)
+ {
+ this->listen_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ //Provides for DDS_StateListen
+ ::CCM_DDS::State_ConnectionTest::CCM_StateListener_ptr
+ Receiver_exec_i::get_info_statelisten_data_listener (void)
+ {
+ this->statelisten_data_listener_created_ = true;
+ return ::CCM_DDS::State_ConnectionTest::CCM_StateListener::_nil ();
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_statelisten_status (void)
+ {
+ this->statelisten_port_status_created_ = true;
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::State_Connection_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ //DDS_Read
+ this->reader_data_ =
+ this->context_->get_connection_info_read_data ();
+ this->reader_data_ok_ = ! ::CORBA::is_nil (this->reader_data_);
+
+ this->reader_dds_entity_ =
+ this->context_->get_connection_info_read_dds_entity ();
+ this->reader_dds_entity_ok_ = ! ::CORBA::is_nil (this->reader_dds_entity_);
+
+ //DDS_Get
+ this->getter_data_ =
+ this->context_->get_connection_info_get_data ();
+ this->getter_data_ok_ = ! ::CORBA::is_nil (this->getter_data_);
+ this->getter_fresh_data_ =
+ this->context_->get_connection_info_get_fresh_data ();
+ this->getter_fresh_data_ok_ = ! ::CORBA::is_nil (this->getter_fresh_data_);
+ this->getter_dds_entity_ =
+ this->context_->get_connection_info_get_dds_entity ();
+ this->getter_dds_entity_ok_ = ! ::CORBA::is_nil (this->getter_dds_entity_);
+
+ //DDS_Listen
+ this->listen_data_ =
+ this->context_->get_connection_info_listen_data ();
+ this->listen_data_ok_ = ! ::CORBA::is_nil (this->listen_data_);
+ this->listen_data_control_ =
+ this->context_->get_connection_info_listen_data_control ();
+ this->listen_data_control_ok_ = ! ::CORBA::is_nil (this->listen_data_control_);
+ this->listen_dds_entity_ =
+ this->context_->get_connection_info_listen_dds_entity ();
+ this->listen_dds_entity_ok_ = ! ::CORBA::is_nil (this->listen_dds_entity_);
+
+ //DDS_StateListen
+ this->statelisten_data_ =
+ this->context_->get_connection_info_statelisten_data ();
+ this->statelisten_data_ok_ = ! ::CORBA::is_nil (this->statelisten_data_);
+ this->statelisten_data_control_ =
+ this->context_->get_connection_info_statelisten_data_control ();
+ this->statelisten_data_control_ok_ = ! ::CORBA::is_nil (this->statelisten_data_control_);
+ this->statelisten_dds_entity_ =
+ this->context_->get_connection_info_statelisten_dds_entity ();
+ this->statelisten_dds_entity_ok_ = ! ::CORBA::is_nil (this->statelisten_dds_entity_);
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ //DDS_Read
+ if (!this->reader_data_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Read failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Read passed\n")));
+ }
+ if (!this->reader_dds_entity_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Read failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Read passed\n")));
+ }
+ //DDS_Get
+ if (!this->getter_data_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Get failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Get passed\n")));
+ }
+
+ if (!this->getter_fresh_data_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get getter of DDS_Get failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get getter of DDS_Get passed\n")));
+ }
+ if (!this->getter_dds_entity_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Get failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Get passed\n")));
+ }
+ //DDS_Listen
+ if (!this->listen_data_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_Listen passed\n")));
+ }
+ if (!this->listen_data_control_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data control of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data control of DDS_Listen passed\n")));
+ }
+ if (!this->listen_dds_entity_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_Listen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_Listen passed\n")));
+ }
+ //DDS_StateListen
+ if (!this->statelisten_data_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get reader of DDS_StateListen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get reader of DDS_StateListen passed\n")));
+ }
+ if (!this->statelisten_data_control_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get data control of DDS_StateListen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get data control of DDS_StateListen passed\n")));
+ }
+ if (!this->statelisten_dds_entity_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : get DDS reader of DDS_StateListen failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : Get DDS reader of DDS_StateListen passed\n")));
+ }
+ //Provides for DDS_Read
+ if (!this->reader_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Read not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Read was created\n")));
+ }
+ //Provides for DDS_Get
+ if (!this->getter_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Get not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Get was created\n")));
+ }
+ //Provides for DDS_Listen
+ if (!this->listen_data_listener_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : DataListener of DDS_Listen not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : DataListener of DDS_Listen was created\n")));
+ }
+ if (!this->listen_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_Listen not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_Listen was created\n")));
+ }
+ //Provides for DDS_StateListen
+ if (!this->statelisten_data_listener_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : DataListener of DDS_StateListen not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : DataListener of DDS_StateListen was created\n")));
+ }
+ if (!this->statelisten_port_status_created_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Receiver : PortStatusListener of DDS_StateListen not created\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Receiver : PortStatusListener of DDS_StateListen was created\n")));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_State_Connection_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h
new file mode 100644
index 00000000000..55c7cc0ec50
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Receiver/State_Connection_Test_Receiver_exec.h
@@ -0,0 +1,119 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef STATE_CONNECTION_RECEIVER_EXEC_H_
+#define STATE_CONNECTION_RECEIVER_EXEC_H_
+
+#include "State_Connection_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_State_Connection_Test_Receiver_Impl
+{
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ //Provides for DDS_Read
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_read_status (void);
+ //Provides for DDS_Get
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_get_status (void);
+ //Provides for DDS_Listen
+ virtual ::CCM_DDS::State_ConnectionTest::CCM_Listener_ptr
+ get_info_listen_data_listener ();
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_listen_status (void);
+ //Provides for DDS_StateListen
+ virtual ::CCM_DDS::State_ConnectionTest::CCM_StateListener_ptr
+ get_info_statelisten_data_listener (void);
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_statelisten_status (void);
+
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::State_Connection_Test::CCM_Receiver_Context_var context_;
+ //DDS_Read
+ ::CCM_DDS::State_ConnectionTest::Reader_var reader_data_;
+ ::DDS::DataReader_var reader_dds_entity_;
+
+ //DDS_Get
+ ::CCM_DDS::State_ConnectionTest::Reader_var getter_data_;
+ ::CCM_DDS::State_ConnectionTest::Getter_var getter_fresh_data_;
+ ::DDS::DataReader_var getter_dds_entity_;
+
+ //DDS_Listen
+ ::CCM_DDS::State_ConnectionTest::Reader_var listen_data_;
+ ::CCM_DDS::DataListenerControl_var listen_data_control_;
+ ::DDS::DataReader_var listen_dds_entity_;
+
+ //DDS_StateListen
+ ::CCM_DDS::State_ConnectionTest::Reader_var statelisten_data_;
+ ::CCM_DDS::StateListenerControl_var statelisten_data_control_;
+ ::DDS::DataReader_var statelisten_dds_entity_;
+
+ //DDS_Read
+ bool reader_data_ok_;
+ bool reader_dds_entity_ok_;
+
+ //DDS_Get
+ bool getter_data_ok_;
+ bool getter_fresh_data_ok_;
+ bool getter_dds_entity_ok_;
+
+ //DDS_Listen
+ bool listen_data_ok_;
+ bool listen_data_control_ok_;
+ bool listen_dds_entity_ok_;
+
+ //DDS_StateListen
+ bool statelisten_data_ok_;
+ bool statelisten_data_control_ok_;
+ bool statelisten_dds_entity_ok_;
+
+ //Provides for DDS_Read
+ bool reader_port_status_created_;
+
+ //Provides for DDS_Get
+ bool getter_port_status_created_;
+
+ //Provides for DDS_Listen
+ bool listen_data_listener_created_;
+ bool listen_port_status_created_;
+
+ //Provides for DDS_StateListen
+ bool statelisten_data_listener_created_;
+ bool statelisten_port_status_created_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_State_Connection_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl
new file mode 100644
index 00000000000..6fdd94e698c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_STATE_CONNECTION_TEST_SENDER_IDL
+#define DDS_STATE_CONNECTION_TEST_SENDER_IDL
+
+#include "Connector/State_Connection_Test_Connector.idl"
+
+module State_Connection_Test
+{
+ component Sender
+ {
+ port CCM_DDS::State_ConnectionTest::DDS_Update info_update;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc
new file mode 100644
index 00000000000..97b11af7e00
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_SCT_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_SCT_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_SCT_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ State_Connection_Test_Sender.idl
+ }
+}
+
+project(DDS_SCT_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_SCT_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ State_Connection_Test_SenderE.idl
+ }
+}
+
+project(DDS_SCT_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_SCT_Sender_lem_gen DDS_SCT_Sender_stub DDS_SCT_Base_stub
+ libs += DDS_SCT_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_SenderEC.inl
+ }
+}
+
+project(DDS_SCT_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_SCT_Sender_idl_gen DDS_SCT_Base_stub DDS_SCT_Connector_stub
+ libs += DDS_SCT_Base_stub DDS_SCT_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_SenderC.inl
+ }
+}
+
+project(DDS_SCT_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_SCT_Sender_lem_stub DDS_SCT_Sender_stub DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_SCT_Base_stub DDS_SCT_Connector_lem_stub DDS_SCT_Connector_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_SCT_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_SCT_Base_stub DDS_SCT_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_SCT_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_SCT_Connector_stub DDS_SCT_Connector_svnt DDS_SCT_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ State_Connection_Test_SenderS.cpp
+ State_Connection_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ State_Connection_Test_SenderS.h
+ State_Connection_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ State_Connection_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..8c7b8d82c1a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.cpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+// $Id$
+
+#include "State_Connection_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_State_Connection_Test_Sender_Impl
+{
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : updater_ok_ (false),
+ updater_dds_datawriter_ok_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::State_Connection_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->updater_ =
+ this->context_->get_connection_info_update_data ();
+ if (! ::CORBA::is_nil (this->updater_))
+ {
+ this->updater_ok_ = true;
+ }
+ this->updater_dds_datawriter_ =
+ this->context_->get_connection_info_update_dds_entity ();
+ if (! ::CORBA::is_nil (this->updater_dds_datawriter_))
+ {
+ this->updater_dds_datawriter_ok_ = true;
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if (!this->updater_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : get updater failed\n")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Sender : Get updater passed\n")));
+ }
+ if (!this->updater_dds_datawriter_ok_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender : Get dds writer for DDS_Updater failed\n")));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender : Get dds writer for DDS_Updater passed\n")));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_State_Connection_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h
new file mode 100644
index 00000000000..3835b874c21
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/Sender/State_Connection_Test_Sender_exec.h
@@ -0,0 +1,52 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef STATE_CONNECTION_SENDER_EXEC_H_
+#define STATE_CONNECTION_SENDER_EXEC_H_
+
+
+#include "State_Connection_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_State_Connection_Test_Sender_Impl
+{
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::State_Connection_Test::CCM_Sender_Context_var context_;
+ CCM_DDS::State_ConnectionTest::Updater_var updater_;
+ DDS::DataWriter_var updater_dds_datawriter_;
+
+ bool updater_ok_;
+ bool updater_dds_datawriter_ok_;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_State_Connection_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp
new file mode 100644
index 00000000000..a601edd7010
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/Plan.cdp
@@ -0,0 +1,644 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>State_Connection_Test_Depl_1</label>
+ <UUID>State_Connection_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="State_Connection_Test_ConnectorComponentImplementation">
+ <name>State_Connection_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="State_Connection_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="State_Connection_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_State_Connection_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_State_Connection_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>State_Connection_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>State_Connection_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_State_Connection_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+ <instance xmi:id="State_Connection_Test_ConnectorComponentInstance">
+ <name>State_Connection_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="State_Connection_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>State_Connection_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="State_Connection_Test_ConnectorComponentInstance2">
+ <name>State_Connection_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="State_Connection_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>State_Connection_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <!-- SENDER COMPONENT CONNECTIONS -->
+ <connection>
+ <name>update_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>update_dds_entity</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_update_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- RECEIVER COMPONENT CONNECTIONS -->
+ <!-- DDS_Get port -->
+ <connection>
+ <name>get_data_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>get_fresh_data_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_fresh_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_observer_fresh_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>get_dds_entity_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_observer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <!-- DDS_Get mirrorport -->
+ <connection>
+ <name>get_status_mirrorport</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_get_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>pull_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- DDS_Read port -->
+ <connection>
+ <name>read_data_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_read_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>read_dds_entity_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_read_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <!-- DDS_Read mirrorport -->
+ <connection>
+ <name>read_status_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_read_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>passive_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- DDS_Listen port -->
+ <connection>
+ <name>listen_data_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>listen_data_control_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>listen_dds_entity_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <!-- DDS_Listen mirrorport -->
+ <connection>
+ <name>listen_data_listener_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>listen_status_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_listen_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- DDS_StateListen port -->
+ <connection>
+ <name>statelisten_data_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_statelisten_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>statelisten_data_control_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_statelisten_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>statelisten_dds_entity_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_statelisten_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <!-- DDS_Listen mirrorport -->
+ <connection>
+ <name>statelisten_data_listener_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_statelisten_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>statelisten_status_port</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_statelisten_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="State_Connection_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="State_Connection_Test_Connector_ExecArtifact">
+ <name>State_Connection_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_SCT_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="State_Connection_Test_Connector_SvntArtifact">
+ <name>State_Connection_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_SCT_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="State_Connection_Test_Connector_StubArtifact">
+ <name>State_Connection_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_SCT_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl
new file mode 100755
index 00000000000..5d0ab35419d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/State_Connection_Test/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/Time_Conversion.mpc b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/Time_Conversion.mpc
new file mode 100644
index 00000000000..19cf287fe67
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/Time_Conversion.mpc
@@ -0,0 +1,9 @@
+// $Id$
+
+project(DDS_TimeConversion) : taoexe, dds4ccm_base {
+ includes += $(CIAO_ROOT)
+ exename = TimeConversion
+ Source_Files {
+ time_conversion.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/run_test.pl
new file mode 100755
index 00000000000..bd6bc129d77
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/run_test.pl
@@ -0,0 +1,25 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::TestTarget;
+
+my $program = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n";
+
+$PROG = $program->CreateProcess ("TimeConversion", "");
+$program_status = $PROG->Spawn ();
+
+if ($program_status != 0) {
+ print STDERR "ERROR: TimeConversion returned $program_status\n";
+ exit 1;
+}
+
+sleep ($program->ProcessStartWaitInterval());
+
+$program_status = $PROG->Kill ();
+
+exit 0;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/time_conversion.cpp b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/time_conversion.cpp
new file mode 100644
index 00000000000..338ad6e0d52
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TimeConversion/time_conversion.cpp
@@ -0,0 +1,86 @@
+// $Id$
+
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+#include "ace/OS_NS_sys_time.h"
+
+int
+ACE_TMAIN(int , ACE_TCHAR **)
+{
+ try
+ {
+ ::DDS::Time_t dds_time;
+ ACE_Time_Value ace_time = ACE_OS::gettimeofday ();
+
+ dds_time <<= ace_time;
+ if (dds_time.sec != ace_time.sec ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : TimeConversion - Conversion from "
+ "ACE_Time_Value to DDS::Time_t "
+ "seconds expected <%u> - seconds found <%u>\n",
+ ace_time.sec (), dds_time.sec));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "TimeConversion - Conversion from "
+ "ACE_Time_Value to DDS::Time_t "
+ "regarding seconds succeeded\n"));
+ }
+ if (dds_time.nanosec / 1000 != static_cast <CORBA::ULong>(ace_time.usec ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : TimeConversion - Conversion from "
+ "ACE_Time_Value to DDS::Time_t "
+ "micro seconds expected <%u> - micro seconds found <%u>\n",
+ ace_time.usec (), dds_time.nanosec/1000));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "TimeConversion - Conversion from "
+ "ACE_Time_Value to DDS::Time_t "
+ "regarding micro seconds succeeded\n"));
+ }
+
+ ::DDS::Time_t dds_now;
+ ACE_Time_Value ace_now = ACE_OS::gettimeofday ();
+ dds_now <<= ace_now;
+ //create real nanoseconds.
+ dds_now.nanosec = 1234567890;
+ ace_time <<= dds_now;
+
+ if (ace_time.sec () != dds_now.sec)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : TimeConversion - Conversion from "
+ "DDS::Time_t to ACE_Time_Value "
+ "seconds expected <%u> - seconds found <%u>\n",
+ dds_now.sec, ace_time.sec ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "TimeConversion - Conversion from "
+ "DDS::Time_t to ACE_Time_Value "
+ "regarding seconds succeeded\n"));
+ }
+ // The resolution of an ACE_Time_Value is less than the resolution of a
+ // DDS::Time_T. Therefor don't multiply ace_time.usec by 1000 but devide
+ // dds_time.nanosec by 1000.
+ if (static_cast<CORBA::ULong>(ace_time.usec ()) != dds_now.nanosec/1000)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR : TimeConversion - Conversion from "
+ "DDS::Time_t to ACE_Time_Value "
+ "nano seconds expected <%u> - nano seconds found <%u>\n",
+ dds_now.nanosec/1000, ace_time.usec ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "TimeConversion - Conversion from "
+ "DDS::Time_t to ACE_Time_Value "
+ "regarding nano seconds succeeded\n"));
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.idl
new file mode 100644
index 00000000000..431b831632b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file TwoTopics_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef TWOTOPICS_BASE_IDL
+#define TWOTOPICS_BASE_IDL
+
+#pragma ndds typesupport "Base/TwoTopics_BaseSupport.h"
+
+struct HelloTopic {
+ string hello; //@key
+ long iteration;
+};
+typedef sequence<HelloTopic> HelloTopicSeq;
+
+struct GoodbyeTopic {
+ string goodbye; //@key
+ long iteration;
+};
+typedef sequence<GoodbyeTopic> GoodbyeTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.mpc
new file mode 100755
index 00000000000..2046f252b05
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Base/TwoTopics_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_TwoTopics_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_TwoTopics_Base_stub
+ dynamicflags += TWOTOPICS_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=TWOTOPICS_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=TwoTopics_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ TwoTopics_Base.idl
+ }
+
+ opendds_ts_flags += --export=TWOTOPICS_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ TwoTopics_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.idl
new file mode 100644
index 00000000000..766783208bf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @file TwoTopics_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef TWOTOPICS_CONNECTOR_IDL_
+#define TWOTOPICS_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/TwoTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/TwoTopics_ConnectorE.idl"
+#pragma ndds typesupport "Base/TwoTopics_BaseSupport.h"
+
+module TT_Connector
+{
+ module ::CCM_DDS::Typed < HelloTopic, HelloTopicSeq> HelloConn;
+ connector TwoTopicsHello_Connector : HelloConn::DDS_Event
+ {
+ };
+
+ module ::CCM_DDS::Typed < GoodbyeTopic, GoodbyeTopicSeq> GoodbyeConn;
+ connector TwoTopicsGoodbye_Connector : GoodbyeConn::DDS_Event
+ {
+ };
+};
+
+#endif /* TWOTOPICS_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.mpc
new file mode 100755
index 00000000000..e5c8961f372
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopics/Connector/TwoTopics_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_TwoTopics_Base -l .. -o ../lib -u DDS TwoTopics_Connector"
+
+project(DDS_TwoTopics_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=TWOTOPICS_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=TwoTopics_Connector_stub_export.h \
+ -Wb,skel_export_macro=TWOTOPICS_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=TwoTopics_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=TWOTOPICS_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=TwoTopics_Connector_svnt_export.h \
+ -Wb,conn_export_macro=TWOTOPICS_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=TwoTopics_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ TwoTopics_Connector.idl
+ }
+}
+
+project(DDS_TwoTopics_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_TwoTopics_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=TWOTOPICS_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=TwoTopics_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ TwoTopics_ConnectorE.idl
+ }
+}
+
+project(DDS_TwoTopics_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_TwoTopics_Connector_lem_gen DDS_TwoTopics_Connector_stub DDS_TwoTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_TwoTopics_Base_stub DDS_TwoTopics_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_TwoTopics_Connector_lem_stub
+ dynamicflags = TWOTOPICS_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ TwoTopics_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ TwoTopics_ConnectorEC.h
+ TwoTopics_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ TwoTopics_ConnectorEC.inl
+ }
+}
+
+project(DDS_TwoTopics_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_TwoTopics_Connector_idl_gen DDS_TwoTopics_Base_stub
+ libs += DDS_TwoTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_TwoTopics_Connector_stub
+ dynamicflags = TWOTOPICS_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ TwoTopics_ConnectorC.cpp
+ }
+
+ Header_Files {
+ TwoTopics_ConnectorC.h
+ TwoTopics_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ TwoTopics_ConnectorC.inl
+ }
+}
+
+project(DDS_TwoTopics_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_TwoTopics_Connector_lem_stub DDS_TwoTopics_Connector_stub DDS4CCM_lem_stub DDS_TwoTopics_Base_stub
+ sharedname = DDS_TwoTopics_Connector_exec
+ libs += DDS_TwoTopics_Connector_stub DDS_TwoTopics_Connector_lem_stub DDS_TwoTopics_Base_stub DDS4CCM_lem_stub DDS_TwoTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = TWOTOPICS_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ TwoTopics_Connector_conn.cpp
+ }
+
+ Header_Files {
+ TwoTopics_Connector_conn.h
+ TwoTopics_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_TwoTopics_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_TwoTopics_Connector_lem_stub DDS_TwoTopics_Connector_exec DDS_TwoTopics_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_TwoTopics_Connector_svnt
+ libs += DDS_TwoTopics_Connector_stub \
+ DDS_TwoTopics_Connector_lem_stub \
+ DDS_TwoTopics_Base_stub \
+ DDS_TwoTopics_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = TWOTOPICS_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ TwoTopics_ConnectorS.cpp
+ TwoTopics_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ TwoTopics_ConnectorS.h
+ TwoTopics_Connector_svnt.h
+ TwoTopics_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ TwoTopics_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.idl
new file mode 100644
index 00000000000..e873178dd86
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.idl
@@ -0,0 +1,66 @@
+// $Id$
+
+/**
+ * @file Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef CONNECTOR_IDL_
+#define CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Hello/HelloGoodbye.idl"
+#include "Goodbye/HelloGoodbye.idl"
+
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/ConnectorE.idl"
+#pragma ndds typesupport "Hello/HelloGoodbyeSupport.h"
+#pragma ndds typesupport "Goodbye/HelloGoodbyeSupport.h"
+
+module Hello
+{
+ // Hello connector
+ module ::CCM_DDS::Typed < HelloGoodbye, HelloGoodbyeSeq> HelloConn;
+ connector Hello_Connector : HelloConn::DDS_Event
+ {
+ };
+};
+
+module Goodbye
+{
+ // Goodbye connector
+ module ::CCM_DDS::Typed < HelloGoodbye, HelloGoodbyeSeq> GoodbyeConn;
+ connector Goodbye_Connector : GoodbyeConn::DDS_Event
+ {
+ };
+};
+
+module HelloGoodbye
+{
+ // Hello connector
+ module ::CCM_DDS::Typed < ::Hello::HelloGoodbye, ::Hello::HelloGoodbyeSeq> HelloConn;
+ connector Hello_Connector : HelloConn::DDS_Event
+ {
+ };
+
+ // Goodbye connector
+ module ::CCM_DDS::Typed < ::Goodbye::HelloGoodbye, ::Goodbye::HelloGoodbyeSeq> GoodbyeConn;
+ connector Goodbye_Connector : GoodbyeConn::DDS_Event
+ {
+ };
+};
+
+// Hello connector
+module ::CCM_DDS::Typed < ::Hello::HelloGoodbye, ::Hello::HelloGoodbyeSeq> HelloConn;
+connector Hello_Connector : HelloConn::DDS_Event
+{
+};
+
+// Goodbye connector
+module ::CCM_DDS::Typed < ::Goodbye::HelloGoodbye, ::Goodbye::HelloGoodbyeSeq> GoodbyeConn;
+connector Goodbye_Connector : GoodbyeConn::DDS_Event
+{
+};
+
+#endif /* CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.mpc
new file mode 100644
index 00000000000..38666186695
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Connector/Connector.mpc
@@ -0,0 +1,158 @@
+// $Id$
+
+project(DDS_TTDN_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ requires += dummy_label
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=TWOTOPICSDIFFERENTNS_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Connector_stub_export.h \
+ -Wb,skel_export_macro=TWOTOPICSDIFFERENTNS_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Connector_svnt_export.h \
+ -Wb,svnt_export_macro=TWOTOPICSDIFFERENTNS_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Connector_svnt_export.h \
+ -Wb,conn_export_macro=TWOTOPICSDIFFERENTNS_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Connector.idl
+ }
+}
+
+project(DDS_TTDN_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ requires += dummy_label
+ custom_only = 1
+ after += DDS_TTDN_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=TWOTOPICSDIFFERENTNS_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ ConnectorE.idl
+ }
+}
+
+project(DDS_TTDN_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ requires += dummy_label
+ after += DDS_TTDN_Connector_lem_gen DDS_TTDN_Connector_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub \
+ DDS4CCM_lem_stub
+ libs += DDS_Connector_stub DDS4CCM_lem_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector_lem_stub
+ dynamicflags = TWOTOPICSDIFFERENTNS_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorEC.cpp
+ }
+
+ Header_Files {
+ ConnectorEC.h
+ Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ ConnectorEC.inl
+ }
+}
+
+project(DDS_TTDN_Connector_stub) : ccm_stub, dds4ccm_base {
+ requires += dummy_label
+ after += DDS_TTDN_Connector_idl_gen \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub
+ libs += DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Connector_stub
+ dynamicflags = TWOTOPICSDIFFERENTNS_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorC.cpp
+ }
+
+ Header_Files {
+ ConnectorC.h
+ Connector_stub_export.h
+ }
+
+ Inline_Files {
+ ConnectorC.inl
+ }
+}
+
+project(DDS_TTDN_Connector_exec) : ciao_executor, dds4ccm_impl {
+ requires += dummy_label
+ after += DDS_TTDN_Connector_lem_stub DDS_TTDN_Connector_stub DDS4CCM_lem_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub
+ libs += DDS_Connector_stub DDS_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub
+ sharedname = DDS_Connector_exec
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = TWOTOPICSDIFFERENTNS_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Connector_conn.cpp
+ }
+
+ Header_Files {
+ Connector_conn.h
+ Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_TTDN_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ requires += dummy_label
+ after += DDS_TTDN_Connector_lem_stub DDS_TTDN_Connector_exec \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub \
+ DDS_TTDN_Connector_stub DDS4CCM_lem_stub
+ libs += DDS_Connector_stub \
+ DDS_Connector_lem_stub \
+ DDS_Goodbye_Namespace_Base_stub DDS_Hello_Namespace_Base_stub \
+ DDS_Connector_exec \
+ DDS4CCM_lem_stub
+ sharedname = DDS_Connector_svnt
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = TWOTOPICSDIFFERENTNS_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ConnectorS.cpp
+ Connector_svnt.cpp
+ }
+
+ Header_Files {
+ ConnectorS.h
+ Connector_svnt.h
+ Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ ConnectorS.inl
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.idl b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.idl
new file mode 100644
index 00000000000..1db39cdf666
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+/**
+ * @file HelloGoodbye.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef GOODBYE_IDL_
+#define GOODBYE_IDL_
+
+module Goodbye
+{
+ struct HelloGoodbye {
+ string goodbye; //@key
+ long iteration;
+ };
+ typedef sequence<HelloGoodbye> HelloGoodbyeSeq;
+};
+
+#endif /* GOODBYE_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.mpc b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.mpc
new file mode 100644
index 00000000000..b4c18b66c2d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Goodbye/HelloGoodbye.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Goodbye_Namespace_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Goodbye_Namespace_Base_stub
+ dynamicflags += GOODBYE_NAMESPACE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=GOODBYE_NAMESPACE_STUB_Export \
+ -Wb,stub_export_include=Goodbye_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ HelloGoodbye.idl
+ }
+
+ opendds_ts_flags += --export=GOODBYE_NAMESPACE_STUB_Export
+
+ DDSGenerator_Files {
+ HelloGoodbye.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.idl b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.idl
new file mode 100644
index 00000000000..ca1336f2f29
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file HelloGoodbye.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef HELLO_IDL_
+#define HELLO_IDL_
+
+module Hello
+{
+ struct HelloGoodbye {
+ string hello; //@key
+ long iteration;
+ };
+ typedef sequence<HelloGoodbye> HelloGoodbyeSeq;
+};
+
+
+#endif /* HELLO_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.mpc b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.mpc
new file mode 100644
index 00000000000..7bfd2ea596a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/TwoTopicsDifferentNs/Hello/HelloGoodbye.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Hello_Namespace_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Hello_Namespace_Base_stub
+ dynamicflags += HELLO_NAMESPACE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=HELLO_NAMESPACE_STUB_Export \
+ -Wb,stub_export_include=Hello_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ HelloGoodbye.idl
+ }
+
+ opendds_ts_flags += --export=HELLO_NAMESPACE_STUB_Export
+
+ DDSGenerator_Files {
+ HelloGoodbye.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl
new file mode 100644
index 00000000000..03b2b1d664b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file Unkeyed_Test_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef UNKEYED_TEST_BASE_IDL
+#define UNKEYED_TEST_BASE_IDL
+
+#pragma ndds typesupport "Base/Unkeyed_Test_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "UnkeyedTest"
+#pragma DCPS_DATA_KEY "UnkeyedTest key"
+
+struct UnkeyedTest {
+ string key;
+ long iteration;
+};
+
+typedef sequence<UnkeyedTest> UnkeyedTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc
new file mode 100644
index 00000000000..51a38f0973b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Base/Unkeyed_Test_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Unkeyed_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Unkeyed_Test_Base_stub
+ dynamicflags += UNKEYED_TEST_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=UNKEYED_TEST_BASE_STUB_Export \
+ -Wb,stub_export_include=Unkeyed_Test_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Unkeyed_Test_Base.idl
+ }
+
+ opendds_ts_flags += --export=UNKEYED_TEST_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Unkeyed_Test_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl
new file mode 100644
index 00000000000..d59543e6501
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Unkeyed_Test_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef UNKEYED_TEST_CONNECTOR_IDL_
+#define UNKEYED_TEST_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Unkeyed_Test_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Unkeyed_Test_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::UnkeyedTest, ::UnkeyedTestSeq> UnkeyedTest;
+};
+
+module Unkeyed_Test
+{
+ connector Unkeyed_Test_Connector : ::CCM_DDS::UnkeyedTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Unkeyed_Test_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc
new file mode 100644
index 00000000000..1953801f39b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Connector/Unkeyed_Test_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Unkeyed_Test_Base -l .. -o ../lib -u DDS Unkeyed_Test_Connector"
+
+project(DDS_Unkeyed_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=UNKEYED_TEST_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Unkeyed_Test_Connector_stub_export.h \
+ -Wb,skel_export_macro=UNKEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Unkeyed_Test_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=UNKEYED_TEST_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Unkeyed_Test_Connector_svnt_export.h \
+ -Wb,conn_export_macro=UNKEYED_TEST_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Unkeyed_Test_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Unkeyed_Test_Connector.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Unkeyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=UNKEYED_TEST_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Unkeyed_Test_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Unkeyed_Test_ConnectorE.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Connector_lem_gen DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Unkeyed_Test_Connector_lem_stub
+ dynamicflags = UNKEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ConnectorEC.h
+ Unkeyed_Test_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ConnectorEC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Connector_idl_gen DDS_Unkeyed_Test_Base_stub
+ libs += DDS_Unkeyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Unkeyed_Test_Connector_stub
+ dynamicflags = UNKEYED_TEST_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ConnectorC.h
+ Unkeyed_Test_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ConnectorC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub DDS_Unkeyed_Test_Base_stub
+ sharedname = DDS_Unkeyed_Test_Connector_exec
+ libs += DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub DDS_Unkeyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = UNKEYED_TEST_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_Connector_conn.h
+ Unkeyed_Test_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Unkeyed_Test_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_exec DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Unkeyed_Test_Connector_svnt
+ libs += DDS_Unkeyed_Test_Connector_stub \
+ DDS_Unkeyed_Test_Connector_lem_stub \
+ DDS_Unkeyed_Test_Base_stub \
+ DDS_Unkeyed_Test_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = UNKEYED_TEST_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ConnectorS.cpp
+ Unkeyed_Test_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ConnectorS.h
+ Unkeyed_Test_Connector_svnt.h
+ Unkeyed_Test_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README
new file mode 100644
index 00000000000..c7b52e154a0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/README
@@ -0,0 +1,6 @@
+# $Id$
+
+UnkeyedSamples consists of a Sender and a Receiver.
+The Sender writes samples unkeyed; the Receiver should
+receive the same number of samples. An error is printed
+when this isn't the case. \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl
new file mode 100644
index 00000000000..1729bbe238f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Unkeyed_Test_Connector.idl"
+
+module Unkeyed_Test
+{
+ component Receiver
+ {
+ port CCM_DDS::UnkeyedTest::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener info_out_connector_status;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc
new file mode 100644
index 00000000000..3828155ff07
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_Unkeyed_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_Unkeyed_Test_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Unkeyed_Test_Receiver.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Unkeyed_Test_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Unkeyed_Test_ReceiverE.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Receiver_lem_gen DDS_Unkeyed_Test_Receiver_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub
+ libs += Receiver_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ReceiverEC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Receiver_idl_gen DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_lem_gen
+ libs += DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ReceiverC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Receiver_lem_stub DDS_Unkeyed_Test_Receiver_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Unkeyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Receiver_exec DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt Receiver_exec DDS_Unkeyed_Test_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_ReceiverS.cpp
+ Unkeyed_Test_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_ReceiverS.h
+ Unkeyed_Test_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp
new file mode 100644
index 00000000000..6fc273d1eae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.cpp
@@ -0,0 +1,224 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Unkeyed_Test_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+
+namespace CIAO_Unkeyed_Test_Receiver_Impl
+{
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i ()
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /* the_topic */,
+ const DDS::InconsistentTopicStatus & /* status */)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_inconsistent_topic\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_requested_incompatible_qos\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_sample_rejected\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_deadline_missed\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_offered_incompatible_qos\n")));
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr /*the_entity*/,
+ ::DDS::StatusKind /*status_kind*/)
+ {
+ ACE_ERROR ((LM_DEBUG, ACE_TEXT ("Receiver: ")
+ ACE_TEXT ("ConnectorStatusListener_exec_i::on_unexpected_status\n")));
+ }
+
+ //============================================================
+ // Facet Executor Implementation Class: UnkeyedTest_Listener_exec_i
+ //============================================================
+
+ UnkeyedTest_Listener_exec_i::UnkeyedTest_Listener_exec_i (Atomic_ULong &received)
+ : received_ (received)
+ {
+ }
+
+ UnkeyedTest_Listener_exec_i::~UnkeyedTest_Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::UnkeyedTest_Listener
+
+ void
+ UnkeyedTest_Listener_exec_i::on_one_data (
+ const UnkeyedTest & an_instance ,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ ++this->received_;
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("UnkeyedTest_Listener: ")
+ ACE_TEXT ("received keyed_test_info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (info.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: UnkeyedTest_Listener::on_one_data: ")
+ ACE_TEXT ("received instance handle should be invalid ")
+ ACE_TEXT ("for unkeyed data ")
+ ACE_TEXT ("key <%C> - iteration <%u>\n"),
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ if (info.source_timestamp.sec == 0 &&
+ info.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: UnkeyedTest_Listener::on_one_data: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.iteration));
+ }
+ }
+
+ void
+ UnkeyedTest_Listener_exec_i::on_many_data (
+ const UnkeyedTestSeq & /* an_instance */,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iUnkeyedTest_Listener_exec_i ();
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (10),
+ received_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ // Port operations.
+ ::CCM_DDS::UnkeyedTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new UnkeyedTest RAW listener\n")));
+ return new UnkeyedTest_Listener_exec_i (this->received_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_info_out_connector_status (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new Connector Status Listener\n")));
+ return new ConnectorStatusListener_exec_i ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Unkeyed_Test::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ ACE_DEBUG ((LM_INFO, "Receiver_exec_i summary: received <%u>\n",
+ this->received_.value ()));
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Unkeyed_Test_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h
new file mode 100644
index 00000000000..426ca0a9428
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Receiver/Unkeyed_Test_Receiver_exec.h
@@ -0,0 +1,118 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Unkeyed_Test_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Unkeyed_Test_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong;
+
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i ();
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual void
+ on_inconsistent_topic( ::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual void
+ on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual void
+ on_sample_rejected( ::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual void
+ on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual void
+ on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual void on_unexpected_status( ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ };
+
+ class RECEIVER_EXEC_Export UnkeyedTest_Listener_exec_i
+ : public virtual ::CCM_DDS::UnkeyedTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ UnkeyedTest_Listener_exec_i (Atomic_ULong &);
+ virtual ~UnkeyedTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const UnkeyedTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const UnkeyedTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ULong &received_;
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Component attributes.
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ // Port operations.
+ virtual ::CCM_DDS::UnkeyedTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_info_out_connector_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Unkeyed_Test::CCM_Receiver_Context_var context_;
+ ::CCM_DDS::UnkeyedTest::Reader_var reader_;
+ ::CCM_DDS::UnkeyedTest::Getter_var getter_;
+
+ CORBA::UShort iterations_;
+ Atomic_ULong received_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Unkeyed_Test_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl
new file mode 100644
index 00000000000..a75a12c8e54
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_KEYED_TEST_SENDER_IDL
+#define DDS_KEYED_TEST_SENDER_IDL
+
+#include "Connector/Unkeyed_Test_Connector.idl"
+
+module Unkeyed_Test
+{
+ component Sender
+ {
+ port CCM_DDS::UnkeyedTest::DDS_Write info_write;
+ attribute unsigned short rate;
+ attribute unsigned short iterations;
+ attribute unsigned short keys;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc
new file mode 100644
index 00000000000..547001eafca
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Unkeyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Unkeyed_Test_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_Unkeyed_Test_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Unkeyed_Test_Sender.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Unkeyed_Test_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Unkeyed_Test_SenderE.idl
+ }
+}
+
+project(DDS_Unkeyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Sender_lem_gen DDS_Unkeyed_Test_Sender_stub DDS_Unkeyed_Test_Base_stub
+ libs += DDS_Unkeyed_Test_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_SenderEC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_SenderEC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Sender_idl_gen DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub
+ libs += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_SenderC.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_SenderC.inl
+ }
+}
+
+project(DDS_Unkeyed_Test_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Sender_lem_stub DDS_Unkeyed_Test_Sender_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Connector_lem_stub DDS_Unkeyed_Test_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Unkeyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Unkeyed_Test_Base_stub DDS_Unkeyed_Test_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_Unkeyed_Test_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Unkeyed_Test_Connector_stub DDS_Unkeyed_Test_Connector_svnt DDS_Unkeyed_Test_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Unkeyed_Test_SenderS.cpp
+ Unkeyed_Test_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Unkeyed_Test_SenderS.h
+ Unkeyed_Test_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Unkeyed_Test_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp
new file mode 100644
index 00000000000..780e4bf8350
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.cpp
@@ -0,0 +1,214 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Unkeyed_Test_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Unkeyed_Test_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iterations_ (10),
+ keys_ (5)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if (this->last_key != this->ktests_.end ())
+ {
+ try
+ {
+ ++this->last_key->second->iteration;
+ this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written key <%C> with <%d>\n"),
+ this->last_key->first.c_str (),
+ this->last_key->second->iteration));
+ }
+ catch (const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Key info for <%C> not updated: <%C> didn't exist.\n"),
+ this->last_key->first.c_str (), this->last_key->first.c_str ()));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error while updating key info for <%C>.\n"),
+ this->last_key->first.c_str ()));
+ }
+ ++this->last_key;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key = this->ktests_.begin ();
+ while (this->last_key != this->ktests_.end ())
+ {
+ if (this->last_key->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::UShort rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Unkeyed_Test::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->start ();
+
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ UnkeyedTest *new_key = new UnkeyedTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 0;
+
+ this->ktests_[key] = new_key;
+ }
+ this->last_key = this->ktests_.begin ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Unkeyed_Test_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h
new file mode 100644
index 00000000000..fb9d5a9bab8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/Sender/Unkeyed_Test_Sender_exec.h
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Unkeyed_Test_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Unkeyed_Test_Sender_Impl
+{
+ class Sender_exec_i;
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort rate (void);
+
+ virtual void rate (::CORBA::UShort rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ CCM_DDS::UnkeyedTest::Writer_var writer_;
+
+ pulse_Generator * ticker_;
+ ::Unkeyed_Test::CCM_Sender_Context_var context_;
+ CORBA::UShort rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, UnkeyedTest_var> Unkeyed_Test_Table;
+ Unkeyed_Test_Table ktests_;
+ Unkeyed_Test_Table::iterator last_key;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Unkeyed_Test_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp
new file mode 100644
index 00000000000..a8886179aec
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/Plan.cdp
@@ -0,0 +1,393 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Unkeyed_Test_Depl_1</label>
+ <UUID>Unkeyed_Test_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Unkeyed_Test_ConnectorComponentImplementation">
+ <name>Unkeyed_Test_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Unkeyed_Test_Connector_ExecArtifact" />
+ <artifact xmi:idref="Unkeyed_Test_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Unkeyed_Test_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Unkeyed_Test_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Unkeyed_Test_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Unkeyed_Test_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Unkeyed_Test_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <!-- Sender->keys * Sender->iterations -->
+ <ushort>30</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Unkeyed_Test_ConnectorComponentInstance">
+ <name>Unkeyed_Test_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Unkeyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Unkeyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Unkeyed_Test_ConnectorComponentInstance2">
+ <name>Unkeyed_Test_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Unkeyed_Test_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Unkeyed_Test</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>1</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>3</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Unkeyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_datacontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Unkeyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>info_out_connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Unkeyed_Test_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Unkeyed_Test_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Unkeyed_Test_Connector_ExecArtifact">
+ <name>Unkeyed_Test_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Unkeyed_Test_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Unkeyed_Test_Connector_SvntArtifact">
+ <name>Unkeyed_Test_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Unkeyed_Test_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Unkeyed_Test_Connector_StubArtifact">
+ <name>Unkeyed_Test_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Unkeyed_Test_Connector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl
new file mode 100755
index 00000000000..3ca8a0ee149
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedSamples/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl
new file mode 100644
index 00000000000..938b96c382d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file Writer_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_BASE_IDL
+#define WRITER_BASE_IDL
+
+#pragma ndds typesupport "Base/Writer_BaseSupport.h"
+
+typedef sequence<octet> OctetSeq;
+
+#pragma DCPS_DATA_TYPE "WriterTest"
+#pragma DCPS_DATA_KEY "WriterTest key"
+
+struct WriterTest {
+ string key;
+ long iteration;
+ OctetSeq data;
+};
+
+typedef sequence<WriterTest> WriterTestSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc
new file mode 100644
index 00000000000..014070bbbab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Base/Writer_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_UnkeyedWriterBase_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_UnkeyedWriterBase_stub
+ dynamicflags += WRITER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=WRITER_BASE_STUB_Export \
+ -Wb,stub_export_include=Writer_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Writer_Base.idl
+ }
+
+ opendds_ts_flags += --export=WRITER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Writer_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl
new file mode 100644
index 00000000000..a5894738606
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Writer_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef WRITER_CONNECTOR_IDL_
+#define WRITER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Writer_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Writer_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::WriterTest, ::WriterTestSeq> WriterTest;
+};
+
+module Writer
+{
+ connector Writer_Connector : ::CCM_DDS::WriterTest::DDS_Event
+ {
+ };
+};
+
+#endif /* Writer_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc
new file mode 100644
index 00000000000..302e2adb3b8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Connector/Writer_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_UnkeyedWriterBase -l .. -o ../lib -u DDS Writer_Connector"
+
+project(DDS_UnkeyedWriterConnector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_stub_export.h \
+ -Wb,skel_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Writer_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=WRITER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Writer_Connector_svnt_export.h \
+ -Wb,conn_export_macro=WRITER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Writer_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Connector.idl
+ }
+}
+
+project(DDS_UnkeyedWriterConnector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_UnkeyedWriterConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=WRITER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Writer_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Writer_ConnectorE.idl
+ }
+}
+
+project(DDS_UnkeyedWriterConnector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_UnkeyedWriterConnector_lem_gen DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub
+ libs += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_UnkeyedWriterConnector_lem_stub
+ dynamicflags = WRITER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorEC.h
+ Writer_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorEC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterConnector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_UnkeyedWriterConnector_idl_gen DDS_UnkeyedWriterBase_stub
+ libs += DDS_UnkeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_UnkeyedWriterConnector_stub
+ dynamicflags = WRITER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorC.h
+ Writer_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterConnector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub DDS_UnkeyedWriterBase_stub
+ sharedname = DDS_UnkeyedWriterConnector_exec
+ libs += DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub DDS_UnkeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Writer_Connector_conn.h
+ Writer_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_UnkeyedWriterConnector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_exec DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub
+ sharedname = DDS_UnkeyedWriterConnector_svnt
+ libs += DDS_UnkeyedWriterConnector_stub \
+ DDS_UnkeyedWriterConnector_lem_stub \
+ DDS_UnkeyedWriterBase_stub \
+ DDS_UnkeyedWriterConnector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = WRITER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ConnectorS.cpp
+ Writer_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ConnectorS.h
+ Writer_Connector_svnt.h
+ Writer_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl
new file mode 100644
index 00000000000..e42f3efc798
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Receiver
+ {
+ port CCM_DDS::WriterTest::DDS_Listen info_out;
+ attribute unsigned short iterations;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc
new file mode 100644
index 00000000000..8a3f6f0f12f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_UnkeyedWriterReceiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_UnkeyedWriterConnector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Writer_Receiver.idl
+ }
+}
+
+project(DDS_UnkeyedWriterReceiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_UnkeyedWriterReceiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Writer_ReceiverE.idl
+ }
+}
+
+project(DDS_UnkeyedWriterReceiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_UnkeyedWriterReceiver_lem_gen DDS_UnkeyedWriterReceiver_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub
+ libs += Receiver_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverEC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterReceiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_UnkeyedWriterReceiver_idl_gen DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_lem_gen
+ libs += DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterBase_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterReceiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_UnkeyedWriterReceiver_lem_stub DDS_UnkeyedWriterReceiver_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_UnkeyedWriterReceiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_UnkeyedWriterReceiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterReceiver_exec DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt Receiver_exec DDS_UnkeyedWriterConnector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_ReceiverS.cpp
+ Writer_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_ReceiverS.h
+ Writer_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp
new file mode 100644
index 00000000000..fd1e853f12a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.cpp
@@ -0,0 +1,157 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "Writer_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: WriterTest_Listener_exec_i
+ //============================================================
+
+ WriterTest_Listener_exec_i::WriterTest_Listener_exec_i (CORBA::UShort iterations)
+ : iterations_ (iterations)
+ {
+ }
+
+ WriterTest_Listener_exec_i::~WriterTest_Listener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::WriterTest_Listener
+
+ void
+ WriterTest_Listener_exec_i::on_one_data (
+ const WriterTest & an_instance ,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ACE_DEBUG ((LM_ERROR, ACE_TEXT ("WriterTest_Listener::on_one_data ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance.key.in (),
+ an_instance.iteration));
+ if (an_instance.iteration > this->iterations_)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: received iteration ")
+ ACE_TEXT ("greater than expected : ")
+ ACE_TEXT ("expected <%u> - received <%u>\n"),
+ an_instance.iteration, this->iterations_));
+ }
+ if (an_instance.iteration == 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: received iteration ")
+ ACE_TEXT ("is zero\n")));
+ }
+ }
+
+ void
+ WriterTest_Listener_exec_i::on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & /* info */)
+ {
+ for (unsigned int i = 0; i < an_instance.length (); ++i)
+ {
+ ACE_DEBUG ((LM_ERROR, ACE_TEXT ("WriterTest_Listener::on_many_data ")
+ ACE_TEXT ("received writer info for <%C> at %u\n"),
+ an_instance[i].key.in (),
+ an_instance[i].iteration));
+ }
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iKeyedTest_Listener_exec_i ();
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : iterations_ (15)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Port operations.
+ ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("new WriterTest RAW listener\n")));
+ return new WriterTest_Listener_exec_i (this->iterations_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return 0;
+ }
+
+ // Operations from Components::SessionComponent.
+ ::CORBA::UShort
+ Receiver_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Receiver_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var lc =
+ this->context_->get_connection_info_out_data_control ();
+
+ if (::CORBA::is_nil (lc.in ()))
+ {
+ ACE_ERROR ((LM_INFO, ACE_TEXT ("Error: Listener control receptacle is null!\n")));
+ throw CORBA::INTERNAL ();
+ }
+ lc->mode (::CCM_DDS::NOT_ENABLED);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h
new file mode 100644
index 00000000000..d1f941be18c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Receiver/Writer_Receiver_exec.h
@@ -0,0 +1,82 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Writer_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Writer_Receiver_Impl
+{
+ class RECEIVER_EXEC_Export WriterTest_Listener_exec_i
+ : public virtual ::CCM_DDS::WriterTest::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ WriterTest_Listener_exec_i (CORBA::UShort iterations);
+ virtual ~WriterTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const WriterTest & an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const WriterTestSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ CORBA::UShort iterations_;
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Component attributes.
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ // Port operations.
+ virtual ::CCM_DDS::WriterTest::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Writer::CCM_Receiver_Context_var context_;
+ CORBA::UShort iterations_;
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl
new file mode 100644
index 00000000000..eebc31419e2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marcel Smit <msmit@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_KEYED_TEST_SENDER_IDL
+#define DDS_KEYED_TEST_SENDER_IDL
+
+#include "Connector/Writer_Connector.idl"
+
+module Writer
+{
+ component Sender
+ {
+ port CCM_DDS::WriterTest::DDS_Write info_write;
+ attribute unsigned short rate;
+ attribute unsigned short iterations;
+ attribute unsigned short keys;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc
new file mode 100644
index 00000000000..643847c1268
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_UnkeyedWriterBase -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_UnkeyedWriterSender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_UnkeyedWriterConnector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Writer_Sender.idl
+ }
+}
+
+project(DDS_UnkeyedWriterSender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_UnkeyedWriterSender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Writer_SenderE.idl
+ }
+}
+
+project(DDS_UnkeyedWriterSender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_UnkeyedWriterSender_lem_gen DDS_UnkeyedWriterSender_stub DDS_UnkeyedWriterBase_stub
+ libs += DDS_UnkeyedWriterBase_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderEC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderEC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterSender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_UnkeyedWriterSender_idl_gen DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub
+ libs += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderC.cpp
+ }
+
+ Header_Files {
+ Writer_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderC.inl
+ }
+}
+
+project(DDS_UnkeyedWriterSender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_UnkeyedWriterSender_lem_stub DDS_UnkeyedWriterSender_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterConnector_lem_stub DDS_UnkeyedWriterConnector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Writer_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_UnkeyedWriterSender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_UnkeyedWriterBase_stub DDS_UnkeyedWriterSender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterConnector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_UnkeyedWriterBase_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_UnkeyedWriterConnector_stub DDS_UnkeyedWriterConnector_svnt DDS_UnkeyedWriterConnector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Writer_SenderS.cpp
+ Writer_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Writer_SenderS.h
+ Writer_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Writer_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp
new file mode 100644
index 00000000000..3933929dcef
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.cpp
@@ -0,0 +1,334 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Writer_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Writer_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : rate_ (1),
+ iterations_ (15),
+ keys_ (5),
+ assignment_ (WRITE_UNKEYED)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::reset_iterations ()
+ {
+ for (Writer_Table::iterator i = this->ktests_.begin ();
+ i != this->ktests_.end ();
+ ++i)
+ {
+ i->second->iteration = 0;
+ }
+ }
+
+ void
+ Sender_exec_i::start_new_assignment (WRITER_ASSIGNMENT assignment)
+ {
+ this->last_key = this->ktests_.begin ();
+ this->assignment_ = assignment;
+ reset_iterations ();
+ }
+
+ void
+ Sender_exec_i::write_unkeyed ()
+ {
+ if (this->last_key != this->ktests_.end ())
+ {
+ try
+ {
+ ++this->last_key->second->iteration;
+ OctetSeq_var reply_mesg = new OctetSeq (1);
+ reply_mesg->length (1);
+ this->last_key->second->data = *reply_mesg._retn ();
+ this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Written keyed <%C> - iteration <%d>\n"),
+ this->last_key->first.c_str (),
+ this->last_key->second->iteration));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while updating writer info for <%C>.\n"),
+ this->last_key->first.c_str ()));
+ }
+ ++this->last_key;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key = this->ktests_.begin ();
+ while (this->last_key != this->ktests_.end ())
+ {
+ if (this->last_key->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key == this->ktests_.end ())
+ {
+ start_new_assignment (WRITE_MULTI);
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::write_many ()
+ {
+ CORBA::ULong nr_samples = this->keys_ * this->iterations_;
+ WriterTestSeq write_many_no_excep;
+ write_many_no_excep.length (nr_samples);
+ //write with no exception
+ for (CORBA::ULong i = 1; i < nr_samples - 1; ++i)
+ {
+ WriterTest new_key;
+ new_key.key = CORBA::string_dup("KEY_1");
+ new_key.iteration = i;
+ OctetSeq_var reply_mesg = new OctetSeq (1);
+ reply_mesg->length (1);
+ new_key.data = *reply_mesg._retn ();
+ write_many_no_excep[i-1] = new_key;
+ }
+ try
+ {
+ this->writer_->write_many (write_many_no_excep);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("write_many : written <%u> samples\n"),
+ write_many_no_excep.length ()));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("while write many writer info: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ }
+ start_new_assignment (TEST_EXCEPTION);
+ }
+
+ void
+ Sender_exec_i::test_exception ()
+ {
+ if (this->last_key != this->ktests_.end ())
+ {
+ try
+ {
+ ++this->last_key->second->iteration;
+ const long length = 100000;
+ OctetSeq_var reply_mesg =
+ new OctetSeq (length);
+ reply_mesg->length (length);
+ this->last_key->second->data = *reply_mesg._retn ();
+ this->writer_->write_one (this->last_key->second, ::DDS::HANDLE_NIL);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: No InternalError ")
+ ACE_TEXT ("caught while writing a large amount of data.\n")));
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::test_exception: ")
+ ACE_TEXT ("OK: Expected InternalErr received\n")));
+ }
+ ++this->last_key;
+ }
+ else
+ {
+ //onto the next iteration
+ this->last_key = this->ktests_.begin ();
+ while (this->last_key != this->ktests_.end ())
+ {
+ if (this->last_key->second->iteration == this->iterations_)
+ {
+ //next key
+ ++this->last_key;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if (this->last_key == this->ktests_.end ())
+ {
+ start_new_assignment (WRITE_NONE);
+ }
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ switch (this->assignment_)
+ {
+ case WRITE_UNKEYED:
+ write_unkeyed ();
+ break;
+ case WRITE_MULTI:
+ write_many ();
+ break;
+ case TEST_EXCEPTION:
+ test_exception ();
+ break;
+ default:
+ break;
+ }
+ }
+
+ void
+ Sender_exec_i::start (void)
+ {
+ // calculate the interval time
+ long usec = 1000000 / this->rate_;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::rate (void)
+ {
+ return this->rate_;
+ }
+
+ void
+ Sender_exec_i::rate (::CORBA::UShort rate)
+ {
+ this->rate_ = rate;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::iterations (void)
+ {
+ return this->iterations_;
+ }
+
+ void
+ Sender_exec_i::iterations (::CORBA::UShort iterations)
+ {
+ this->iterations_ = iterations;
+ }
+
+ ::CORBA::UShort
+ Sender_exec_i::keys (void)
+ {
+ return this->keys_;
+ }
+
+ void
+ Sender_exec_i::keys (::CORBA::UShort keys)
+ {
+ this->keys_ = keys;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Writer::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->writer_ = this->context_->get_connection_info_write_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
+ this->mutex_, CORBA::INTERNAL ());
+
+ for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
+ {
+ char key[7];
+ WriterTest *new_key = new WriterTest;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key->key = CORBA::string_dup(key);
+ new_key->iteration = 1;
+
+ this->ktests_[key] = new_key;
+ }
+ this->start ();
+ this->last_key = this->ktests_.begin ();
+ reset_iterations ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h
new file mode 100644
index 00000000000..ead020fedfe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/Sender/Writer_Sender_exec.h
@@ -0,0 +1,106 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "Writer_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Writer_Sender_Impl
+{
+ class Sender_exec_i;
+
+ enum WRITER_ASSIGNMENT {
+ WRITE_NONE,
+ WRITE_UNKEYED,
+ WRITE_MULTI,
+ TEST_EXCEPTION
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual ::CORBA::UShort rate (void);
+
+ virtual void rate (::CORBA::UShort rate);
+
+ virtual ::CORBA::UShort iterations (void);
+
+ virtual void iterations (::CORBA::UShort iterations);
+
+ virtual ::CORBA::UShort keys (void);
+
+ virtual void keys (::CORBA::UShort keys);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ void tick ();
+
+ private:
+ void start (void);
+ void stop (void);
+
+ CCM_DDS::WriterTest::Writer_var writer_;
+
+ pulse_Generator * ticker_;
+ ::Writer::CCM_Sender_Context_var context_;
+ CORBA::UShort rate_;
+ CORBA::UShort iterations_;
+ CORBA::UShort keys_;
+ WRITER_ASSIGNMENT assignment_;
+
+ void reset_iterations ();
+ void start_new_assignment (
+ WRITER_ASSIGNMENT assignment);
+ void write_unkeyed ();
+ void write_many ();
+ void test_exception ();
+
+ TAO_SYNCH_MUTEX mutex_;
+ typedef std::map<ACE_CString, WriterTest_var> Writer_Table;
+ Writer_Table ktests_;
+
+ Writer_Table::iterator last_key;
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Writer_Sender_Impl (void);
+}
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp
new file mode 100644
index 00000000000..88c24d90338
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/Plan.cdp
@@ -0,0 +1,396 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>UnkeyedWriter_Depl_1</label>
+ <UUID>UnkeyedWriter_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Writer_ConnectorComponentImplementation">
+ <name>Writer_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Writer_Connector_ExecArtifact" />
+ <artifact xmi:idref="Writer_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Writer_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Writer_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Writer_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <!-- should be equal to iterations in
+ Sender component -->
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance">
+ <name>Writer_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>UnkeyedWriter</string>
+ </value>
+ </value>
+ </configProperty>
+ <!--configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>UnkeyedWriter_Library#UnkeyedWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty-->
+</instance>
+ <instance xmi:id="Writer_ConnectorComponentInstance2">
+ <name>Writer_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Writer_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>UnkeyedWriter</string>
+ </value>
+ </value>
+ </configProperty>
+ <!--configProperty>
+ <name>qos_profile</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>UnkeyedWriter_Library#UnkeyedWriter_Profile</string>
+ </value>
+ </value>
+ </configProperty-->
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ <configProperty>
+ <name>rate</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>15</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>keys</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>5</ushort>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>iterations</name>
+ <value>
+ <type>
+ <kind>tk_ushort</kind>
+ </type>
+ <value>
+ <ushort>10</ushort>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>_listener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>_datacontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>writer_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Writer_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_ExecArtifact">
+ <name>Writer_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_UnkeyedWriterConnector_exec</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_SvntArtifact">
+ <name>Writer_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_UnkeyedWriterConnector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Writer_Connector_StubArtifact">
+ <name>Writer_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_UnkeyedWriterConnector_stub</location>
+ </artifact>
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl
new file mode 100755
index 00000000000..58d28e2d477
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/UnkeyedWriter/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (70);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl
new file mode 100644
index 00000000000..aac765bc8dd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file Updater_Base.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef UPDATER_BASE_IDL
+#define UPDATER_BASE_IDL
+
+#pragma ndds typesupport "Base/Updater_BaseSupport.h"
+
+#pragma DCPS_DATA_TYPE "TestTopic"
+#pragma DCPS_DATA_KEY "TestTopic key"
+
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+typedef sequence<TestTopic> TestTopicSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc
new file mode 100644
index 00000000000..97490cd2c74
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Base/Updater_Base.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project (DDS_Updater_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default {
+ sharedname = DDS_Updater_Base_stub
+ dynamicflags += UPDATER_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS -Sci \
+ -Wb,stub_export_macro=UPDATER_BASE_STUB_Export \
+ -Wb,stub_export_include=Updater_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ Updater_Base.idl
+ }
+
+ opendds_ts_flags += --export=UPDATER_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ Updater_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl
new file mode 100644
index 00000000000..1e93838fe70
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file Updater_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef UPDATER_CONNECTOR_IDL_
+#define UPDATER_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/Updater_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/Updater_ConnectorE.idl"
+
+module CCM_DDS
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopic;
+};
+
+module Updater
+{
+ connector Updater_Connector : ::CCM_DDS::TestTopic::DDS_State
+ {
+ };
+};
+
+#endif /* UPDATER_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc
new file mode 100644
index 00000000000..af19013fa69
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Connector/Updater_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Updater_Base -l .. -o ../lib -u DDS Updater_Connector"
+
+project(DDS_UPDATER_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=UPDATER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Updater_Connector_stub_export.h \
+ -Wb,skel_export_macro=UPDATER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Updater_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=UPDATER_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=Updater_Connector_svnt_export.h \
+ -Wb,conn_export_macro=UPDATER_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=Updater_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ Updater_Connector.idl
+ }
+}
+
+project(DDS_UPDATER_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_UPDATER_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=UPDATER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Updater_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ Updater_ConnectorE.idl
+ }
+}
+
+project(DDS_UPDATER_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_UPDATER_Connector_lem_gen DDS_Updater_Connector_stub DDS_Updater_Base_stub DDS4CCM_lem_stub
+ libs += DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_UPDATER_Connector_lem_stub
+ dynamicflags = UPDATER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Updater_ConnectorEC.h
+ Updater_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_ConnectorEC.inl
+ }
+}
+
+project(DDS_Updater_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_UPDATER_Connector_idl_gen DDS_Updater_Base_stub
+ libs += DDS_Updater_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_Updater_Connector_stub
+ dynamicflags = UPDATER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Updater_ConnectorC.h
+ Updater_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_ConnectorC.inl
+ }
+}
+
+project(DDS_Updater_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub DDS_Updater_Base_stub
+ sharedname = DDS_Updater_Connector_exec
+ libs += DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Base_stub DDS4CCM_lem_stub DDS_Updater_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = UPDATER_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_Connector_conn.cpp
+ }
+
+ Header_Files {
+ Updater_Connector_conn.h
+ Updater_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Updater_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_exec DDS_Updater_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_Updater_Connector_svnt
+ libs += DDS_Updater_Connector_stub \
+ DDS_UPDATER_Connector_lem_stub \
+ DDS_Updater_Base_stub \
+ DDS_Updater_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = UPDATER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ConnectorS.cpp
+ Updater_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Updater_ConnectorS.h
+ Updater_Connector_svnt.h
+ Updater_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Updater_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl
new file mode 100644
index 00000000000..1a819121236
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/Updater_Connector.idl"
+
+module Updater
+{
+ component Receiver
+ {
+ port CCM_DDS::TestTopic::DDS_Listen info_out;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc
new file mode 100644
index 00000000000..0a1c0c1ae8b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver.mpc
@@ -0,0 +1,138 @@
+// $Id$
+
+project(DDS_Updater_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_UPDATER_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ Updater_Receiver.idl
+ }
+}
+
+project(DDS_Updater_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Updater_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ Updater_ReceiverE.idl
+ }
+}
+
+project(DDS_UPDATER_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Updater_Receiver_lem_gen DDS_Updater_Receiver_stub DDS_Updater_Connector_stub DDS_Updater_Base_stub
+ libs += Receiver_stub DDS_Updater_Connector_stub DDS_Updater_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ Updater_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_ReceiverEC.inl
+ }
+}
+
+project(DDS_Updater_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Updater_Receiver_idl_gen DDS_Updater_Connector_stub DDS_Updater_Base_stub DDS_UPDATER_Connector_lem_gen
+ libs += DDS_Updater_Connector_stub DDS_Updater_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ReceiverC.cpp
+ }
+
+ Header_Files {
+ Updater_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_ReceiverC.inl
+ }
+}
+
+project(DDS_Updater_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_UPDATER_Receiver_lem_stub DDS_Updater_Receiver_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Updater_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Updater_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_UPDATER_Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_Updater_Receiver_exec DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_Updater_Base_stub DDS_Updater_Connector_stub DDS_Updater_Connector_svnt Receiver_exec DDS_UPDATER_Connector_lem_stub DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_ReceiverS.cpp
+ Updater_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Updater_ReceiverS.h
+ Updater_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ Updater_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp
new file mode 100644
index 00000000000..5402c553baf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.cpp
@@ -0,0 +1,185 @@
+// -*- C++ -*-
+// $Id$
+
+// Test for UPDATER
+
+#include "Updater_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/OS_NS_time.h"
+#include "dds4ccm/impl/dds/Utils.h"
+#include "dds4ccm/impl/dds/TimeUtilities.h"
+
+#include "dds4ccm/impl/dds4ccm_conf.h"
+
+namespace CIAO_Updater_Receiver_Impl
+{
+ //============================================================
+ // ListenOneByOneTest_Listener_exec_i
+ //============================================================
+ ListenOneByOneTest_Listener_exec_i::ListenOneByOneTest_Listener_exec_i (
+ Atomic_ThreadId &thread_id)
+ : thread_id_ (thread_id)
+ {
+ }
+
+ ListenOneByOneTest_Listener_exec_i::~ListenOneByOneTest_Listener_exec_i (void)
+ {
+ }
+
+ void
+ ListenOneByOneTest_Listener_exec_i::on_one_data (
+ const TestTopic & an_instance,
+ const ::CCM_DDS::ReadInfo & info)
+ {
+ this->thread_id_ = ACE_Thread::self ();
+ ACE_DEBUG ((LM_DEBUG, "ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.x));
+ if (!info.instance_handle.isValid)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "instance handle seems to be invalid "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.x));
+ }
+ if (info.source_timestamp.sec == 0 &&
+ info.source_timestamp.nanosec == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ListenOneByOneTest_Listener_exec_i::on_one_data: "
+ "source timestamp seems to be invalid (nil) "
+ "key <%C> - iteration <%d>\n",
+ an_instance.key.in (),
+ an_instance.x));
+ }
+ }
+
+ void
+ ListenOneByOneTest_Listener_exec_i::on_many_data (
+ const TestTopicSeq & ,
+ const ::CCM_DDS::ReadInfoSeq & )
+ {
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : thread_id_listener_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Port operations.
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return ::CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return new ListenOneByOneTest_Listener_exec_i (
+ this->thread_id_listener_);
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Updater::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::DataListenerControl_var dlc =
+ this->context_->get_connection_info_out_data_control ();
+ dlc->mode (::CCM_DDS::ONE_BY_ONE);
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if (this->thread_id_listener_.value () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: "
+ "Thread ID for ReaderListener not set!\n"));
+ }
+ #if (CIAO_DDS4CCM_CONTEXT_SWITCH == 1)
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: "
+ "Thread switch for ReaderListener seems OK. "
+ "(DDS uses the CCM thread for its callback) "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: "
+ "Thread switch for ReaderListener "
+ "doesn't seem to work! "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #else
+ else if (ACE_OS::thr_equal (this->thread_id_listener_.value (),
+ ACE_Thread::self ()))
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: ONE_BY_ONE: ReaderListener: "
+ "DDS seems to use a CCM thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "ONE_BY_ONE: ReaderListener: "
+ "DDS seems to use its own thread for its callback: "
+ "listener <%u> - component <%u>\n",
+ this->thread_id_listener_.value (),
+ ACE_Thread::self ()));
+ }
+ #endif
+
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Updater_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h
new file mode 100644
index 00000000000..3d7dfb09a7d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Receiver/Updater_Receiver_exec.h
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "Updater_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/OS_NS_Thread.h"
+#include "ace/Reactor.h"
+#include "ace/Task.h"
+
+namespace CIAO_Updater_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, ACE_thread_t> Atomic_ThreadId;
+
+ class Receiver_exec_i;
+
+ //============================================================
+ // ListenOneByOneTest_Listener_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export ListenOneByOneTest_Listener_exec_i
+ : public virtual ::CCM_DDS::TestTopic::CCM_Listener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ListenOneByOneTest_Listener_exec_i (Atomic_ThreadId &);
+ virtual ~ListenOneByOneTest_Listener_exec_i (void);
+
+ virtual void
+ on_one_data (
+ const TestTopic& an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+ virtual void
+ on_many_data (
+ const TestTopicSeq & an_instance,
+ const ::CCM_DDS::ReadInfoSeq & info);
+ private:
+ Atomic_ThreadId &thread_id_;
+ };
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::TestTopic::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::Updater::CCM_Receiver_Context_var context_;
+ Atomic_ThreadId thread_id_listener_;
+};
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Updater_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl
new file mode 100644
index 00000000000..8ca5811a426
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_UPDATER_SENDER_IDL
+#define DDS_UPDATER_SENDER_IDL
+
+#include "Connector/Updater_Connector.idl"
+
+module Updater
+{
+ component Sender
+ {
+ port CCM_DDS::TestTopic::DDS_Update test_topic_update;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc
new file mode 100644
index 00000000000..d1097877d1d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender.mpc
@@ -0,0 +1,140 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_Updater_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_Updater_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_UPDATER_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ Updater_Sender.idl
+ }
+}
+
+project(DDS_Updater_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_Updater_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ Updater_SenderE.idl
+ }
+}
+
+project(DDS_Updater_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_Updater_Sender_lem_gen DDS_Updater_Sender_stub DDS_Updater_Base_stub
+ libs += DDS_Updater_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_SenderEC.cpp
+ }
+
+ Header_Files {
+ Updater_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_SenderEC.inl
+ }
+}
+
+project(DDS_Updater_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_Updater_Sender_idl_gen DDS_Updater_Base_stub DDS_Updater_Connector_stub
+ libs += DDS_Updater_Base_stub DDS_Updater_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_SenderC.cpp
+ }
+
+ Header_Files {
+ Updater_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Updater_SenderC.inl
+ }
+}
+
+project(DDS_Updater_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_Updater_Sender_lem_stub DDS_Updater_Sender_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_Updater_Base_stub DDS_UPDATER_Connector_lem_stub DDS_Updater_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Updater_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Updater_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_Updater_Base_stub DDS_Updater_Sender_lem_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_UPDATER_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_Updater_Base_stub DDS4CCM_lem_stub DDS4CCM_skel DDS_Updater_Connector_stub DDS_Updater_Connector_svnt DDS_UPDATER_Connector_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Updater_SenderS.cpp
+ Updater_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Updater_SenderS.h
+ Updater_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Updater_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp
new file mode 100644
index 00000000000..6a594890db2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.cpp
@@ -0,0 +1,672 @@
+// -*- C++ -*-
+// $Id$
+
+//Test Updater functions
+#include "Updater_Sender_exec.h"
+#include "ace/Guard_T.h"
+#include "ace/Log_Msg.h"
+#include "tao/ORB_Core.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_Updater_Sender_Impl
+{
+ //============================================================
+ // Pulse generator
+ //============================================================
+ pulse_Generator::pulse_Generator (Sender_exec_i &callback)
+ : pulse_callback_ (callback)
+ {
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &, const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_.tick ();
+ return 0;
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : test_nr_(UPDATE_CREATE),
+ test_ok_(true)
+ {
+ this->ticker_ = new pulse_Generator (*this);
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ CORBA::Boolean
+ Sender_exec_i::create_one()
+ {
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ if (! ::CORBA::is_nil (this->updater_) ) {
+ this->updater_->create_one(i);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: create_one with instance key <%C>\n"),
+ i.key.in()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: updater_ is nil")));
+ result= false;
+ }
+ }
+ catch(const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater create_one <%C>.\n"),
+ i.key.in()));
+ result= false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"),
+ i.key.in()));
+ result = false;;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::create_one_already_exist()
+ {
+ CORBA::Boolean result = false;
+ TestTopic i = this->topic_seq_one_[0];
+ //try to create same instance again, this should erase an AlreadyCreated exception
+ try
+ {
+ this->updater_->create_one(i);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: create_one with already existing instance key <%Cs>\n"),
+ i.key.in()));
+ }
+ catch(const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception AlreadyCreated test updater create_one.\n")));
+ result = true;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while create_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_one()
+ {
+ //update already created instance with handle nil
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ this->updater_->update_one(i, DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with already existing instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ }
+ catch(const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_one_not_registered()
+ {
+ //update a not yet registered instance,expext a NonExistent exception
+ CORBA::Boolean result = false;
+ //use second instance of table
+ TestTopic i = this->topic_seq_one_[1];
+ try
+ {
+ this->updater_->update_one(i, DDS::HANDLE_NIL);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update_one with not registerd instance, key <%C>\n"),
+ i.key.in()));
+ }
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater updater_one.\n")));
+ result = true;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_one()
+ {
+ //delete registerd instance with DDS::HANDLE_NIL
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[0];
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with registerd instance with DDS::HANDLE_NIL, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, DDS::HANDLE_NIL);
+ }
+ catch(const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_one <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_one_not_registered()
+ {
+ //delete non-existing instance, expect NonExistent exception
+ CORBA::Boolean result = false;
+ TestTopic i = this->topic_seq_one_[1];
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete_one with not registerd instance, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, DDS::HANDLE_NIL);
+ }
+ catch(const CCM_DDS::NonExistent &)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater delete_one.\n")));
+ result = true;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_and_delete_one_after_register()
+ {
+ //update an instance after registering first, using a handle
+ CORBA::Boolean result = true;
+ TestTopic i = this->topic_seq_one_[2];
+ //take third instance of table
+ DDS::InstanceHandle_t hnd = this->updater_->register_instance(i);
+ try
+ {
+ if(hnd.isValid)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update a new instance after registrating instance, key <%C>\n"),
+ i.key.in()));
+ this->updater_->update_one(i, hnd);
+
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error, invalid handle for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ }
+ catch(const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one using handle <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while update_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ //update an instance with an instance_handler belonging to an other instance
+ if(result == true)
+ {
+ try
+ {
+ result = false;
+ TestTopic y = this->topic_seq_one_[0];
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: update an instance with an instance_handler belonging to an other instance\n")));
+ this->updater_->update_one(y, hnd);
+ }
+ catch(const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_one with incompatible datum and handle.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("OK: Expected : Exception InternalE. test updater update_one with incompatible datum and handle. ex %d\n"),ex.error_code));
+ result = true;
+ }
+ }
+ if (result==true)
+ {
+ try
+ {
+ i = this->topic_seq_one_[2];
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Updater: delete a instance with handle, key <%C>\n"),
+ i.key.in()));
+ this->updater_->delete_one(i, hnd);
+ }
+
+ catch (const CCM_DDS::NonExistent &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delett_one with valid handler.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Internal Error while delete_one for <%C>.\n"),
+ i.key.in()));
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::create_many()
+ {
+ //create many with no exception
+ CORBA::Boolean result = false;
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ this->updater_->create_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch(const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater create_many\n")));
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("in updater: create_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+
+ }
+ if(result==true)
+ {
+ result = false;
+ //test create_many with AlreadyCreated exception
+
+ try
+ {
+ this->updater_->create_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many which are already created : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+
+ }
+ catch (const CCM_DDS::NonExistent & )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Unexpected Error ")
+ ACE_TEXT ("in create_many , already created.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::AlreadyCreated & )
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception AlreadyCreated test updater create_many.\n")));
+ result = true;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("in test create_many,already created: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::update_many()
+ {
+ CORBA::Boolean result = false;
+ try
+ {
+ this->updater_->update_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("update_many : written <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ result = true;
+ }
+ catch(const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater update_many.\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("whit update_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ if(result==true)
+ {
+ result = false;
+ //update with exception
+ // make from the second and third instances a unregistered instance , see above
+ char key[7];
+ TestTopic test_key;
+ ACE_OS::sprintf (key, "XXX_%d",2);
+ test_key.key = CORBA::string_dup(key);
+ test_key.x = 2;
+ this->topic_seq_many_[1] = test_key;
+ ACE_OS::sprintf (key, "YYY_%d",3);
+ test_key.key = CORBA::string_dup(key);
+ test_key.x = 3;
+ this->topic_seq_many_[2] = test_key;
+ try
+ {
+ this->updater_->update_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ }
+ catch (const CCM_DDS::NonExistent & ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater update_many.\n"),
+ ACE_TEXT ("index length expected = 2 and value = %d, expected index[0] = 1 and value = %d.\n"),
+ ex.indexes.length(),ex.indexes[0]));
+
+ if((ex.indexes.length() != 2) || (ex.indexes[0] != 1) ||(ex.indexes[1] != 2))
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Create_maney:expected exception: NonExistent gives wrong indexes.\n")));
+ result = false;
+ }
+ else
+ {
+ result = true;
+ }
+ }
+ catch (const CCM_DDS::InternalError& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("test update_many with not registerd instances\n")));
+ }
+ catch (const CCM_DDS::AlreadyCreated & )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test update_many with not registerd instances.\n")));
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ CORBA::Boolean
+ Sender_exec_i::delete_many()
+ {
+ CORBA::Boolean result = false;
+ result = false;
+ //delete_many with exception
+ // make from the second and third instances a unregistered instance
+ try
+ {
+ this->updater_->delete_many (this->topic_seq_many_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("create_many : <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+ }
+ catch (const CCM_DDS::NonExistent & ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Expected : Exception NonExistent test updater delete_many.\n"),
+ ACE_TEXT ("index length expected = 2 and value = %d, expected index[0] = 1 and value = %d.\n"),
+ ex.indexes.length(),ex.indexes[0]));
+
+ if((ex.indexes.length() != 2) || (ex.indexes[0] != 1) ||(ex.indexes[1] != 2))
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Create_many:expected exception: NonExistent gives wrong indices.\n")));
+ result = false;
+ }
+ else
+ {
+ result = true;
+ }
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("test updater delete_many with inregisterd instances, info: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ catch (const CCM_DDS::AlreadyCreated &)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: AlreadyCreated with test updater delete_many.\n")));
+ result = false;
+ }
+ if(result==true)
+ {
+ //delete many with no exception
+ //reset instances to original values
+ for (int i = 1; i < 4; i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "many_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_many_[i-1] = new_key;
+ }
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete_many : deleted <%u> samples\n"),
+ this->topic_seq_many_.length ()));
+
+ this->updater_->delete_many (this->topic_seq_many_);
+ result = true;
+ }
+ catch(const CCM_DDS::NonExistent& )
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Unexpected exception: NonExistent with test updater delete_many\n")));
+ result = false;
+ }
+ catch (const CCM_DDS::InternalError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
+ ACE_TEXT ("with test updater delete_many: index <%d> - retval <%d>\n"),
+ ex.index, ex.error_code));
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ void
+ Sender_exec_i::add_instances_of_topic ()
+ {
+ //make 2 sequences of instances as testdata
+ CORBA::UShort total = 3;
+ this->topic_seq_one_.length (total);
+ //sequence for tests with .._one
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "KEY_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_one_[i-1] = new_key;
+ }
+ //sequence for tests with .._many
+ this->topic_seq_many_.length (total);
+ for (int i = 1; i < (total + 1); i++)
+ {
+ char key[7];
+ TestTopic new_key;
+ ACE_OS::sprintf (key, "many_%d", i);
+ new_key.key = CORBA::string_dup(key);
+ new_key.x = i;
+ this->topic_seq_many_[i-1] = new_key;
+ }
+ }
+
+ void
+ Sender_exec_i::tick ()
+ {
+ if(this->test_ok_.value())
+ {
+ switch (this->test_nr_)
+ {
+ case UPDATE_CREATE:
+ this->test_ok_ = this->create_one();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_CREATE_ALREADY_EXIST;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ break;
+ case UPDATE_CREATE_ALREADY_EXIST:
+ this->test_ok_ = this->create_one_already_exist();
+ this->test_nr_ = UPDATE_ONE;
+ break;
+ case UPDATE_ONE:
+ this->test_ok_ = this->update_one();
+ this->test_nr_ = UPDATE_ONE_NOT_REGISTERED;
+ break;
+ case UPDATE_ONE_NOT_REGISTERED:
+ this->test_ok_ = this->update_one_not_registered();
+ this->test_nr_ = DELETE_ONE;
+ break;
+ case DELETE_ONE:
+ this->test_ok_ = this->delete_one();
+ this->test_nr_ = DELETE_ONE_NOT_REGISTERED;
+ break;
+ case DELETE_ONE_NOT_REGISTERED:
+ this->test_ok_ = this->delete_one_not_registered();
+ this->test_nr_ = UPDATE_DELETE_REGISTER;
+ break;
+ case UPDATE_DELETE_REGISTER:
+ this->test_ok_ = this->update_and_delete_one_after_register();
+ this->test_nr_ = CREATE_MANY;
+ break;
+ case CREATE_MANY:
+ this->test_ok_ = this->create_many();
+ if(this->test_ok_.value())
+ {
+ this->test_nr_ = UPDATE_MANY;
+ }
+ else
+ {
+ this->test_nr_ = END_TEST;
+ }
+ this->test_nr_ = UPDATE_MANY;
+ break;
+ case UPDATE_MANY:
+ this->test_ok_ = this->update_many();
+ this->test_nr_ = DELETE_MANY;
+ break;
+ case DELETE_MANY:
+ this->test_ok_ = this->delete_many();
+ this->test_nr_ = END_TEST;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ void
+ Sender_exec_i::start (void)
+ {
+ long sec = 3L;
+ long usec = 0L;
+ if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer (
+ this->ticker_,
+ 0,
+ ACE_Time_Value (sec, usec),
+ ACE_Time_Value (sec, usec)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ")
+ ACE_TEXT ("Error scheduling timer")));
+ }
+ }
+
+ void
+ Sender_exec_i::stop (void)
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::Updater::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ this->updater_ = this->context_->get_connection_test_topic_update_data ();
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ this->add_instances_of_topic ();
+ this->start ();
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop ();
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if(!this->test_ok_.value())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Error in Updater in Sender")));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Updater_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h
new file mode 100644
index 00000000000..3a900367ac4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/Sender/Updater_Sender_exec.h
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+#include "Updater_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+#include <map>
+
+namespace CIAO_Updater_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ enum UPDATER_TEST {
+ UPDATE_CREATE,
+ UPDATE_CREATE_ALREADY_EXIST,
+ UPDATE_ONE,
+ UPDATE_ONE_NOT_REGISTERED,
+ DELETE_ONE,
+ DELETE_ONE_NOT_REGISTERED,
+ UPDATE_DELETE_REGISTER,
+ CREATE_MANY,
+ UPDATE_MANY,
+ DELETE_MANY,
+ END_TEST
+ };
+
+ class pulse_Generator :
+ public ACE_Event_Handler
+ {
+ public:
+ pulse_Generator (Sender_exec_i &callback);
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ private:
+ /// Maintains a handle that actually process the event
+ Sender_exec_i &pulse_callback_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+ void tick (void);
+
+ private:
+ void start (void);
+ void stop (void);
+ void add_instances_of_topic (void);
+ CORBA::Boolean create_one(void);
+ CORBA::Boolean create_one_already_exist(void);
+ CORBA::Boolean update_one(void);
+ CORBA::Boolean update_one_not_registered(void);
+ CORBA::Boolean delete_one(void);
+ CORBA::Boolean delete_one_not_registered(void);
+ CORBA::Boolean update_and_delete_one_after_register(void);
+ CORBA::Boolean create_many(void);
+ CORBA::Boolean update_many(void);
+ CORBA::Boolean delete_many(void);
+
+ pulse_Generator * ticker_;
+ ::Updater::CCM_Sender_Context_var context_;
+ CCM_DDS::TestTopic::Updater_var updater_;
+ UPDATER_TEST test_nr_;
+ Atomic_Boolean test_ok_;
+ TestTopicSeq topic_seq_one_;
+ TestTopicSeq topic_seq_many_;
+ };
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Updater_Sender_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp
new file mode 100644
index 00000000000..2cb74af488c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/Plan.cdp
@@ -0,0 +1,370 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Updater_Depl_1</label>
+ <UUID>Updater_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Updater_ConnectorComponentImplementation">
+ <name>Updater_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Updater_Connector_ExecArtifact" />
+ <artifact xmi:idref="Updater_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Updater_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Updater_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Updater_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Updater_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Updater_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="Updater_ConnectorComponentInstance">
+ <name>Updater_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Updater_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Updater_ConnectorComponentInstance2">
+ <name>Updater_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Updater_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestQoS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <connection>
+ <name>_listenercontrol</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Updater_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_statelistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Updater_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>_portstatuslistener</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Updater_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_state_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Updater_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>updater_connection</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>test_topic_update_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Updater_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="Updater_Connector_ExecArtifact">
+ <name>Updater_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Updater_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Updater_Connector_SvntArtifact">
+ <name>Updater_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Updater_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="Updater_Connector_StubArtifact">
+ <name>Updater_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_Updater_Connector_stub</location>
+ </artifact>
+
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl
new file mode 100755
index 00000000000..7a20e61732d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/Updater/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.idl
new file mode 100644
index 00000000000..c792557b4c0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.idl
@@ -0,0 +1,75 @@
+// $Id$
+
+/**
+ * @file VTopic_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTOPIC_BASE_IDL
+#define VTOPIC_BASE_IDL
+
+#pragma ndds typesupport "Base/VTopic_BaseSupport.h"
+
+// Plain topic
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+// String
+struct TopicString {
+ string key; //@key
+ string x_str;
+};
+
+// Arrays
+struct TopicArray {
+ string key; //@key
+ octet x_array[5];
+ };
+
+// Unions
+union X_Union switch (short) {
+ case 0:
+ string x_test;
+ case 1:
+ long x_long;
+};
+
+struct TopicUnion {
+ string key; //@key
+ X_Union x_uni;
+};
+
+// Sequence
+struct test {
+ short x_test;
+ string x_teststr;
+};
+typedef sequence<test> test_seq;
+
+struct TopicSeq {
+ string key; //@key
+ test_seq x_seq;
+};
+
+// ValueType
+valuetype X_Valuetype {
+ public string type;
+ public long x_long;
+};
+
+struct TopicValuetype {
+ string key; //@key
+ X_Valuetype x_vt;
+};
+
+// Sequences
+typedef sequence<TestTopic> TestTopicSeq;
+typedef sequence<TopicString> TopicStringSeq;
+typedef sequence<TopicArray> TopicArraySeq;
+typedef sequence<TopicUnion> TopicUnionSeq;
+typedef sequence<TopicSeq> TopicSeqSeq;
+typedef sequence<TopicValuetype> TopicValuetypeSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.mpc
new file mode 100644
index 00000000000..8eadd06dcb4
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Base/VTopic_Base.mpc
@@ -0,0 +1,27 @@
+// $Id$
+
+project (DDS_VTopic_Base_stub) : taoidldefaults, anytypecode, \
+ dds4ccm_ts_default, valuetype {
+ sharedname = DDS_VTopic_Base_stub
+ dynamicflags += VTOPIC_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS \
+ -Wb,stub_export_macro=VTOPIC_BASE_STUB_Export \
+ -Wb,stub_export_include=VTopic_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ VTopic_Base.idl
+ }
+
+ opendds_ts_flags += --export=VTOPIC_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ VTopic_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.idl
new file mode 100644
index 00000000000..37ca6e60444
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VT_Array_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VT_ARRAY_CONNECTOR_IDL_
+#define VT_ARRAY_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Array/VT_Array_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicArray, ::TopicArraySeq> TopicArrayConn;
+ connector VT_Array_Connector : TopicArrayConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VT_ARRAY_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.mpc
new file mode 100644
index 00000000000..6b59865630a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Array/VT_Array_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopic_Base -l .. -o ../lib -u DDS VT_Array_Connector"
+
+project(DDS_VT_ARRAY_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_ARRAY_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VT_Array_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_ARRAY_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VT_Array_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_ARRAY_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VT_Array_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_ARRAY_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VT_Array_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VT_Array_Connector.idl
+ }
+}
+
+project(DDS_VT_ARRAY_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VT_ARRAY_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_ARRAY_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VT_Array_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VT_Array_ConnectorE.idl
+ }
+}
+
+project(DDS_VT_ARRAY_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VT_ARRAY_Connector_lem_gen DDS_VT_Array_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VT_Array_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_ARRAY_Connector_lem_stub
+ dynamicflags = VT_ARRAY_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Array_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VT_Array_ConnectorEC.h
+ VT_Array_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Array_ConnectorEC.inl
+ }
+}
+
+project(DDS_VT_Array_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VT_ARRAY_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_Array_Connector_stub
+ dynamicflags = VT_ARRAY_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Array_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VT_Array_ConnectorC.h
+ VT_Array_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Array_ConnectorC.inl
+ }
+}
+
+project(DDS_VT_Array_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VT_ARRAY_Connector_lem_stub DDS_VT_Array_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VT_Array_Connector_exec
+ libs += DDS_VT_Array_Connector_stub DDS_VT_ARRAY_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_ARRAY_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Array_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VT_Array_Connector_conn.h
+ VT_Array_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VT_Array_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VT_ARRAY_Connector_lem_stub DDS_VT_Array_Connector_exec DDS_VT_Array_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VT_Array_Connector_svnt
+ libs += DDS_VT_Array_Connector_stub \
+ DDS_VT_ARRAY_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VT_Array_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_ARRAY_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Array_ConnectorS.cpp
+ VT_Array_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VT_Array_ConnectorS.h
+ VT_Array_Connector_svnt.h
+ VT_Array_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VT_Array_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.idl
new file mode 100644
index 00000000000..6ce6854d245
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VT_Seq_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VT_SEQ_CONNECTOR_IDL_
+#define VT_SEQ_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Seq/VT_Seq_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicSeq, ::TopicSeqSeq> TopicSeqConn;
+ connector VT_Seq_Connector : TopicSeqConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VTopic_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.mpc
new file mode 100644
index 00000000000..82fbfe90d15
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Seq/VT_Seq_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopic_Base -l .. -o ../lib -u DDS VT_Seq_Connector"
+
+project(DDS_VT_SEQ_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_SEQ_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VT_Seq_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_SEQ_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VT_Seq_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_SEQ_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VT_Seq_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_SEQ_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VT_Seq_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VT_Seq_Connector.idl
+ }
+}
+
+project(DDS_VT_SEQ_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VT_SEQ_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_SEQ_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VT_Seq_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VT_Seq_ConnectorE.idl
+ }
+}
+
+project(DDS_VT_SEQ_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VT_SEQ_Connector_lem_gen DDS_VT_Seq_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VT_Seq_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_SEQ_Connector_lem_stub
+ dynamicflags = VT_SEQ_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Seq_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VT_Seq_ConnectorEC.h
+ VT_Seq_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Seq_ConnectorEC.inl
+ }
+}
+
+project(DDS_VT_Seq_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VT_SEQ_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_Seq_Connector_stub
+ dynamicflags = VT_SEQ_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Seq_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VT_Seq_ConnectorC.h
+ VT_Seq_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Seq_ConnectorC.inl
+ }
+}
+
+project(DDS_VT_Seq_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VT_SEQ_Connector_lem_stub DDS_VT_Seq_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VT_Seq_Connector_exec
+ libs += DDS_VT_Seq_Connector_stub DDS_VT_SEQ_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_SEQ_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Seq_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VT_Seq_Connector_conn.h
+ VT_Seq_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VT_Seq_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VT_SEQ_Connector_lem_stub DDS_VT_Seq_Connector_exec DDS_VT_Seq_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VT_Seq_Connector_svnt
+ libs += DDS_VT_Seq_Connector_stub \
+ DDS_VT_SEQ_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VT_Seq_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_SEQ_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Seq_ConnectorS.cpp
+ VT_Seq_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VT_Seq_ConnectorS.h
+ VT_Seq_Connector_svnt.h
+ VT_Seq_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VT_Seq_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.idl
new file mode 100644
index 00000000000..eaf5964090d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VT_String_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VT_STRING_CONNECTOR_IDL_
+#define VT_STRING_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_String/VT_String_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicString, ::TopicStringSeq> TopicStringConn;
+ connector VT_String_Connector : TopicStringConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VTopic_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.mpc
new file mode 100644
index 00000000000..3e805c1127b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_String/VT_String_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopic_Base -l .. -o ../lib -u DDS VT_String_Connector"
+
+project(DDS_VT_STRING_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_STRING_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VT_String_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_STRING_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VT_String_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_STRING_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VT_String_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_STRING_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VT_String_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VT_String_Connector.idl
+ }
+}
+
+project(DDS_VT_STRING_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VT_STRING_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_STRING_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VT_String_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VT_String_ConnectorE.idl
+ }
+}
+
+project(DDS_VT_STRING_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VT_STRING_Connector_lem_gen DDS_VT_String_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VT_String_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_STRING_Connector_lem_stub
+ dynamicflags = VT_STRING_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_String_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VT_String_ConnectorEC.h
+ VT_String_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VT_String_ConnectorEC.inl
+ }
+}
+
+project(DDS_VT_String_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VT_STRING_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_String_Connector_stub
+ dynamicflags = VT_STRING_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_String_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VT_String_ConnectorC.h
+ VT_String_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VT_String_ConnectorC.inl
+ }
+}
+
+project(DDS_VT_String_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VT_STRING_Connector_lem_stub DDS_VT_String_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VT_String_Connector_exec
+ libs += DDS_VT_String_Connector_stub DDS_VT_STRING_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_STRING_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_String_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VT_String_Connector_conn.h
+ VT_String_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VT_String_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VT_STRING_Connector_lem_stub DDS_VT_String_Connector_exec DDS_VT_String_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VT_String_Connector_svnt
+ libs += DDS_VT_String_Connector_stub \
+ DDS_VT_STRING_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VT_String_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_STRING_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_String_ConnectorS.cpp
+ VT_String_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VT_String_ConnectorS.h
+ VT_String_Connector_svnt.h
+ VT_String_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VT_String_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.idl
new file mode 100644
index 00000000000..263bc47e583
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VT_Union_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef VT_UNION_CONNECTOR_IDL_
+#define VT_UNION_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Union/VT_Union_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicUnion, ::TopicUnionSeq> TopicUnionConn;
+ connector VT_Union_Connector : TopicUnionConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VT_UNION_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.mpc
new file mode 100644
index 00000000000..eeadc56b29c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Union/VT_Union_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_VT_UNION_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_UNION_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VT_Union_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_UNION_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VT_Union_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_UNION_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VT_Union_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_UNION_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VT_Union_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VT_Union_Connector.idl
+ }
+}
+
+project(DDS_VT_UNION_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VT_UNION_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_UNION_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VT_Union_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VT_Union_ConnectorE.idl
+ }
+}
+
+project(DDS_VT_UNION_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VT_UNION_Connector_lem_gen DDS_VT_Union_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VT_Union_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_UNION_Connector_lem_stub
+ dynamicflags = VT_UNION_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Union_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VT_Union_ConnectorEC.h
+ VT_Union_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Union_ConnectorEC.inl
+ }
+}
+
+project(DDS_VT_Union_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VT_UNION_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_Union_Connector_stub
+ dynamicflags = VT_UNION_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Union_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VT_Union_ConnectorC.h
+ VT_Union_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Union_ConnectorC.inl
+ }
+}
+
+project(DDS_VT_Union_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VT_UNION_Connector_lem_stub DDS_VT_Union_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VT_Union_Connector_exec
+ libs += DDS_VT_Union_Connector_stub DDS_VT_UNION_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_UNION_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Union_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VT_Union_Connector_conn.h
+ VT_Union_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VT_Union_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VT_UNION_Connector_lem_stub DDS_VT_Union_Connector_exec \
+ DDS_VT_Union_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VT_Union_Connector_svnt
+ libs += DDS_VT_Union_Connector_stub \
+ DDS_VT_UNION_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VT_Union_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_UNION_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Union_ConnectorS.cpp
+ VT_Union_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VT_Union_ConnectorS.h
+ VT_Union_Connector_svnt.h
+ VT_Union_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VT_Union_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.idl
new file mode 100644
index 00000000000..c17f1e0ffd2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VT_Valuetype_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef VT_VALUETYPE_CONNECTOR_IDL_
+#define VT_VALUETYPE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Valuetype/VT_Valuetype_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicValuetype, ::TopicValuetypeSeq> TopicValuetypeConn;
+ connector VT_Valuetype_Connector : TopicValuetypeConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VT_VALUETYPE_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.mpc
new file mode 100644
index 00000000000..f3ebeff878f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Conn_Valuetype/VT_Valuetype_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_VT_VALUETYPE_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_VALUETYPE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VT_Valuetype_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_VALUETYPE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VT_Valuetype_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_VALUETYPE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VT_Valuetype_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_VALUETYPE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VT_Valuetype_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VT_Valuetype_Connector.idl
+ }
+}
+
+project(DDS_VT_VALUETYPE_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VT_VALUETYPE_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_VALUETYPE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VT_Valuetype_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VT_Valuetype_ConnectorE.idl
+ }
+}
+
+project(DDS_VT_VALUETYPE_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VT_VALUETYPE_Connector_lem_gen DDS_VT_Valuetype_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VT_Valuetype_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_VALUETYPE_Connector_lem_stub
+ dynamicflags = VT_VALUETYPE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Valuetype_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VT_Valuetype_ConnectorEC.h
+ VT_Valuetype_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Valuetype_ConnectorEC.inl
+ }
+}
+
+project(DDS_VT_Valuetype_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VT_VALUETYPE_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VT_Valuetype_Connector_stub
+ dynamicflags = VT_VALUETYPE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Valuetype_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VT_Valuetype_ConnectorC.h
+ VT_Valuetype_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VT_Valuetype_ConnectorC.inl
+ }
+}
+
+project(DDS_VT_Valuetype_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VT_VALUETYPE_Connector_lem_stub DDS_VT_Valuetype_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VT_Valuetype_Connector_exec
+ libs += DDS_VT_Valuetype_Connector_stub DDS_VT_VALUETYPE_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_VALUETYPE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Valuetype_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VT_Valuetype_Connector_conn.h
+ VT_Valuetype_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VT_Valuetype_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VT_VALUETYPE_Connector_lem_stub DDS_VT_Valuetype_Connector_exec \
+ DDS_VT_Valuetype_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VT_Valuetype_Connector_svnt
+ libs += DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_VALUETYPE_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VT_Valuetype_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_VALUETYPE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VT_Valuetype_ConnectorS.cpp
+ VT_Valuetype_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VT_Valuetype_ConnectorS.h
+ VT_Valuetype_Connector_svnt.h
+ VT_Valuetype_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VT_Valuetype_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.idl
new file mode 100644
index 00000000000..bc2b73833b6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTopic_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTOPIC_CONNECTOR_IDL_
+#define VTOPIC_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopic_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/VTopic_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector VTopic_Connector : TestTopicConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VTopic_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.mpc
new file mode 100644
index 00000000000..c96d76e6265
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Connector/VTopic_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopic_Base -l .. -o ../lib -u DDS VTopic_Connector"
+
+project(DDS_VTopic_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTOPIC_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTopic_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTOPIC_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTopic_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTOPIC_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTopic_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTOPIC_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTopic_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTopic_Connector.idl
+ }
+}
+
+project(DDS_VTopic_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTopic_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTOPIC_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTopic_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTopic_ConnectorE.idl
+ }
+}
+
+project(DDS_VTopic_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopic_Connector_lem_gen DDS_VTopic_Connector_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopic_Base_stub DDS_VTopic_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTopic_Connector_lem_stub
+ dynamicflags = VTOPIC_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTopic_ConnectorEC.h
+ VTopic_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTopic_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopic_Connector_idl_gen DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTopic_Connector_stub
+ dynamicflags = VTOPIC_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTopic_ConnectorC.h
+ VTopic_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_ConnectorC.inl
+ }
+}
+
+project(DDS_VTopic_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ sharedname = DDS_VTopic_Connector_exec
+ libs += DDS_VTopic_Connector_stub DDS_VTopic_Connector_lem_stub DDS_VTopic_Base_stub DDS4CCM_lem_stub DDS_VTopic_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTOPIC_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTopic_Connector_conn.h
+ VTopic_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopic_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_exec DDS_VTopic_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTopic_Connector_svnt
+ libs += DDS_VTopic_Connector_stub \
+ DDS_VTopic_Connector_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS_VTopic_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTOPIC_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ConnectorS.cpp
+ VTopic_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTopic_ConnectorS.h
+ VTopic_Connector_svnt.h
+ VTopic_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopic_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.idl
new file mode 100644
index 00000000000..8f24ce55e4f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/VTopic_Connector.idl"
+
+module VTopic
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.mpc
new file mode 100644
index 00000000000..140c955f992
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver.mpc
@@ -0,0 +1,173 @@
+// $Id$
+
+project(DDS_VTopic_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_VTopic_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ VTopic_Receiver.idl
+ }
+}
+
+project(DDS_VTopic_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_VTopic_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ VTopic_ReceiverE.idl
+ }
+}
+
+project(DDS_VTopic_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopic_Receiver_lem_gen DDS_VTopic_Receiver_stub DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub Receiver_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ VTopic_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_ReceiverEC.inl
+ }
+}
+
+project(DDS_VTopic_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopic_Receiver_idl_gen DDS_VTopic_Base_stub \
+ DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub \
+ DDS_VT_String_Connector_lem_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Array_Connector_lem_stub DDS_VT_Array_Connector_stub \
+ DDS_VT_Valuetype_Connector_lem_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_lem_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_Seq_Connector_lem_stub DDS_VT_Seq_Connector_stub
+ libs += DDS_VTopic_Base_stub DDS_VTopic_Connector_stub DDS_VT_Array_Connector_stub \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_String_Connector_stub DDS_VT_Seq_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ReceiverC.cpp
+ }
+
+ Header_Files {
+ VTopic_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_ReceiverC.inl
+ }
+}
+
+project(DDS_VTopic_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_VTopic_Receiver_lem_stub DDS_VTopic_Receiver_stub \
+ DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub\
+ DDS_VT_Array_Connector_lem_stub DDS_VT_Array_Connector_stub \
+ DDS_VT_String_Connector_lem_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Valuetype_Connector_lem_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_lem_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_Seq_Connector_lem_stub DDS_VT_Seq_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_VTopic_Base_stub DDS_VTopic_Connector_lem_stub \
+ DDS_VTopic_Connector_stub DDS_VT_Array_Connector_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_Seq_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ VTopic_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopic_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_VTopic_Base_stub DDS_VTopic_Receiver_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_VT_String_Connector_stub DDS_VT_String_Connector_svnt DDS_VT_String_Connector_lem_stub \
+ DDS_VT_Seq_Connector_stub DDS_VT_Seq_Connector_svnt DDS_VT_Seq_Connector_lem_stub\
+ DDS_VT_Array_Connector_stub DDS_VT_Array_Connector_svnt DDS_VT_Array_Connector_lem_stub \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Valuetype_Connector_svnt DDS_VT_Valuetype_Connector_lem_stub \
+ DDS_VT_Union_Connector_stub DDS_VT_Union_Connector_svnt DDS_VT_Union_Connector_lem_stub \
+ DDS_VTopic_Connector_stub DDS_VTopic_Connector_svnt DDS_VTopic_Connector_lem_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS4CCM_lem_stub \
+ DDS4CCM_skel \
+ DDS_VTopic_Connector_stub DDS_VTopic_Connector_svnt \
+ DDS_VT_Array_Connector_stub DDS_VT_Array_Connector_svnt \
+ DDS_VT_String_Connector_stub DDS_VT_String_Connector_svnt \
+ DDS_VT_Seq_Connector_stub DDS_VT_Seq_Connector_svnt \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Valuetype_Connector_svnt \
+ DDS_VT_Union_Connector_stub DDS_VT_Union_Connector_svnt
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_ReceiverS.cpp
+ VTopic_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ VTopic_ReceiverS.h
+ VTopic_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopic_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.cpp
new file mode 100644
index 00000000000..1fb3279de8a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.cpp
@@ -0,0 +1,158 @@
+// -*- C++ -*-
+//
+// $Id$
+
+//Test for different topictypes with DDS_Event connector, look for 'SUBSCRIPTION_MATCHED_STATUS
+
+#include "VTopic_Receiver_exec.h"
+#include "ace/Log_Msg.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_VTopic_Receiver_Impl
+{
+//============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_Boolean &subscription_matched)
+ : subscription_matched_ (subscription_matched)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (! ::CORBA::is_nil (the_entity) &&
+ status_kind == ::DDS::SUBSCRIPTION_MATCHED_STATUS)
+ {
+ this->subscription_matched_ = true;
+ }
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_iTestTopic_RawListener_exec_i ();
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : subscription_matched_ (false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+ // Port operations.
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->subscription_matched_);
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ VTopic::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return VTopic::TestTopicConn::CCM_Listener::_nil ();
+ }
+
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::VTopic::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if(!this->subscription_matched_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("states 'SUBSCRIPTION_MATCHED_STATUS' in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ")
+ ACE_TEXT ("'SUBSCRIPTION_MATCHED_STATUS' in Receiver\n")
+ ));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopic_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.h
new file mode 100644
index 00000000000..d9f91b7bc87
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Receiver/VTopic_Receiver_exec.h
@@ -0,0 +1,94 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "VTopic_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+#include "ace/Task.h"
+#include "ace/Reactor.h"
+
+namespace CIAO_VTopic_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Receiver_exec_i;
+
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Atomic_Boolean &subscription_matched_;
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ virtual VTopic::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::VTopic::CCM_Receiver_Context_var context_;
+ Atomic_Boolean subscription_matched_;
+};
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopic_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.idl
new file mode 100644
index 00000000000..175a69a14d6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_VTOPIC_SENDER_IDL
+#define DDS_VTOPIC_SENDER_IDL
+
+#include "Connector/VTopic_Connector.idl"
+
+module VTopic
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Write info_write;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.mpc
new file mode 100644
index 00000000000..8d65e29abf8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender.mpc
@@ -0,0 +1,174 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopic_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_VTopic_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_VTopic_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ VTopic_Sender.idl
+ }
+}
+
+project(DDS_VTopic_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_VTopic_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ VTopic_SenderE.idl
+ }
+}
+
+project(DDS_VTopic_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopic_Sender_lem_gen DDS_VTopic_Sender_stub DDS_VTopic_Base_stub
+ libs += DDS_VTopic_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_SenderEC.cpp
+ }
+
+ Header_Files {
+ VTopic_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_SenderEC.inl
+ }
+}
+
+project(DDS_VTopic_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopic_Sender_idl_gen DDS_VTopic_Base_stub \
+ DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub \
+ DDS_VT_String_Connector_lem_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Array_Connector_lem_stub DDS_VT_Array_Connector_stub \
+ DDS_VT_Valuetype_Connector_lem_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_lem_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_Seq_Connector_lem_stub DDS_VT_Seq_Connector_stub
+ libs += DDS_VTopic_Base_stub DDS_VTopic_Connector_stub \
+ DDS_VT_Array_Connector_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Seq_Connector_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_SenderC.cpp
+ }
+
+ Header_Files {
+ VTopic_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ VTopic_SenderC.inl
+ }
+}
+
+project(DDS_VTopic_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_VTopic_Sender_lem_stub DDS_VTopic_Sender_stub \
+ DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub \
+ DDS_VT_Array_Connector_lem_stub DDS_VT_Array_Connector_stub \
+ DDS_VT_Valuetype_Connector_lem_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_lem_stub DDS_VT_Union_Connector_stub \
+ DDS_VT_String_Connector_lem_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Seq_Connector_lem_stub DDS_VT_Seq_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_VTopic_Base_stub \
+ DDS_VTopic_Connector_lem_stub DDS_VTopic_Connector_stub \
+ DDS_VT_Array_Connector_stub DDS_VT_String_Connector_stub \
+ DDS_VT_Seq_Connector_stub DDS_VT_Valuetype_Connector_stub \
+ DDS_VT_Union_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_Sender_exec.cpp
+ }
+
+ Header_Files {
+ VTopic_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopic_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_VTopic_Base_stub DDS_VTopic_Sender_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_VTopic_Connector_stub DDS_VTopic_Connector_svnt DDS_VTopic_Connector_lem_stub \
+ DDS_VT_Array_Connector_stub DDS_VT_Array_Connector_svnt DDS_VT_Array_Connector_lem_stub \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Valuetype_Connector_svnt DDS_VT_Valuetype_Connector_lem_stub \
+ DDS_VT_Union_Connector_stub DDS_VT_Union_Connector_svnt DDS_VT_Union_Connector_lem_stub \
+ DDS_VT_String_Connector_stub DDS_VT_String_Connector_svnt DDS_VT_String_Connector_lem_stub \
+ DDS_VT_Seq_Connector_stub DDS_VT_Seq_Connector_svnt DDS_VT_Seq_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_VTopic_Base_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_VTopic_Connector_stub DDS_VTopic_Connector_svnt \
+ DDS_VT_Array_Connector_stub DDS_VT_Array_Connector_svnt \
+ DDS_VT_Valuetype_Connector_stub DDS_VT_Valuetype_Connector_svnt \
+ DDS_VT_Union_Connector_stub DDS_VT_Union_Connector_svnt \
+ DDS_VT_String_Connector_stub DDS_VT_String_Connector_svnt \
+ DDS_VT_Seq_Connector_stub DDS_VT_Seq_Connector_svnt
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopic_SenderS.cpp
+ VTopic_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ VTopic_SenderS.h
+ VTopic_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopic_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.cpp
new file mode 100644
index 00000000000..b41127ab77a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.cpp
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+// $Id$
+
+
+//Test different topic types, with DDS_EVENT connectors, look for 'PUBLICATION_MATCHED_STATUS
+#include "VTopic_Sender_exec.h"
+#include "ace/Log_Msg.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_VTopic_Sender_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_Boolean &publication_matched)
+ : publication_matched_ (publication_matched)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected(
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos(
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status(
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (! ::CORBA::is_nil (the_entity) &&
+ status_kind == ::DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ this->publication_matched_ = true;
+ }
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+ Sender_exec_i::Sender_exec_i (void)
+ : publication_matched_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+
+ {
+ return new ConnectorStatusListener_exec_i (this->publication_matched_);
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::VTopic::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if(!this->publication_matched_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("states 'PUBLICATION_MATCHED_STATUS' in Sender\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ")
+ ACE_TEXT ("'PUBLICATION_MATCHED_STATUS' in Sender\n")
+ ));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopic_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.h
new file mode 100644
index 00000000000..a92fddc93fa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/Sender/VTopic_Sender_exec.h
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+#include "VTopic_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_VTopic_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &publication_matched_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status(void);
+
+ private:
+ ::VTopic::CCM_Sender_Context_var context_;
+
+ Atomic_Boolean publication_matched_;
+};
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopic_Sender_Impl (void);
+
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/Plan.cdp
new file mode 100644
index 00000000000..d430983f344
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/Plan.cdp
@@ -0,0 +1,1118 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>VTopic_Depl_1</label>
+ <UUID>VTopic_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VTopic_ConnectorComponentImplementation">
+ <name>VTopic_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VTopic_Connector_ExecArtifact" />
+ <artifact xmi:idref="VTopic_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VTopic_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VTopic_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTopic_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTopic_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VT_String_ConnectorComponentImplementation">
+ <name>VT_String_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VT_String_Connector_ExecArtifact" />
+ <artifact xmi:idref="VT_String_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_String_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_String_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_String_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_String_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VT_Array_ConnectorComponentImplementation">
+ <name>VT_Array_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VT_Array_Connector_ExecArtifact" />
+ <artifact xmi:idref="VT_Array_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Array_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Array_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Array_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Array_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VT_Valuetype_ConnectorComponentImplementation">
+ <name>VT_Valuetype_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VT_Valuetype_Connector_ExecArtifact" />
+ <artifact xmi:idref="VT_Valuetype_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Valuetype_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Valuetype_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Valuetype_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Valuetype_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VT_Union_ConnectorComponentImplementation">
+ <name>VT_Union_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VT_Union_Connector_ExecArtifact" />
+ <artifact xmi:idref="VT_Union_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Union_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Union_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Union_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Union_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VT_Seq_ConnectorComponentImplementation">
+ <name>VT_Seq_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VT_Seq_Connector_ExecArtifact" />
+ <artifact xmi:idref="VT_Seq_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Seq_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_VT_Seq_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Seq_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VT_Seq_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopic_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="VTopic_ConnectorComponentInstance">
+ <name>VTopic_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTopic_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VTopic_ConnectorComponentInstance2">
+ <name>VTopic_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTopic_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VT_String_ConnectorComponentInstance">
+ <name>VT_String_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_String_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestString</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VT_String_ConnectorComponentInstance2">
+ <name>VT_String_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_String_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestString</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VT_Array_ConnectorComponentInstance">
+ <name>VT_Array_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Array_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestArray</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VT_Array_ConnectorComponentInstance2">
+ <name>VT_Array_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Array_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestArray</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VT_Valuetype_ConnectorComponentInstance">
+ <name>VT_Valuetype_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Valuetype_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestValuetype</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VT_Valuetype_ConnectorComponentInstance2">
+ <name>VT_Valuetype_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Valuetype_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestValuetype</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VT_Union_ConnectorComponentInstance">
+ <name>VT_Union_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Union_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUnion</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VT_Union_ConnectorComponentInstance2">
+ <name>VT_Union_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Union_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUnion</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VT_Seq_ConnectorComponentInstance">
+ <name>VT_Seq_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Seq_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestSeq</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VT_Seq_ConnectorComponentInstance2">
+ <name>VT_Seq_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VT_Seq_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestSeq</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <!--
+ *****************************
+ Regular connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTopic_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTopic_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <!-- connection in order to establish a publication_matched
+ -->
+ <connection>
+ <name>test_topic_info_write</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>supplier_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="VTopic_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <!-- connection in order to establish a subscription_matched
+ -->
+ <connection>
+ <name>test_topic_info_out</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_consumer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="VTopic_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ String connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_string</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_String_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_string</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_String_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ Array connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_array</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Array_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_array</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Array_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ ValueType connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_valuetype</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Valuetype_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_valuetype</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Valuetype_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ Union connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_union</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Union_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_union</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Union_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ Sequence connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_seq</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Seq_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_seq</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VT_Seq_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="VTopic_Connector_ExecArtifact">
+ <name>VTopic_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopic_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VTopic_Connector_SvntArtifact">
+ <name>VTopic_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopic_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VTopic_Connector_StubArtifact">
+ <name>VTopic_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopic_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VT_String_Connector_ExecArtifact">
+ <name>VT_String_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_String_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VT_String_Connector_SvntArtifact">
+ <name>VT_String_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_String_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VT_String_Connector_StubArtifact">
+ <name>VT_String_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDSVT_String_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VT_Array_Connector_ExecArtifact">
+ <name>VT_Array_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Array_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VT_Array_Connector_SvntArtifact">
+ <name>VT_Array_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Array_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VT_Array_Connector_StubArtifact">
+ <name>VT_Array_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Array_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VT_Valuetype_Connector_ExecArtifact">
+ <name>VT_Valuetype_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Valuetype_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VT_Valuetype_Connector_SvntArtifact">
+ <name>VT_Valuetype_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Valuetype_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VT_Valuetype_Connector_StubArtifact">
+ <name>VT_Valuetype_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Valuetype_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VT_Union_Connector_ExecArtifact">
+ <name>VT_Union_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Union_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VT_Union_Connector_SvntArtifact">
+ <name>VT_Union_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Union_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VT_Union_Connector_StubArtifact">
+ <name>VT_Union_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Union_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VT_Seq_Connector_ExecArtifact">
+ <name>VT_Seq_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Seq_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VT_Seq_Connector_SvntArtifact">
+ <name>VT_Seq_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Seq_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VT_Seq_Connector_StubArtifact">
+ <name>VT_Seq_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VT_Seq_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/run_test.pl
new file mode 100755
index 00000000000..97e2bf434c6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsEvent/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill (4 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.idl
new file mode 100644
index 00000000000..4f852e618e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.idl
@@ -0,0 +1,75 @@
+// $Id$
+
+/**
+ * @file VTopics_Base.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTOPICS_BASE_IDL
+#define VTOPICS_BASE_IDL
+
+#pragma ndds typesupport "Base/VTopics_BaseSupport.h"
+
+// Plain Topic
+struct TestTopic {
+ string key; //@key
+ long x;
+};
+
+// String
+struct TopicString {
+ string key; //@key
+ string x_str;
+};
+
+// Arrays
+struct TopicArray {
+ string key; //@key
+ octet x_array[5];
+};
+
+// Unions
+union X_Union switch (short) {
+ case 0:
+ string x_test;
+ case 1:
+ long x_long;
+};
+
+struct TopicUnion {
+ string key; //@key
+ X_Union x_uni;
+};
+
+// Sequence
+struct test {
+ short x_test;
+ string x_teststr;
+};
+typedef sequence<test> test_seq;
+
+struct TopicSeq {
+ string key; //@key
+ test_seq x_seq;
+ };
+
+ // ValueType
+valuetype X_Valuetype {
+ public string type;
+ public long x_long;
+};
+
+struct TopicValuetype {
+ string key; //@key
+ X_Valuetype x_vt;
+};
+
+// Sequences
+typedef sequence<TestTopic> TestTopicSeq;
+typedef sequence<TopicString> TopicStringSeq;
+typedef sequence<TopicArray> TopicArraySeq;
+typedef sequence<TopicUnion> TopicUnionSeq;
+typedef sequence<TopicSeq> TopicSeqSeq;
+typedef sequence<TopicValuetype> TopicValuetypeSeq;
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.mpc
new file mode 100644
index 00000000000..1ce360b9201
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Base/VTopics_Base.mpc
@@ -0,0 +1,27 @@
+// $Id$
+
+project (DDS_VTopics_Base_stub) : taoidldefaults, anytypecode, \
+ dds4ccm_ts_default,valuetype {
+ sharedname = DDS_VTopics_Base_stub
+ dynamicflags += VTOPICS_BASE_STUB_BUILD_DLL
+ libout = ../lib
+
+ idlflags += -SS \
+ -Wb,stub_export_macro=VTOPICS_BASE_STUB_Export \
+ -Wb,stub_export_include=VTopics_Base_stub_export.h
+
+ IDL_Files {
+ idlflags += -Gxhst
+ VTopics_Base.idl
+ }
+
+ opendds_ts_flags += --export=VTOPICS_BASE_STUB_Export
+
+ DDSGenerator_Files {
+ VTopics_Base.idl
+ }
+
+ Source_Files {
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.idl
new file mode 100644
index 00000000000..47160c4f29d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTS_Array_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTS_ARRAY_CONNECTOR_IDL_
+#define VTS_ARRAY_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Array/VTS_Array_ConnectorE.idl"
+
+module VTopics
+{
+ module ::CCM_DDS::Typed < ::TopicArray, ::TopicArraySeq> TopicArrayConn;
+ connector VTS_Array_Connector : TopicArrayConn::DDS_State
+ {
+ };
+};
+
+#endif /* VTS_Array_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.mpc
new file mode 100644
index 00000000000..839a9e5ef50
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Array/VTS_Array_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopics_Base -l .. -o ../lib -u DDS VTS_Array_Connector"
+
+project(DDS_VTS_ARRAY_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTS_ARRAY_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTS_Array_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTS_ARRAY_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTS_Array_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTS_ARRAY_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTS_Array_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTS_ARRAY_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTS_Array_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTS_Array_Connector.idl
+ }
+}
+
+project(DDS_VTS_ARRAY_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTS_ARRAY_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTS_ARRAY_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTS_Array_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTS_Array_ConnectorE.idl
+ }
+}
+
+project(DDS_VTS_ARRAY_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTS_ARRAY_Connector_lem_gen DDS_VTS_Array_Connector_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTS_Array_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_ARRAY_Connector_lem_stub
+ dynamicflags = VTS_ARRAY_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Array_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTS_Array_ConnectorEC.h
+ VTS_Array_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Array_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTS_Array_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTS_ARRAY_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_Array_Connector_stub
+ dynamicflags = VTS_ARRAY_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Array_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTS_Array_ConnectorC.h
+ VTS_Array_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Array_ConnectorC.inl
+ }
+}
+
+project(DDS_VTS_Array_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTS_ARRAY_Connector_lem_stub DDS_VTS_Array_Connector_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTS_Array_Connector_exec
+ libs += DDS_VTS_Array_Connector_stub DDS_VTS_ARRAY_Connector_lem_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_ARRAY_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Array_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTS_Array_Connector_conn.h
+ VTS_Array_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTS_Array_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTS_ARRAY_Connector_lem_stub DDS_VTS_Array_Connector_exec DDS_VTS_Array_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTS_Array_Connector_svnt
+ libs += DDS_VTS_Array_Connector_stub \
+ DDS_VTS_ARRAY_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTS_Array_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_ARRAY_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Array_ConnectorS.cpp
+ VTS_Array_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTS_Array_ConnectorS.h
+ VTS_Array_Connector_svnt.h
+ VTS_Array_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTS_Array_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.idl
new file mode 100644
index 00000000000..4d2ef4d08cb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTS_Seq_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTS_SEQ_CONNECTOR_IDL_
+#define VTS_SEQ_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Seq/VTS_Seq_ConnectorE.idl"
+
+module VTopics
+{
+ module ::CCM_DDS::Typed < ::TopicSeq, ::TopicSeqSeq> TopicSeqConn;
+ connector VTS_Seq_Connector : TopicSeqConn::DDS_State
+ {
+ };
+};
+
+#endif /* VTS_SEQ_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.mpc
new file mode 100644
index 00000000000..d11a8536328
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Seq/VTS_Seq_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopics_Base -l .. -o ../lib -u DDS VTS_Seq_Connector"
+
+project(DDS_VTS_SEQ_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTS_SEQ_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTS_Seq_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTS_SEQ_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTS_Seq_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTS_SEQ_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTS_Seq_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTS_SEQ_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTS_Seq_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTS_Seq_Connector.idl
+ }
+}
+
+project(DDS_VTS_SEQ_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTS_SEQ_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTS_SEQ_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTS_Seq_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTS_Seq_ConnectorE.idl
+ }
+}
+
+project(DDS_VTS_SEQ_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTS_SEQ_Connector_lem_gen DDS_VTS_Seq_Connector_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTS_Seq_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_SEQ_Connector_lem_stub
+ dynamicflags = VTS_SEQ_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Seq_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTS_Seq_ConnectorEC.h
+ VTS_Seq_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Seq_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTS_Seq_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTS_SEQ_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_Seq_Connector_stub
+ dynamicflags = VTS_SEQ_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Seq_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTS_Seq_ConnectorC.h
+ VTS_Seq_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Seq_ConnectorC.inl
+ }
+}
+
+project(DDS_VTS_Seq_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTS_SEQ_Connector_lem_stub DDS_VTS_Seq_Connector_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTS_Seq_Connector_exec
+ libs += DDS_VTS_Seq_Connector_stub DDS_VTS_SEQ_Connector_lem_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_SEQ_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Seq_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTS_Seq_Connector_conn.h
+ VTS_Seq_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTS_Seq_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTS_SEQ_Connector_lem_stub DDS_VTS_Seq_Connector_exec DDS_VTS_Seq_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTS_Seq_Connector_svnt
+ libs += DDS_VTS_Seq_Connector_stub \
+ DDS_VTS_SEQ_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTS_Seq_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_SEQ_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Seq_ConnectorS.cpp
+ VTS_Seq_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTS_Seq_ConnectorS.h
+ VTS_Seq_Connector_svnt.h
+ VTS_Seq_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTS_Seq_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.idl
new file mode 100644
index 00000000000..c3c0736f42d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTS_String_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTS_STRING_CONNECTOR_IDL_
+#define VTS_STRING_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_String/VTS_String_ConnectorE.idl"
+
+module VTopics
+{
+ module ::CCM_DDS::Typed < ::TopicString, ::TopicStringSeq> TopicStringConn;
+ connector VTS_String_Connector : TopicStringConn::DDS_Event
+ {
+ };
+};
+
+#endif /* VTS_STRING_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.mpc
new file mode 100644
index 00000000000..35548bf3c23
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_String/VTS_String_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopics_Base -l .. -o ../lib -u DDS VTS_String_Connector"
+
+project(DDS_VTS_STRING_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTS_STRING_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTS_String_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTS_STRING_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTS_String_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTS_STRING_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTS_String_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTS_STRING_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTS_String_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTS_String_Connector.idl
+ }
+}
+
+project(DDS_VTS_STRING_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTS_STRING_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTS_STRING_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTS_String_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTS_String_ConnectorE.idl
+ }
+}
+
+project(DDS_VTS_STRING_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTS_STRING_Connector_lem_gen DDS_VTS_String_Connector_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTS_String_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_STRING_Connector_lem_stub
+ dynamicflags = VTS_STRING_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_String_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTS_String_ConnectorEC.h
+ VTS_String_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_String_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTS_String_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTS_STRING_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_String_Connector_stub
+ dynamicflags = VTS_STRING_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_String_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTS_String_ConnectorC.h
+ VTS_String_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_String_ConnectorC.inl
+ }
+}
+
+project(DDS_VTS_String_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTS_STRING_Connector_lem_stub DDS_VTS_String_Connector_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTS_String_Connector_exec
+ libs += DDS_VTS_String_Connector_stub DDS_VTS_STRING_Connector_lem_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_STRING_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_String_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTS_String_Connector_conn.h
+ VTS_String_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTS_String_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTS_STRING_Connector_lem_stub DDS_VTS_String_Connector_exec DDS_VTS_String_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTS_String_Connector_svnt
+ libs += DDS_VTS_String_Connector_stub \
+ DDS_VTS_STRING_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTS_String_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_STRING_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_String_ConnectorS.cpp
+ VTS_String_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTS_String_ConnectorS.h
+ VTS_String_Connector_svnt.h
+ VTS_String_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTS_String_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.idl
new file mode 100644
index 00000000000..435b3b84eb9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTS_Union_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef VT_UNION_CONNECTOR_IDL_
+#define VT_UNION_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Union/VTS_Union_ConnectorE.idl"
+
+module VTopic
+{
+ module ::CCM_DDS::Typed < ::TopicUnion, ::TopicUnionSeq> TopicUnionConn;
+ connector VT_Union_Connector : TopicUnionConn::DDS_State
+ {
+ };
+};
+
+#endif /* VT_UNION_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.mpc
new file mode 100644
index 00000000000..90919833140
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Union/VTS_Union_Connector.mpc
@@ -0,0 +1,144 @@
+// $Id$
+
+project(DDS_VTS_Union_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VT_UNION_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTS_Union_Connector_stub_export.h \
+ -Wb,skel_export_macro=VT_UNION_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTS_Union_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VT_UNION_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTS_Union_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VT_UNION_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTS_Union_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTS_Union_Connector.idl
+ }
+}
+
+project(DDS_VTS_Union_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTS_Union_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VT_UNION_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTS_Union_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTS_Union_ConnectorE.idl
+ }
+}
+
+project(DDS_VTS_Union_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTS_Union_Connector_lem_gen DDS_VTS_Union_Connector_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTS_Union_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_Union_Connector_lem_stub
+ dynamicflags = VT_UNION_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Union_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTS_Union_ConnectorEC.h
+ VTS_Union_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Union_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTS_Union_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTS_Union_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_Union_Connector_stub
+ dynamicflags = VT_UNION_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Union_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTS_Union_ConnectorC.h
+ VTS_Union_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Union_ConnectorC.inl
+ }
+}
+
+project(DDS_VTS_Union_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTS_Union_Connector_lem_stub DDS_VTS_Union_Connector_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTS_Union_Connector_exec
+ libs += DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_lem_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_UNION_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Union_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTS_Union_Connector_conn.h
+ VTS_Union_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTS_Union_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTS_Union_Connector_lem_stub DDS_VTS_Union_Connector_exec \
+ DDS_VTS_Union_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTS_Union_Connector_svnt
+ libs += DDS_VTS_Union_Connector_stub \
+ DDS_VTS_Union_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTS_Union_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VT_UNION_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Union_ConnectorS.cpp
+ VTS_Union_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTS_Union_ConnectorS.h
+ VTS_Union_Connector_svnt.h
+ VTS_Union_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTS_Union_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.idl
new file mode 100644
index 00000000000..6d61eb185d0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTS_Valuetype_Connector.idl
+ * @author Marcel Smit <msmit@remedy.nl>
+ */
+
+#ifndef VTS_VALUE_TYPE_CONNECTOR_IDL_
+#define VTS_VALUE_TYPE_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Conn_Valuetype/VTS_Valuetype_ConnectorE.idl"
+
+module VTopics
+{
+ module ::CCM_DDS::Typed < ::TopicValuetype, ::TopicValuetypeSeq> TopicValuetypeConn;
+ connector VTS_Valuetype_Connector : TopicValuetypeConn::DDS_State
+ {
+ };
+};
+
+#endif /* VTS_VALUE_TYPE_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.mpc
new file mode 100644
index 00000000000..63d11365dd6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Conn_Valuetype/VTS_Valuetype_Connector.mpc
@@ -0,0 +1,147 @@
+// $Id$
+
+project(DDS_VTS_Valuetype_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTS_VALUE_TYPE_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTS_Valuetype_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTS_VALUE_TYPE_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTS_Valuetype_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTS_VALUE_TYPE_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTS_Valuetype_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTS_VALUE_TYPE_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTS_Valuetype_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTS_Valuetype_Connector.idl
+ }
+}
+
+project(DDS_VTS_Valuetype_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTS_Valuetype_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTS_VALUE_TYPE_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTS_Valuetype_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTS_Valuetype_ConnectorE.idl
+ }
+}
+
+project(DDS_VTS_VALUE_TYPE_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTS_Valuetype_Connector_lem_gen DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTS_Valuetype_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_VALUE_TYPE_Connector_lem_stub
+ dynamicflags = VTS_VALUE_TYPE_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Valuetype_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTS_Valuetype_ConnectorEC.h
+ VTS_Valuetype_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Valuetype_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTS_Valuetype_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTS_Valuetype_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTS_Valuetype_Connector_stub
+ dynamicflags = VTS_VALUE_TYPE_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Valuetype_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTS_Valuetype_ConnectorC.h
+ VTS_Valuetype_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTS_Valuetype_ConnectorC.inl
+ }
+}
+
+project(DDS_VTS_Valuetype_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTS_VALUE_TYPE_Connector_lem_stub DDS_VTS_Valuetype_Connector_stub \
+ DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTS_Valuetype_Connector_exec
+ libs += DDS_VTS_Valuetype_Connector_stub DDS_VTS_VALUE_TYPE_Connector_lem_stub \
+ DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_VALUE_TYPE_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Valuetype_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTS_Valuetype_Connector_conn.h
+ VTS_Valuetype_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTS_Valuetype_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTS_VALUE_TYPE_Connector_lem_stub DDS_VTS_Valuetype_Connector_exec\
+ DDS_VTS_Valuetype_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTS_Valuetype_Connector_svnt
+ libs += DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_VALUE_TYPE_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTS_Valuetype_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTS_VALUE_TYPE_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTS_Valuetype_ConnectorS.cpp
+ VTS_Valuetype_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTS_Valuetype_ConnectorS.h
+ VTS_Valuetype_Connector_svnt.h
+ VTS_Valuetype_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTS_Valuetype_ConnectorS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.idl
new file mode 100644
index 00000000000..cd1748ae3b1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file VTopics_Connector.idl
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef VTOPICS_CONNECTOR_IDL_
+#define VTOPICS_CONNECTOR_IDL_
+
+#include <Components.idl>
+#include "Base/VTopics_Base.idl"
+#include "connectors/dds4ccm/idl/ccm_dds.idl"
+
+#pragma ciao lem "Connector/VTopics_ConnectorE.idl"
+
+module VTopics
+{
+ module ::CCM_DDS::Typed < ::TestTopic, ::TestTopicSeq> TestTopicConn;
+ connector VTopics_Connector : TestTopicConn::DDS_State
+ {
+ };
+};
+
+#endif /* VTopics_CONNECTOR_IDL_ */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.mpc
new file mode 100644
index 00000000000..c311d36e795
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Connector/VTopics_Connector.mpc
@@ -0,0 +1,145 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopics_Base -l .. -o ../lib -u DDS VTopics_Connector"
+
+project(DDS_VTopics_Connector_idl_gen) : connectoridldefaults, dds4ccm {
+ after += DDS4CCM_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=VTOPICS_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=VTopics_Connector_stub_export.h \
+ -Wb,skel_export_macro=VTOPICS_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=VTopics_Connector_svnt_export.h \
+ -Wb,svnt_export_macro=VTOPICS_CONNECTOR_SVNT_Export \
+ -Wb,svnt_export_include=VTopics_Connector_svnt_export.h \
+ -Wb,conn_export_macro=VTOPICS_CONNECTOR_CONN_Export \
+ -Wb,conn_export_include=VTopics_Connector_conn_export.h \
+ -I ..
+
+ IDL_Files {
+ VTopics_Connector.idl
+ }
+}
+
+project(DDS_VTopics_Connector_lem_gen) : ciaoidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTopics_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=VTOPICS_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=VTopics_Connector_lem_stub_export.h \
+ -SS -Gxhst \
+ -I ..
+
+ IDL_Files {
+ VTopics_ConnectorE.idl
+ }
+}
+
+project(DDS_VTopics_Connector_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopics_Connector_lem_gen DDS_VTopics_Connector_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub
+ libs += DDS_VTopics_Base_stub DDS_VTopics_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTopics_Connector_lem_stub
+ dynamicflags = VTOPICS_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ VTopics_ConnectorEC.h
+ VTopics_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_ConnectorEC.inl
+ }
+}
+
+project(DDS_VTopics_Connector_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopics_Connector_idl_gen DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = DDS_VTopics_Connector_stub
+ dynamicflags = VTOPICS_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ConnectorC.cpp
+ }
+
+ Header_Files {
+ VTopics_ConnectorC.h
+ VTopics_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_ConnectorC.inl
+ }
+}
+
+project(DDS_VTopics_Connector_exec) : ciao_executor, dds4ccm_impl {
+ after += DDS_VTopics_Connector_lem_stub DDS_VTopics_Connector_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ sharedname = DDS_VTopics_Connector_exec
+ libs += DDS_VTopics_Connector_stub DDS_VTopics_Connector_lem_stub DDS_VTopics_Base_stub DDS4CCM_lem_stub DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTOPICS_CONNECTOR_CONN_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_Connector_conn.cpp
+ }
+
+ Header_Files {
+ VTopics_Connector_conn.h
+ VTopics_Connector_conn_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopics_Connector_svnt) : ciao_servant, dds4ccm_impl {
+ after += DDS_VTopics_Connector_lem_stub DDS_VTopics_Connector_exec DDS_VTopics_Connector_stub DDS4CCM_lem_stub
+ sharedname = DDS_VTopics_Connector_svnt
+ libs += DDS_VTopics_Connector_stub \
+ DDS_VTopics_Connector_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_exec \
+ DDS4CCM_lem_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = VTOPICS_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ConnectorS.cpp
+ VTopics_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ VTopics_ConnectorS.h
+ VTopics_Connector_svnt.h
+ VTopics_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopics_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.idl
new file mode 100644
index 00000000000..de6eabc74dd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "Connector/VTopics_Connector.idl"
+
+module VTopics
+{
+ component Receiver
+ {
+ port TestTopicConn::DDS_Listen info_out;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.mpc
new file mode 100644
index 00000000000..e4e4bdf788f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver.mpc
@@ -0,0 +1,176 @@
+// $Id$
+
+project(DDS_VTopics_Receiver_idl_gen) : componentidldefaults, dds4ccm {
+ custom_only = 1
+ after += DDS_VTopics_Connector_idl_gen
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h \
+ -Wb,svnt_export_macro=RECEIVER_SVNT_Export \
+ -Wb,svnt_export_include=Receiver_svnt_export.h \
+ -Wb,exec_export_macro=RECEIVER_EXEC_Export \
+ -Wb,exec_export_include=Receiver_exec_export.h -I..
+
+ IDL_Files {
+ VTopics_Receiver.idl
+ }
+}
+
+project(DDS_VTopics_Receiver_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_VTopics_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Receiver_lem_stub_export.h \
+ -SS -Gxhst -I..
+
+ IDL_Files {
+ VTopics_ReceiverE.idl
+ }
+}
+
+project(DDS_VTopics_Receiver_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopics_Receiver_lem_gen DDS_VTopics_Receiver_stub DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTS_String_Connector_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Seq_Connector_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Union_Connector_stub
+ libs += Receiver_stub DDS_VTopics_Connector_stub DDS_VTS_String_Connector_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Seq_Connector_stub DDS_VTopics_Base_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Union_Connector_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_lem_stub
+ dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ReceiverEC.cpp
+ }
+
+ Header_Files {
+ VTopics_ReceiverEC.h
+ Receiver_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_ReceiverEC.inl
+ }
+}
+
+project(DDS_VTopics_Receiver_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopics_Receiver_idl_gen DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTopics_Connector_lem_gen \
+ DDS_VTS_String_Connector_stub DDS_VTS_String_Connector_lem_gen \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Array_Connector_lem_gen \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Valuetype_Connector_lem_gen \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_lem_gen \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Seq_Connector_lem_gen
+ libs += DDS_VTopics_Connector_stub DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_Array_Connector_stub \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Seq_Connector_stub \
+ DDS_VTopics_Base_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Receiver_stub
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ReceiverC.cpp
+ }
+
+ Header_Files {
+ VTopics_ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_ReceiverC.inl
+ }
+}
+
+project(DDS_VTopics_Receiver_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_VTopics_Receiver_lem_stub DDS_VTopics_Receiver_stub DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTopics_Connector_lem_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_String_Connector_lem_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Array_Connector_lem_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Valuetype_Connector_lem_stub \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_lem_stub \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Seq_Connector_lem_stub \
+ DDS4CCM_lem_stub
+ sharedname = Receiver_exec
+ libs += Receiver_stub Receiver_lem_stub DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTS_String_Connector_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Seq_Connector_stub \
+ DDS_VTopics_Connector_lem_stub DDS4CCM_lem_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Union_Connector_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_Receiver_exec.cpp
+ }
+
+ Header_Files {
+ VTopics_Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopics_Receiver_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_VTopics_Receiver_lem_stub DDS_VTopics_Base_stub DDS_VTopics_Receiver_exec \
+ DDS_VTopics_Connector_stub DDS_VTopics_Connector_svnt DDS_VTopics_Connector_lem_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_String_Connector_svnt DDS_VTS_String_Connector_lem_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Array_Connector_svnt DDS_VTS_Array_Connector_lem_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Valuetype_Connector_svnt DDS_VTS_Valuetype_Connector_lem_stub \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_svnt DDS_VTS_Union_Connector_lem_stub \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Seq_Connector_svnt DDS_VTS_Seq_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ sharedname = Receiver_svnt
+ libs += Receiver_stub Receiver_lem_stub DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTS_String_Connector_stub DDS_VTS_Array_Connector_stub DDS_VTS_Seq_Connector_stub \
+ DDS_VTopics_Connector_svnt DDS_VTS_String_Connector_svnt DDS_VTS_Array_Connector_svnt DDS_VTS_Seq_Connector_svnt \
+ DDS_VTS_Valuetype_Connector_svnt DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_Union_Connector_svnt DDS_VTS_Union_Connector_stub \
+ Receiver_exec DDS_VTopics_Connector_lem_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_ReceiverS.cpp
+ VTopics_Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ VTopics_ReceiverS.h
+ VTopics_Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopics_ReceiverS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.cpp
new file mode 100644
index 00000000000..b822e6548ab
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.cpp
@@ -0,0 +1,158 @@
+// -*- C++ -*-
+//
+// $Id$
+
+//Test for different topic types , with DDS_STATE connector, look for 'SUBSCRIPTION_MATCHED_STATUS
+
+#include "VTopics_Receiver_exec.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+
+namespace CIAO_VTopics_Receiver_Impl
+{
+//============================================================
+ // Facet Executor Implementation Class: ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_Boolean &subscription_matched)
+ : subscription_matched_ (subscription_matched)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ConnectorStatusListener
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic (
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (! ::CORBA::is_nil(the_entity) &&
+ status_kind == DDS::SUBSCRIPTION_MATCHED_STATUS)
+ {
+ this->subscription_matched_ = true;
+ }
+ }
+
+ //============================================================
+ // Receiver_exec_i
+ //============================================================
+ Receiver_exec_i::Receiver_exec_i (void)
+ : subscription_matched_ (false)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Port operations.
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Receiver_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->subscription_matched_);
+ }
+
+ VTopics::TestTopicConn::CCM_Listener_ptr
+ Receiver_exec_i::get_info_out_data_listener (void)
+ {
+ return VTopics::TestTopicConn::CCM_Listener::_nil ();
+ }
+
+ CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_info_out_status (void)
+ {
+ return CCM_DDS::CCM_PortStatusListener::_nil ();
+ }
+
+ // Operations from Components::SessionComponent.
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::VTopics::CCM_Receiver_Context::_narrow (ctx);
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ if(!this->subscription_matched_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("status 'SUBSCRIPTION_MATCHED_STATUS' ")
+ ACE_TEXT ("in Receiver\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ")
+ ACE_TEXT ("'SUBSCRIPTION_MATCHED_STATUS' ")
+ ACE_TEXT ("in Receiver\n")
+ ));
+ }
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopics_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.h
new file mode 100644
index 00000000000..5a611357d68
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Receiver/VTopics_Receiver_exec.h
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_RECEIVER_EXEC_H_
+#define CIAO_RECEIVER_EXEC_H_
+
+#include "VTopics_ReceiverEC.h"
+
+#include /**/ "Receiver_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_VTopics_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Receiver_exec_i;
+
+ class RECEIVER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+
+ private:
+ Atomic_Boolean &subscription_matched_;
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported operations and attributes.
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ virtual VTopics::TestTopicConn::CCM_Listener_ptr
+ get_info_out_data_listener (void);
+
+ virtual CCM_DDS::CCM_PortStatusListener_ptr
+ get_info_out_status (void);
+
+ // Operations from Components::SessionComponent.
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ private:
+ ::VTopics::CCM_Receiver_Context_var context_;
+ Atomic_Boolean subscription_matched_;
+};
+
+ extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopics_Receiver_Impl (void);
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.idl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.idl
new file mode 100644
index 00000000000..aa69235d695
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @file
+ * @author Marijke Hengstmengel <mhengstmengel@remedy.nl>
+ *
+ * by-hand idl3 translation of sender components.
+ */
+
+#ifndef DDS_VTOPICS_SENDER_IDL
+#define DDS_VTOPICS_SENDER_IDL
+
+#include "Connector/VTopics_Connector.idl"
+
+module VTopics
+{
+ component Sender
+ {
+ port TestTopicConn::DDS_Update info_write;
+ provides CCM_DDS::ConnectorStatusListener connector_status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.mpc b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.mpc
new file mode 100644
index 00000000000..b4011de4d40
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender.mpc
@@ -0,0 +1,171 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p DDS_VTopics_Base -l ../lib -o ../lib -c controller -u DDS Sender"
+
+project(DDS_VTopics_Sender_idl_gen) : componentidldefaults, dds4ccm {
+ after += DDS_VTopics_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h \
+ -Wb,svnt_export_macro=SENDER_SVNT_Export \
+ -Wb,svnt_export_include=Sender_svnt_export.h \
+ -Wb,exec_export_macro=SENDER_EXEC_Export \
+ -Wb,exec_export_include=Sender_exec_export.h \
+ -I ..
+
+ IDL_Files {
+ VTopics_Sender.idl
+ }
+}
+
+project(DDS_VTopics_Sender_lem_gen) : ciaoidldefaults, dds4ccm {
+ after += DDS_VTopics_Sender_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \
+ -Wb,stub_export_include=Sender_lem_stub_export.h \
+ -SS -Gxhst -I $CIAO_ROOT/connectors -I ..
+
+ IDL_Files {
+ VTopics_SenderE.idl
+ }
+}
+
+project(DDS_VTopics_Sender_lem_stub) : ccm_svnt, dds4ccm_base {
+ after += DDS_VTopics_Sender_lem_gen DDS_VTopics_Sender_stub DDS_VTopics_Base_stub
+ libs += DDS_VTopics_Base_stub Sender_stub
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ sharedname = Sender_lem_stub
+ dynamicflags = SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_SenderEC.cpp
+ }
+
+ Header_Files {
+ VTopics_SenderEC.h
+ Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_SenderEC.inl
+ }
+}
+
+project(DDS_VTopics_Sender_stub) : ccm_stub, dds4ccm_base {
+ after += DDS_VTopics_Sender_idl_gen DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_stub DDS_VTS_String_Connector_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Seq_Connector_stub
+ libs += DDS_VTopics_Base_stub DDS_VTopics_Connector_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_Array_Connector_stub \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_Union_Connector_stub
+ includes += ..
+ libpaths += ../lib
+ libout = ../lib
+ sharedname = Sender_stub
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_SenderC.cpp
+ }
+
+ Header_Files {
+ VTopics_SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ VTopics_SenderC.inl
+ }
+}
+
+project(DDS_VTopics_Sender_exec) : ciao_executor, dds4ccm_base {
+ after += DDS_VTopics_Sender_lem_stub DDS_VTopics_Sender_stub \
+ DDS_VTopics_Connector_lem_stub DDS_VTopics_Connector_stub \
+ DDS_VTS_String_Connector_lem_stub DDS_VTS_String_Connector_stub \
+ DDS_VTS_Array_Connector_lem_stub DDS_VTS_Array_Connector_stub \
+ DDS_VTS_Valuetype_Connector_lem_stub DDS_VTS_Valuetype_Connector_stub \
+ DDS_VTS_Union_Connector_lem_stub DDS_VTS_Union_Connector_stub \
+ DDS_VTS_Seq_Connector_lem_stub DDS_VTS_Seq_Connector_stub \
+ DDS4CCM_lem_stub
+ sharedname = Sender_exec
+ libs += Sender_stub Sender_lem_stub DDS_VTopics_Base_stub \
+ DDS_VTopics_Connector_lem_stub DDS_VTopics_Connector_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_Array_Connector_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Seq_Connector_stub \
+ DDS_VTS_Union_Connector_stub DDS4CCM_lem_stub
+ libpaths += ../lib
+ includes += ..
+ libout = ../lib
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_Sender_exec.cpp
+ }
+
+ Header_Files {
+ VTopics_Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_VTopics_Sender_svnt) : ciao_servant, dds4ccm_base {
+ after += DDS_VTopics_Base_stub DDS_VTopics_Sender_lem_stub DDS4CCM_lem_stub \
+ DDS4CCM_skel \
+ DDS_VTopics_Connector_stub DDS_VTopics_Connector_svnt DDS_VTopics_Connector_lem_stub \
+ DDS_VTS_String_Connector_stub DDS_VTS_String_Connector_svnt DDS_VTS_String_Connector_lem_stub \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Array_Connector_svnt DDS_VTS_Array_Connector_lem_stub \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Valuetype_Connector_svnt DDS_VTS_Valuetype_Connector_lem_stub \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_svnt DDS_VTS_Union_Connector_lem_stub \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Seq_Connector_svnt DDS_VTS_Seq_Connector_lem_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub Sender_lem_stub \
+ DDS_VTopics_Base_stub \
+ DDS4CCM_lem_stub DDS4CCM_skel \
+ DDS_VTopics_Connector_stub DDS_VTopics_Connector_svnt \
+ DDS_VTS_String_Connector_stub DDS_VTS_String_Connector_svnt \
+ DDS_VTS_Array_Connector_stub DDS_VTS_Array_Connector_svnt \
+ DDS_VTS_Valuetype_Connector_stub DDS_VTS_Valuetype_Connector_svnt \
+ DDS_VTS_Union_Connector_stub DDS_VTS_Union_Connector_svnt \
+ DDS_VTS_Seq_Connector_stub DDS_VTS_Seq_Connector_svnt
+ libpaths += ../lib
+ libout = ../lib
+ includes += ..
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ VTopics_SenderS.cpp
+ VTopics_Sender_svnt.cpp
+ }
+
+ Header_Files {
+ VTopics_SenderS.h
+ VTopics_Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ VTopics_SenderS.inl
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.cpp
new file mode 100644
index 00000000000..059372ba636
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.cpp
@@ -0,0 +1,140 @@
+// -*- C++ -*-
+// $Id$
+
+
+//Test different topic types, with DDS_STATE connector, look for 'PUBLICATION_MATCHED_STATUS
+#include "VTopics_Sender_exec.h"
+#include "dds4ccm/impl/dds/Utils.h"
+
+namespace CIAO_VTopics_Sender_Impl
+{
+ //============================================================
+ // ConnectorStatusListener_exec_i
+ //============================================================
+ ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (
+ Atomic_Boolean &publication_matched)
+ : publication_matched_ (publication_matched)
+ {
+ }
+
+ ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_inconsistent_topic(
+ ::DDS::Topic_ptr /*the_topic*/,
+ const DDS::InconsistentTopicStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_requested_incompatible_qos (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::RequestedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_sample_rejected (
+ ::DDS::DataReader_ptr /*the_reader*/,
+ const DDS::SampleRejectedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_deadline_missed (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedDeadlineMissedStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_offered_incompatible_qos (
+ ::DDS::DataWriter_ptr /*the_writer*/,
+ const DDS::OfferedIncompatibleQosStatus & /*status*/)
+ {
+ }
+
+ void ConnectorStatusListener_exec_i::on_unexpected_status (
+ ::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind)
+ {
+ if (! ::CORBA::is_nil (the_entity) &&
+ status_kind == DDS::PUBLICATION_MATCHED_STATUS)
+ {
+ this->publication_matched_ = true;
+ }
+ }
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : publication_matched_ (false)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ Sender_exec_i::get_connector_status (void)
+ {
+ return new ConnectorStatusListener_exec_i (this->publication_matched_);
+ }
+
+ // Supported operations and attributes.
+ void
+ Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
+ {
+ this->context_ = ::VTopics::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ if(!this->publication_matched_.value ())
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: did not receive the expected ")
+ ACE_TEXT ("states 'PUBLICATION_MATCHED_STATUS' ")
+ ACE_TEXT ("in Sender\n")
+ ));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Received the expected ")
+ ACE_TEXT ("'PUBLICATION_MATCHED_STATUS' ")
+ ACE_TEXT ("in Sender\n")
+ ));
+ }
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopics_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+ ACE_NEW_NORETURN (
+ retval,
+ Sender_exec_i);
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.h
new file mode 100644
index 00000000000..f2086ba3883
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/Sender/VTopics_Sender_exec.h
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_SENDER_EXEC_H_
+#define CIAO_SENDER_EXEC_H_
+
+
+#include "VTopics_SenderEC.h"
+
+#include /**/ "Sender_exec_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIAO_VTopics_Sender_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+
+ class Sender_exec_i;
+
+ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
+ : public virtual ::CCM_DDS::CCM_ConnectorStatusListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ConnectorStatusListener_exec_i (Atomic_Boolean &);
+ virtual ~ConnectorStatusListener_exec_i (void);
+
+ virtual
+ void on_inconsistent_topic (::DDS::Topic_ptr the_topic,
+ const DDS::InconsistentTopicStatus & status);
+ virtual
+ void on_requested_incompatible_qos (::DDS::DataReader_ptr the_reader,
+ const DDS::RequestedIncompatibleQosStatus & status);
+ virtual
+ void on_sample_rejected (::DDS::DataReader_ptr the_reader,
+ const DDS::SampleRejectedStatus & status);
+ virtual
+ void on_offered_deadline_missed (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedDeadlineMissedStatus & status);
+ virtual
+ void on_offered_incompatible_qos (::DDS::DataWriter_ptr the_writer,
+ const DDS::OfferedIncompatibleQosStatus & status);
+ virtual
+ void on_unexpected_status (::DDS::Entity_ptr the_entity,
+ ::DDS::StatusKind status_kind);
+ private:
+ Atomic_Boolean &publication_matched_;
+ };
+
+ class Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ virtual void set_session_context (::Components::SessionContext_ptr ctx);
+
+ virtual void configuration_complete (void);
+ virtual void ccm_activate (void);
+ virtual void ccm_passivate (void);
+ virtual void ccm_remove (void);
+
+ // Port operations.
+ virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr
+ get_connector_status (void);
+
+ private:
+ ::VTopics::CCM_Sender_Context_var context_;
+
+ Atomic_Boolean publication_matched_;
+};
+
+ extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_VTopics_Sender_Impl (void);
+
+}
+
+#endif /* ifndef */
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/Plan.cdp
new file mode 100644
index 00000000000..d2a09c3cb23
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/Plan.cdp
@@ -0,0 +1,815 @@
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>VTopics_Depl_1</label>
+ <UUID>VTopics_Depl_1</UUID>
+
+ <implementation xmi:id="ReceiverComponentImplementation">
+ <name>ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Receiver_ExecArtifact" />
+ <artifact xmi:idref="Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_Receiver_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_Receiver_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VTopics_ConnectorComponentImplementation">
+ <name>VTopics_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VTopics_Connector_ExecArtifact" />
+ <artifact xmi:idref="VTopics_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTopics_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTopics_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTopics_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTopics_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VTS_String_ConnectorComponentImplementation">
+ <name>VTS_String_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VTS_String_Connector_ExecArtifact" />
+ <artifact xmi:idref="VTS_String_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_String_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_String_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_String_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_String_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VTS_Array_ConnectorComponentImplementation">
+ <name>VTS_Array_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VTS_Array_Connector_ExecArtifact" />
+ <artifact xmi:idref="VTS_Array_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_Array_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_Array_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_Array_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_Array_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="VTS_Seq_ConnectorComponentImplementation">
+ <name>VTS_Seq_ConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="VTS_Seq_Connector_ExecArtifact" />
+ <artifact xmi:idref="VTS_Seq_Connector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_Seq_Connector_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_VTS_Seq_Connector_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_Seq_Connector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>VTS_Seq_Connector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="SenderComponentImplementation">
+ <name>SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Sender_ExecArtifact" />
+ <artifact xmi:idref="Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>component factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_Sender_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_VTopics_Sender_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+ <instance xmi:id="ReceiverComponentInstance">
+ <name>ReceiverComponent</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="ReceiverComponentImplementation" />
+ </instance>
+
+ <instance xmi:id="VTopics_ConnectorComponentInstance">
+ <name>VTopics_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTopics_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VTopics_ConnectorComponentInstance2">
+ <name>VTopics_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTopics_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestUS</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VTS_String_ConnectorComponentInstance">
+ <name>VTS_String_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_String_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestString</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VTS_String_ConnectorComponentInstance2">
+ <name>VTS_String_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_String_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestString</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VTS_Array_ConnectorComponentInstance">
+ <name>VTS_Array_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_Array_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestArray</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VTS_Array_ConnectorComponentInstance2">
+ <name>VTS_Array_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_Array_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestArray</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="VTS_Seq_ConnectorComponentInstance">
+ <name>VTS_Seq_ConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_Seq_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestSeq</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="VTS_Seq_ConnectorComponentInstance2">
+ <name>VTS_Seq_ConnectorComponent2</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="VTS_Seq_ConnectorComponentImplementation" />
+ <configProperty>
+ <name>topic_name</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TestSeq</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="SenderComponentInstance">
+ <name>SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="SenderComponentImplementation" />
+ </instance>
+
+ <!--
+ *****************************
+ Regular connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTopics_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTopics_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <!-- connection in order to establish a publication_matched
+ -->
+ <connection>
+ <name>info_write_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_write_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>observable_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="VTopics_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+ <!-- connection in order to establish a subscription_matched
+ -->
+ <connection>
+ <name>info_out_data</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>info_out_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_observer_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="VTopics_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ String connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_string</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_String_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_string</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_String_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ Array connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_array</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_Array_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_array</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_Array_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!--
+ *****************************
+ Sequence connector connections
+ *****************************
+ -->
+ <connection>
+ <name>connector_status_receiver_seq</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_Seq_ConnectorComponentInstance2" />
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>connector_status_sender_seq</name>
+ <deployRequirement>
+ <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name>
+ <resourceType>Local_Interface</resourceType>
+ </deployRequirement>
+ <internalEndpoint>
+ <portName>connector_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>error_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="VTS_Seq_ConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Sender_ExecArtifact">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Sender_SvntArtifact">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_svnt</location>
+ </artifact>
+ <artifact xmi:id="Sender_StubArtifact">
+ <name>Sender_stub</name>
+ <source/>
+ <node/>
+ <location>Sender_stub</location>
+ </artifact>
+ <artifact xmi:id="VTopics_Connector_ExecArtifact">
+ <name>VTopics_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopics_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VTopics_Connector_SvntArtifact">
+ <name>VTopics_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopics_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VTopics_Connector_StubArtifact">
+ <name>VTopics_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VTopics_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VTS_String_Connector_ExecArtifact">
+ <name>VTS_String_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_String_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VTS_String_Connector_SvntArtifact">
+ <name>VTS_String_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_String_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VTS_String_Connector_StubArtifact">
+ <name>VTS_String_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDSVTS_String_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VTS_Array_Connector_ExecArtifact">
+ <name>VTS_Array_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Array_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VTS_Array_Connector_SvntArtifact">
+ <name>VTS_Array_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Array_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VTS_Array_Connector_StubArtifact">
+ <name>VTS_Array_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Array_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="VTS_Seq_Connector_ExecArtifact">
+ <name>VTS_Seq_Connector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Seq_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="VTS_Seq_Connector_SvntArtifact">
+ <name>VTS_Seq_Connector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Seq_Connector_svnt</location>
+ </artifact>
+ <artifact xmi:id="VTS_Seq_Connector_StubArtifact">
+ <name>VTS_Seq_Connector_stub</name>
+ <source/>
+ <node/>
+ <location>DDS_VTS_Seq_Connector_stub</location>
+ </artifact>
+
+ <artifact xmi:id="Receiver_ExecArtifact">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Receiver_SvntArtifact">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_svnt</location>
+ </artifact>
+ <artifact xmi:id="Receiver_StubArtifact">
+ <name>Receiver_stub</name>
+ <source/>
+ <node/>
+ <location>Receiver_stub</location>
+ </artifact>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/run_test.pl
new file mode 100755
index 00000000000..d7266527ff7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/tests/VariousTopicsState/descriptors/run_test.pl
@@ -0,0 +1,244 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::TestTarget;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DANCE_ROOT = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$nr_daemon = 2;
+@ports = ( 60001, 60002 );
+@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" );
+@iorfiles = 0;
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+# ior files other than daemon
+# ior files other than daemon
+$ior_nsbase = "ns.ior";
+$ior_nsfile = 0;
+$ior_embase = "EM.ior";
+$ior_emfile = 0;
+
+# Processes
+$E = 0;
+$EM = 0;
+$NS = 0;
+@DEAMONS = 0;
+
+# targets
+@tg_daemons = 0;
+$tg_naming = 0;
+$tg_exe_man = 0;
+$tg_executor = 0;
+
+$status = 0;
+$cdp_file = "Plan.cdp";
+
+sub create_targets {
+ # naming service
+ $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n";
+ $tg_naming->AddLibPath ('../lib');
+ # daemon
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n";
+ $tg_daemons[$i]->AddLibPath ('../lib');
+ }
+ # execution manager
+ $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n";
+ $tg_exe_man->AddLibPath ('../lib');
+ # executor (plan_launcher)
+ $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n";
+ $tg_executor->AddLibPath ('../lib');
+}
+
+sub init_ior_files {
+ $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase);
+ $ior_emfile = $tg_exe_man->LocalFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+ delete_ior_files ();
+}
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $tg_daemons[$i]->DeleteFile ($iorbases[$i]);
+ }
+ $tg_naming->DeleteFile ($ior_nsbase);
+ $tg_exe_man->DeleteFile ($ior_embase);
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]);
+ }
+}
+
+sub kill_node_daemon {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemon ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill (); $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill (); $NS->TimedWait (1);
+ }
+ # in case shutdown did not perform as expected
+ $tg_executor->KillAll ('ciao_componentserver');
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $nr_daemon; ++$i) {
+ $iorbase = $iorbases[$i];
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DANCE_ROOT/bin/dance_node_manager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService";
+
+ print "Run dance_node_manager with $d_param\n";
+
+ $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param);
+ $DEAMONS[$i]->Spawn ();
+
+ if ($tg_daemons[$i]->WaitForFileTimed($iorbase,
+ $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+create_targets ();
+init_ior_files ();
+
+# Invoke naming service
+
+$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile");
+
+$ns_status = $NS->Spawn ();
+
+if ($ns_status != 0) {
+ print STDERR "ERROR: Unable to execute the naming service\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if ($tg_naming->WaitForFileTimed ($ior_nsbase,
+ $tg_naming->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill (); $NS->TimedWait (1);
+ exit 1;
+}
+
+$ns_running = 1;
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+# Invoke node daemon.
+print "Invoking node daemon\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemon\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n";
+$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager",
+ "-e$ior_emfile --domain-nc corbaloc:rir:/NameService");
+$em_status = $EM->Spawn ();
+
+if ($em_status != 0) {
+ print STDERR "ERROR: dance_execution_manager returned $em_status";
+ exit 1;
+}
+
+if ($tg_exe_man->WaitForFileTimed ($ior_embase,
+ $tg_exe_man->ProcessStartWaitInterval ()) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - launch the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n";
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://$ior_emfile");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+for ($i = 0; $i < $nr_daemon; ++$i) {
+ if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i],
+ $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) {
+ print STDERR "ERROR: The ior file of daemon $i could not be found\n";
+ kill_open_processes ();
+ exit 1;
+ }
+}
+
+print "Sleeping 10 seconds to allow task to complete\n";
+sleep (10);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n";
+
+$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher",
+ "-k file://$ior_emfile -x $cdp_file -s");
+$pl_status = $E->SpawnWaitKill (2 * $tg_executor->ProcessStartWaitInterval ());
+
+if ($pl_status != 0) {
+ print STDERR "ERROR: dance_plan_launcher returned $pl_status\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;