summaryrefslogtreecommitdiff
path: root/modules/CIAO/connectors
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/connectors')
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc10
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp155
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc10
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp137
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl29
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p9
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc135
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl36
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc67
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl30
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc137
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl118
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp541
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h221
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp270
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h180
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p9
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc131
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl19
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc79
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl20
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc133
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl78
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp257
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h164
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp232
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h125
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp1413
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp1173
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp1084
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp1465
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp744
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp382
-rw-r--r--modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp334
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl206
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl206
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl222
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl218
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl218
-rwxr-xr-xmodules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl206
-rw-r--r--modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p12
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc118
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl356
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl331
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p22
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p24
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Getter.idl3p50
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl318
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p32
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p40
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl322
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p21
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p19
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p19
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p21
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p19
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p19
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p22
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Reader.idl3p45
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p25
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Updater.idl3p33
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Writer.idl3p19
-rw-r--r--modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl1206
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp254
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h140
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp114
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h64
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp187
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h104
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp79
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h66
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp517
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h188
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp128
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h67
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h60
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.cpp54
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.h60
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h55
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h41
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/NDDS_Traits.h47
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h47
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.cpp57
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.h42
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h55
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp247
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h116
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp82
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h67
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h34
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp88
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h74
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.cpp20
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.h17
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp63
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h63
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.cpp53
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.h40
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h47
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h28
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h51
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp60
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h61
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp255
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h127
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp120
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h82
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h56
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h35
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp117
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h81
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp55
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h57
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp36
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h27
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.h38
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.tpp105
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h58
-rw-r--r--modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc32
130 files changed, 18378 insertions, 0 deletions
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..3d4fca6fc38
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/DDS_Receiver.mpc
@@ -0,0 +1,10 @@
+// $Id$
+
+project(*receiver) : nddslib, acelib {
+ exename = DDS_receiver
+
+ 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..6228d9eec6f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Receiver/Hello_Receiver.cpp
@@ -0,0 +1,155 @@
+// $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 <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_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..1471cf1bf44
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/DDS_Sender.mpc
@@ -0,0 +1,10 @@
+// $Id$
+
+project(*sender) : nddslib, acelib {
+ exename = DDS_Sender
+
+ 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..67b654f23f6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/DDS_Sender/Hello_Sender.cpp
@@ -0,0 +1,137 @@
+// $Id$
+
+#include "ace/OS_main.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_unistd.h"
+#include <ndds/ndds_namespace_cpp.h>
+
+int number_of_iterations = 100;
+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:"));
+ 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 '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-s <send string>"
+ "-i <number of iterations>"
+ "\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;
+
+ /* 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 (2);
+
+ /* --- Write Data ----------------------------------------------------- */
+
+ for (int i = 0; i < number_of_iterations; i++)
+ {
+ retcode = string_writer->write(
+ send_string,
+ DDS_HANDLE_NIL);
+ if (retcode != DDS_RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Write failed: %d.\n"), retcode));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT("Sending: %C\n"), send_string));
+ }
+ ACE_OS::sleep (1);
+ }
+
+ /* --- 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..21f5f857470
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+#ifndef HELLO_RECEIVER_IDL3
+#define HELLO_RECEIVER_IDL3
+
+#include <Components.idl>
+
+#include "Hello_Receiver_Base.idl"
+
+module Hello_DDS
+{
+ component Receiver
+ {
+ uses CCM_DDS::string_Reader read_message_data;
+ uses CCM_DDS::ListenerControl read_message_control;
+ provides CCM_DDS::string_RawListener read_message_listener;
+ uses DDS::DataReader read_message_dds_entity;
+ provides CCM_DDS::PortStatusListener read_message_status;
+
+ attribute string name;
+ attribute unsigned long expected_samples;
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p
new file mode 100644
index 00000000000..ff75b9b823e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.idl3p
@@ -0,0 +1,9 @@
+#include "Hello_Base.idl3p"
+
+module Hello_DDS
+{
+ component Receiver
+ {
+ port DDS_RawListen<string> read_message;
+ };
+};
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..362e9c683e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver.mpc
@@ -0,0 +1,135 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -b ciao_example_output, dds4ccm_base Hello_Receiver"
+
+project(DDS_Hello_Receiver_idl_gen) : connectoridldefaults, ciao_example_output, dds4ccm_base {
+ custom_only = 1
+ 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 \
+ -I $(CIAO_ROOT)/connectors \
+ -Wb,exec_export_include=Hello_Receiver_exec_export.h
+
+ IDL_Files {
+ Hello_Receiver.idl
+ }
+}
+
+project(DDS_Hello_Receiver_lem_gen) : ciaoidldefaults , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_idl_gen
+ custom_only = 1
+ idlflags += -Gxhst -Wb,stub_export_macro=HELLO_RECEIVER_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_lem_stub_export.h \
+ -I $(CIAO_ROOT)/connectors \
+ -SS
+
+ IDL_Files {
+ Hello_ReceiverE.idl
+ }
+}
+
+project(DDS_Hello_Receiver_stub) : ccm_stub , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_idl_gen DDS_Hello_Receiver_Base_stub
+ libs += DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_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_lem_stub) : ccm_svnt , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_lem_gen DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+ libs += DDS_Hello_Receiver_Base_stub
+
+ sharedname = DDS_Hello_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_exec) : ciao_executor , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_stub DDS_Hello_Receiver_Base_stub
+ sharedname = DDS_Hello_Receiver_exec
+ libs += DDS_Hello_Receiver_stub DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+
+ 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 {
+ Hello_ReceiverEC.inl
+ }
+}
+
+
+project(DDS_Hello_Receiver_svnt) : ciao_servant, ciao_example_output, dds4ccm_skel {
+ after += DDS_Hello_Receiver_Base_stub DDS_Hello_Receiver_Base_skel DDS_Hello_Receiver_idl_gen DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_stub
+ sharedname = DDS_Hello_Receiver_svnt
+ libs += DDS_Hello_Receiver_stub DDS_Hello_Receiver_lem_stub DDS_Hello_Receiver_Base_stub DDS_Hello_Receiver_Base_skel
+ libpaths += ../lib
+
+ 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_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl
new file mode 100644
index 00000000000..1d8554048f0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+#include "dds4ccm/idl/dds4ccm_ListenerControl.idl3"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3"
+
+module CCM_DDS
+{
+ interface string_Reader
+ {
+ typedef sequence<string> stringSeq;
+
+ void read_all (out stringSeq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+
+ void read_all_history (out stringSeq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+
+ void read_one (inout string an_instance, out ReadInfo info)
+ raises (NonExistent,
+ InternalError);
+
+ void read_one_history (in string an_instance,
+ out stringSeq instances, out ReadInfoSeq infos)
+ raises (NonExistent,
+ InternalError);
+
+ attribute QueryFilter filter
+ setraises (BadParameter);
+ };
+
+ interface string_RawListener
+ {
+ void on_data (in string an_instance, in ReadInfo info);
+ };
+};
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc
new file mode 100644
index 00000000000..c4b9c94d69b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Base.mpc
@@ -0,0 +1,67 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n -b ciao_example_output, dds4ccm_base Hello_Receiver_Base"
+
+project(DDS_Hello_Receiver_Base_idl_gen) : connectoridldefaults , ciao_example_output, dds4ccm_base {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_RECEIVER_BASE_SKEL_Export \
+ -Wb,skel_export_include=Hello_Receiver_Base_skel_export.h \
+ -Wb,exec_export_macro=HELLO_RECEIVER_BASE_EXEC_Export \
+ -Wb,exec_export_include=Hello_Receiver_Base_exec_export.h
+
+ IDL_Files {
+ Hello_Receiver_Base.idl
+ }
+}
+
+project(DDS_Hello_Receiver_Base_stub) : ccm_stub , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_Base_idl_gen
+ libs +=
+
+ sharedname = DDS_Hello_Receiver_Base_stub
+ dynamicflags = HELLO_RECEIVER_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_BaseC.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_BaseC.h
+ Hello_Receiver_Base_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_BaseC.inl
+ }
+}
+
+project(DDS_Hello_Receiver_Base_skel) : ciao_executor , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_Base_stub
+ sharedname = DDS_Hello_Receiver_Base_skel
+ libs += DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+
+ dynamicflags = HELLO_RECEIVER_BASE_SKEL_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_BaseS.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_BaseS.h
+ Hello_Receiver_Base_skel_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_BaseS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl
new file mode 100644
index 00000000000..91b1953f4a2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+#ifndef HELLO_RECEIVER_CONNECTOR
+#define HELLO_RECEIVER_CONNECTOR
+
+
+#include <Components.idl>
+
+
+#include "Hello_Receiver_Base.idl"
+
+module Hello_DDS
+{
+ component Hello_receiver_Connector
+ {
+ provides CCM_DDS::string_Reader receiver_data;
+ provides CCM_DDS::ListenerControl receiver_control;
+ uses CCM_DDS::string_RawListener receiver_listener;
+#ifndef AVOID_E_IDL
+ provides DDS::DataReader receiver_dds_entity;
+#endif
+ uses CCM_DDS::PortStatusListener receiver_status;
+ };
+
+ home ReceiverConnectorHome manages Hello_receiver_Connector
+ {
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc
new file mode 100644
index 00000000000..e805055b633
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector.mpc
@@ -0,0 +1,137 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -b ciao_example_output, dds4ccm_base Hello_Receiver_Connector"
+
+project(DDS_Hello_Receiver_Connector_idl_gen) : connectoridldefaults , ciao_example_output, dds4ccm_base {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_Connector_stub_export.h \
+ -Wb,skel_export_macro=HELLO_RECEIVER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Hello_Receiver_Connector_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_RECEIVER_CONNECTOR_EXEC_Export \
+ -Wb,exec_export_include=Hello_Receiver_Connector_exec_export.h
+
+ IDL_Files {
+ idlflags -= -Glem
+ Hello_Receiver_Connector.idl
+ }
+}
+
+project(DDS_Hello_Receiver_Connector_lem_gen) : ciaoidldefaults , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_RECEIVER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Receiver_Connector_lem_stub_export.h \
+ -SS -I$(CIAO_ROOT)/connectors -Gxhst
+
+ IDL_Files {
+ Hello_Receiver_ConnectorE.idl
+ }
+}
+
+project(DDS_Hello_Receiver_Connector_stub) : ccm_stub , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_Connector_idl_gen DDS_Hello_Receiver_Base_stub
+ libs += DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_Receiver_Connector_stub
+ dynamicflags = HELLO_RECEIVER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_ConnectorC.h
+ Hello_Receiver_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_ConnectorC.inl
+ }
+}
+
+project(DDS_Hello_Receiver_Connector_lem_stub) : ccm_svnt , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Receiver_Connector_lem_gen DDS_Hello_Receiver_Base_stub
+ libs += DDS_Hello_Receiver_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_Receiver_Connector_lem_stub
+ dynamicflags = HELLO_RECEIVER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_ConnectorEC.h
+ Hello_Receiver_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_ConnectorEC.inl
+ }
+}
+
+project(DDS_Hello_Receiver_Connector_exec) : ciao_executor , ciao_example_output, dds4ccm_base, nddslib, ciao_dds4ccm_ndds_impl {
+ after += DDS_Hello_Receiver_Connector_lem_stub DDS_Hello_Receiver_Connector_stub DDS4CCM_lem_stub DDS_Hello_Receiver_Base_stub
+ sharedname = DDS_Hello_Receiver_Connector_exec
+ libs += DDS_Hello_Receiver_Connector_stub DDS_Hello_Receiver_Connector_lem_stub DDS_Hello_Receiver_Base_stub
+ libs += DDS4CCM_lem_stub
+ libpaths += ../lib
+
+ dynamicflags = HELLO_RECEIVER_CONNECTOR_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_Connector_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_Connector_exec.h
+ Hello_Receiver_Connector_exec_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_ConnectorEC.inl
+ }
+}
+
+
+project(Hello_Receiver_Connector_svnt) : ciao_servant , ciao_example_output, dds4ccm_skel {
+ after += DDS_Hello_Receiver_Base_skel DDS_Hello_Receiver_Connector_idl_gen DDS_Hello_Receiver_Connector_stub DDS_Hello_Receiver_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = DDS_Hello_Receiver_Connector_svnt
+ libs += DDS_Hello_Receiver_Connector_stub DDS_Hello_Receiver_Connector_lem_stub DDS_Hello_Receiver_Base_stub
+ libs += DDS_Hello_Receiver_Base_skel
+ libpaths += ../lib
+ libs += DDS4CCM_lem_stub
+
+ dynamicflags = HELLO_RECEIVER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Receiver_ConnectorS.cpp
+ Hello_Receiver_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_Receiver_ConnectorS.h
+ Hello_Receiver_Connector_svnt.h
+ Hello_Receiver_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_Receiver_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl
new file mode 100644
index 00000000000..ebea3544e5f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_ConnectorE.idl
@@ -0,0 +1,118 @@
+// -*- C++ -*-
+//
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v1.7.1
+ * 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
+ **/
+
+#ifndef _CIAO_HELLO_RECEIVER_CONNECTORE_IDL_
+#define _CIAO_HELLO_RECEIVER_CONNECTORE_IDL_
+
+#include "ccm/CCM_Container.idl"
+#include "Hello_Receiver_Connector.idl"
+#include "dds4ccm/idl/dds_rtf2_dcpsE.idl"
+
+module CCM_DDS
+{
+ local interface CCM_string_Reader : ::CCM_DDS::string_Reader
+ {
+ };
+};
+
+module CCM_DDS
+{
+ local interface CCM_ListenerControl : ::CCM_DDS::ListenerControl
+ {
+ };
+};
+
+/*
+ * module DDS
+{
+ local interface CCM_DataReader : ::DDS::DataReader
+ {
+ };
+};
+ */
+
+module Hello_DDS
+{
+ local interface CCM_Hello_receiver_Connector
+ : ::Components::EnterpriseComponent
+ {
+ ::CCM_DDS::CCM_string_Reader get_receiver_data ();
+ ::CCM_DDS::CCM_ListenerControl get_receiver_control ();
+ ::DDS::CCM_DataReader get_receiver_dds_entity ();
+ };
+
+ local interface CCM_Hello_receiver_Connector_Context
+ : ::Components::SessionContext
+ {
+ ::CCM_DDS::string_RawListener get_connection_receiver_listener ();
+ ::CCM_DDS::PortStatusListener get_connection_receiver_status ();
+ };
+};
+
+module CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ typedef ::Hello_DDS::CCM_Hello_receiver_Connector_Context Hello_receiver_Connector_Exec_Context;
+
+ local interface Hello_receiver_Connector_Exec
+ : ::Hello_DDS::CCM_Hello_receiver_Connector,
+ ::Components::SessionComponent
+ {
+ };
+};
+
+module Hello_DDS
+{
+ local interface CCM_ReceiverConnectorHomeImplicit
+ {
+ ::Components::EnterpriseComponent create ()
+ raises ( ::Components::CCMException);
+ };
+
+ local interface CCM_ReceiverConnectorHomeExplicit
+ : ::Components::HomeExecutorBase
+ {
+ };
+
+ local interface CCM_ReceiverConnectorHome
+ : CCM_ReceiverConnectorHomeExplicit,
+ CCM_ReceiverConnectorHomeImplicit
+ {
+ };
+};
+
+module CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ local interface ReceiverConnectorHome_Exec
+ : ::Hello_DDS::CCM_ReceiverConnectorHome
+ {
+ };
+};
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp
new file mode 100644
index 00000000000..8440156b8f7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.cpp
@@ -0,0 +1,541 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1278
+
+#define MAX_STRING_SIZE 1024
+
+#include "Hello_Receiver_Connector_exec.h"
+#include "ciao/CIAO_common.h"
+
+#include "dds4ccm/impl/ndds/DomainParticipantFactory.h"
+#include "dds4ccm/impl/ndds/DataReader.h"
+#include "dds4ccm/impl/ndds/Time_t.h"
+
+/* The listener of events and data from the middleware */
+class HelloListener : public ::DDS::DataReaderListener
+{
+ public:
+ HelloListener ( ::CCM_DDS::string_RawListener_ptr listener,
+ ::CCM_DDS::PortStatusListener_ptr statuslistener);
+ virtual void on_data_available( ::DDS::DataReader *reader);
+ 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);
+ bool enabled () const;
+ void enabled (bool enable);
+ private:
+ ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> enabled_;
+ ::CCM_DDS::string_RawListener_var listener_;
+ ::CCM_DDS::PortStatusListener_var statuslistener_;
+};
+
+/* This method gets called back by DDS when one or more data samples have been
+ * received.
+ */
+
+HelloListener::HelloListener ( ::CCM_DDS::string_RawListener_ptr listener, ::CCM_DDS::PortStatusListener_ptr statuslistener) :
+ enabled_ (true), // @todo should be false later on
+ listener_ ( ::CCM_DDS::string_RawListener::_duplicate (listener)),
+ statuslistener_ (::CCM_DDS::PortStatusListener::_duplicate (statuslistener))
+{
+}
+
+bool
+HelloListener::enabled () const
+{
+ return this->enabled_.value ();
+}
+
+void
+HelloListener::enabled (bool enable)
+{
+ this->enabled_ = enable;
+}
+
+void
+HelloListener::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status)
+{
+ this->statuslistener_->on_requested_deadline_missed (the_reader, status);
+}
+
+void
+HelloListener::on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status)
+{
+ this->statuslistener_->on_sample_lost (the_reader, status);
+}
+
+void
+HelloListener::on_data_available( ::DDS::DataReader *reader)
+{
+ if (this->enabled_.value ())
+ {
+ /* Perform a safe type-cast from a generic data reader into a
+ * specific data reader for the type "DDS::String"
+ */
+ ::CIAO::DDS4CCM::RTI::RTI_DataReader_i* rd = dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i*>(reader);
+ DDSStringDataReader * string_reader = DDSStringDataReader::narrow(rd->get_datareader ());
+ if (!string_reader) {
+ /* In this specific case, this will never fail */
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("DDSStringDataReader::narrow failed.\n")));
+ return;
+ }
+
+ /* Loop until there are messages available in the queue */
+ for(;;) {
+ char sample[MAX_STRING_SIZE];
+ char *ptr_sample = &sample[0];
+ 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) {
+ ::CCM_DDS::ReadInfo empty;
+ listener_->on_data (sample, empty);
+ }
+ }
+ }
+}
+
+namespace CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: string_Reader_exec_i
+ //============================================================
+
+ string_Reader_exec_i::string_Reader_exec_i (DDSStringDataReader *reader)
+ : reader_ (reader),
+ condition_ (0)
+ {
+ }
+
+ string_Reader_exec_i::~string_Reader_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::string_Reader
+
+ void
+ string_Reader_exec_i::read_all (
+ ::CCM_DDS::string_Reader::stringSeq_out /* instances */,
+ ::CCM_DDS::ReadInfoSeq_out /* infos */)
+ {
+ /* Your code here. */
+ }
+
+ void
+ string_Reader_exec_i::read_all_history (
+ ::CCM_DDS::string_Reader::stringSeq_out /* instances */,
+ ::CCM_DDS::ReadInfoSeq_out /* infos */)
+ {
+ /* DDS_StringSeq data;
+ DDS_SampleInfoSeq sample_info;
+ DDS_ReturnCode_t retval = this->reader_->read (data, sample_info);
+ */
+ }
+
+ void
+ string_Reader_exec_i::read_one (
+ char *& an_instance,
+ ::CCM_DDS::ReadInfo_out info)
+ {
+ // This has to be reworked using a reader template and traits.
+ DDS_StringSeq data;
+ DDS_SampleInfoSeq sample_info;
+ DDS_ReturnCode_t retval;
+ if (this->condition_)
+ {
+ retval = this->reader_->read_w_condition (data, sample_info, 1, this->condition_);
+ }
+ else
+ {
+ retval = this->reader_->read (data,
+ sample_info,
+ 1,
+ 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)
+ {
+ an_instance = data[0];
+ info.timestamp <<= sample_info[0].reception_timestamp;
+ }
+ else
+ {
+ //printf ("failed %d", retval);
+ throw ::CCM_DDS::InternalError (retval, 0);
+ }
+ }
+
+ void
+ string_Reader_exec_i::read_one_history (
+ const char * an_instance,
+ ::CCM_DDS::string_Reader::stringSeq_out /* instances */,
+ ::CCM_DDS::ReadInfoSeq_out /* infos */)
+ {
+ ::DDS_InstanceHandle_t instance_handle = this->reader_->lookup_instance (an_instance);
+ if (!DDS_InstanceHandle_equals (&instance_handle, & ::DDS_HANDLE_NIL))
+ {/*
+ DDS_StringSeq data;
+ DDS_SampleInfoSeq sample_info;
+ DDS_ReturnCode_t retval;
+ retval = this->reader_->read_instance (data, sample_info, DDS_LENGTH_UNLIMITED, instance_handle);
+ if (retval == DDS_RETCODE_OK)
+ {
+ // todo
+ }
+ */
+ }
+ else
+ {
+ ::CCM_DDS::InstanceNumberSeq seq;
+ throw ::CCM_DDS::NonExistent (seq);
+ }
+ }
+
+ ::CCM_DDS::QueryFilter *
+ string_Reader_exec_i::filter (void)
+ {
+ ::CCM_DDS::QueryFilter *qf = new ::CCM_DDS::QueryFilter;
+ qf->query = CORBA::string_dup (this->condition_->get_query_expression());
+ ::DDS_StringSeq seq;
+ ::DDS_ReturnCode_t const retval = this->condition_->get_query_parameters (seq);
+ if (retval == DDS_RETCODE_OK)
+ {
+ qf->query_parameters.length (seq.length ());
+ for (::DDS_Long index = 0; index < seq.length (); index++)
+ {
+ qf->query_parameters[index] = CORBA::string_dup (seq[index]);
+ }
+ }
+
+ return qf;
+ }
+
+ void
+ string_Reader_exec_i::filter (
+ const ::CCM_DDS::QueryFilter &filter)
+ {
+ if (this->condition_)
+ {
+ DDS_ReturnCode_t const retval = this->reader_->delete_readcondition (this->condition_);
+ ACE_UNUSED_ARG (retval);
+ }
+ DDS_StringSeq params;
+ for (::DDS::StringSeq::size_type index = 0; index < filter.query_parameters.length (); index++)
+ {
+ //params[index] = filter.query_parameters[index].in ();
+ }
+ this->condition_ = this->reader_->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,
+ params);
+ if (!this->condition_)
+ {
+ throw ::CCM_DDS::BadParameter ();
+ }
+ }
+ //============================================================
+ // Facet Executor Implementation Class: ListenerControl_exec_i
+ //============================================================
+
+ ListenerControl_exec_i::ListenerControl_exec_i (void)
+ {
+ }
+
+ ListenerControl_exec_i::~ListenerControl_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::ListenerControl
+
+ ::CORBA::Boolean
+ ListenerControl_exec_i::enabled (void)
+ {
+ // Need to control the data listener
+ /* Your code here. */
+ return false;
+ }
+
+ void
+ ListenerControl_exec_i::enabled (
+ ::CORBA::Boolean enabled)
+ {
+ if (enabled)
+ {
+ // @todo
+ }
+ }
+ //============================================================
+ // Facet Executor Implementation Class: DataReader_exec_i
+ //============================================================
+
+ //============================================================
+ // Component Executor Implementation Class: Hello_receiver_Connector_exec_i
+ //============================================================
+
+ Hello_receiver_Connector_exec_i::Hello_receiver_Connector_exec_i (void)
+ : dds_configured_ (false)
+ {
+ }
+
+ Hello_receiver_Connector_exec_i::~Hello_receiver_Connector_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ ::CCM_DDS::CCM_string_Reader_ptr
+ Hello_receiver_Connector_exec_i::get_receiver_data (void)
+ {
+ this->configure_dds ();
+ ::CIAO::DDS4CCM::RTI::RTI_DataReader_i* rd = dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataReader_i*>(this->dr_.in ());
+ DDSStringDataReader * string_reader = DDSStringDataReader::narrow(rd->get_datareader ());
+ if (string_reader)
+ return new string_Reader_exec_i (string_reader);
+
+ throw ::CORBA::INTERNAL ();
+ }
+
+ ::CCM_DDS::CCM_ListenerControl_ptr
+ Hello_receiver_Connector_exec_i::get_receiver_control (void)
+ {
+ this->configure_dds ();
+// return ::DDS::CCM_DataWriter::_duplicate (this->dw_.in ());
+
+ /* Your code here. */
+ // @todo
+ return new ListenerControl_exec_i ();
+ }
+
+ ::DDS::CCM_DataReader_ptr
+ Hello_receiver_Connector_exec_i::get_receiver_dds_entity (void)
+ {
+ this->configure_dds ();
+ /* Your code here. */
+ // @todo
+ return ::DDS::CCM_DataReader::_duplicate (this->dr_.in ());
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Hello_receiver_Connector_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ ::Hello_DDS::CCM_Hello_receiver_Connector_Context_var lctx =
+ ::Hello_DDS::CCM_Hello_receiver_Connector_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (lctx.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+
+ this->context_ = lctx;
+ }
+
+ void
+ Hello_receiver_Connector_exec_i::configuration_complete (void)
+ {
+ this->configure_dds ();
+ /* Your code here. */
+ }
+
+ void
+ Hello_receiver_Connector_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ /* Test code to test the reader interface
+ ::CCM_DDS::CCM_string_Reader_var reader = this->get_receiver_data ();
+ CORBA::String_var string;
+ CCM_DDS::ReadInfo_var ri;
+ reader->read_one (string.out (), ri.out ());
+ printf ("read <%s>\n", string.in ());
+ */
+ }
+
+ void
+ Hello_receiver_Connector_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Hello_receiver_Connector_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Hello_receiver_Connector_exec_i::configure_dds (void)
+ {
+ if (this->dds_configured_)
+ return;
+
+ try
+ {
+ //NDDSConfigLogger::get_instance()->set_verbosity_by_category(NDDS_CONFIG_LOG_CATEGORY_API,
+ // NDDS_CONFIG_LOG_VERBOSITY_STATUS_ALL );
+
+ dpf_ = new CIAO::DDS4CCM::RTI::RTI_DomainParticipantFactory_i ();
+ ::DDS::DomainParticipantQos qos;
+ dp_ = dpf_->create_participant (0, qos, 0, 0);
+
+ ::DDS::TopicQos tqos;
+ t_ = dp_->create_topic ("Hello, World",
+ CIAO::DDS4CCM::RTI::String_Traits::type_support::get_type_name (),
+ tqos,
+ 0,
+ DDS_STATUS_MASK_NONE);
+
+ ::DDS::SubscriberQos sqos;
+ sub_ = dp_->create_subscriber (sqos,
+ 0,
+ 0);
+
+ ::DDS::DataReaderQos drqos;
+ ::CCM_DDS::string_RawListener_var rawlistener =
+ this->context_->get_connection_receiver_listener ();
+
+ ::CCM_DDS::PortStatusListener_var portstatuslistener =
+ this->context_->get_connection_receiver_status ();
+
+ ::DDS::DataReaderListener_ptr temp = new HelloListener (rawlistener.in (), portstatuslistener.in ());
+ this->listener_ = temp;
+ DDS::DataReader_var drv_tmp = sub_->create_datareader (t_.in (),
+ drqos,
+ listener_.in (),
+ DDS_DATA_AVAILABLE_STATUS);
+
+ dr_ = DDS::CCM_DataReader::_narrow (drv_tmp);
+ printf ("setup done\n");
+ }
+ catch (const CORBA::Exception &ex)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "Hello_receiver_Connector_exec_i::configure_dds - "
+ "Caught CORBA exception %C\n",
+ ex._info ().c_str ()));
+ }
+ catch (...)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "Hello_receiver_Connector_exec_i::configure_dds - "
+ "Error: caught unknown C++ exception while configuring DDS\n"));
+ }
+
+ this->dds_configured_ = true;
+ }
+
+ extern "C" HELLO_RECEIVER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Hello_receiver_Connector_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Hello_receiver_Connector_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
+
+namespace CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ //============================================================
+ // Home Executor Implementation Class: ReceiverConnectorHome_exec_i
+ //============================================================
+
+ ReceiverConnectorHome_exec_i::ReceiverConnectorHome_exec_i (void)
+ {
+ }
+
+ ReceiverConnectorHome_exec_i::~ReceiverConnectorHome_exec_i (void)
+ {
+ }
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverConnectorHome_exec_i::create (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Hello_receiver_Connector_exec_i,
+ ::CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" HELLO_RECEIVER_CONNECTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_ReceiverConnectorHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ ReceiverConnectorHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h
new file mode 100644
index 00000000000..b1c33b9fe30
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_Connector_exec.h
@@ -0,0 +1,221 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1217
+
+#ifndef CIAO_HELLO_RECEIVER_CONNECTOR_EXEC_H_
+#define CIAO_HELLO_RECEIVER_CONNECTOR_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Hello_Receiver_ConnectorEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Hello_Receiver_Connector_exec_export.h"
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/impl/ndds/DataReader.h"
+#include "dds4ccm/impl/ndds/Writer.h"
+#include "dds4ccm/impl/ndds/DataReaderListener.h"
+#include "dds4ccm/impl/ndds/NDDS_Traits.h"
+
+#include <ndds/ndds_cpp.h>
+
+namespace CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ class HELLO_RECEIVER_CONNECTOR_EXEC_Export string_Reader_exec_i
+ : public virtual ::CCM_DDS::CCM_string_Reader,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ string_Reader_exec_i (DDSStringDataReader *reader);
+ virtual ~string_Reader_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::string_Reader
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ read_all (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ read_all_history (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ read_one (
+ char *& an_instance,
+ ::CCM_DDS::ReadInfo_out info);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ read_one_history (
+ const char * an_instance,
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::CCM_DDS::QueryFilter *
+ filter (void);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ filter (
+ const ::CCM_DDS::QueryFilter & filter);
+ private:
+ DDSStringDataReader *reader_;
+ DDSQueryCondition* condition_;
+ };
+
+ class HELLO_RECEIVER_CONNECTOR_EXEC_Export ListenerControl_exec_i
+ : public virtual ::CCM_DDS::CCM_ListenerControl,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ListenerControl_exec_i (void);
+ virtual ~ListenerControl_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::ListenerControl
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::CORBA::Boolean
+ enabled (void);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ enabled (
+ ::CORBA::Boolean enabled);
+ };
+
+ class HELLO_RECEIVER_CONNECTOR_EXEC_Export Hello_receiver_Connector_exec_i
+ : public virtual Hello_receiver_Connector_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Hello_receiver_Connector_exec_i (void);
+ virtual ~Hello_receiver_Connector_exec_i (void);
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ virtual ::CCM_DDS::CCM_string_Reader_ptr
+ get_receiver_data (void);
+
+ virtual ::CCM_DDS::CCM_ListenerControl_ptr
+ get_receiver_control (void);
+
+ virtual ::DDS::CCM_DataReader_ptr
+ get_receiver_dds_entity (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:
+ void configure_dds (void);
+
+ ::Hello_DDS::CCM_Hello_receiver_Connector_Context_var context_;
+
+ bool dds_configured_;
+ ::DDS::DomainParticipantFactory_var dpf_;
+ ::DDS::DomainParticipant_var dp_;
+ ::DDS::Topic_var t_;
+ ::DDS::Subscriber_var sub_;
+ ::DDS::DataReaderListener_var listener_;
+ ::DDS::CCM_DataReader_var dr_;
+ };
+
+ extern "C" HELLO_RECEIVER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Hello_receiver_Connector_Impl (void);
+}
+
+namespace CIAO_Hello_DDS_Hello_receiver_Connector_Impl
+{
+ class HELLO_RECEIVER_CONNECTOR_EXEC_Export ReceiverConnectorHome_exec_i
+ : public virtual ReceiverConnectorHome_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ReceiverConnectorHome_exec_i (void);
+
+ virtual ~ReceiverConnectorHome_exec_i (void);
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (void);
+ };
+
+ extern "C" HELLO_RECEIVER_CONNECTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_ReceiverConnectorHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
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..dfdad7d2f15
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp
@@ -0,0 +1,270 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1278
+
+#include "Hello_Receiver_exec.h"
+#include "ciao/CIAO_common.h"
+
+#include "ace/Atomic_Op.h"
+
+namespace CIAO_Hello_DDS_Receiver_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: string_RawListener_exec_i
+ //============================================================
+
+ string_RawListener_exec_i::string_RawListener_exec_i (Atomic_ULong &received,
+ const ACE_CString &name)
+ : received_ (received),
+ name_ (name)
+ {
+ }
+
+ string_RawListener_exec_i::~string_RawListener_exec_i (void)
+ {
+ }
+
+ // Operations from ::CCM_DDS::string_RawListener
+
+ void
+ string_RawListener_exec_i::on_data (
+ const char * an_instance,
+ const ::CCM_DDS::ReadInfo & /* info */)
+ {
+ ++received_;
+ printf ("<%s> string_RawListener::on_data received <%s>\n", this->name_.c_str (), an_instance);
+ }
+ //============================================================
+ // 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 */)
+ {
+ printf ("port status listener::on_requested_deadline_missed\n");
+ }
+
+ void
+ PortStatusListener_exec_i::on_sample_lost (
+ ::DDS::DataReader_ptr /* the_reader */,
+ const ::DDS::SampleLostStatus & /* status */)
+ {
+ ++lost_;
+ printf ("port status listener::on_sample_lost\n");
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Receiver_exec_i
+ //============================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ : context_ (0),
+ expected_ (10),
+ received_ (0),
+ lost_ (0)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ ::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.
+
+ ::CCM_DDS::CCM_string_RawListener_ptr
+ Receiver_exec_i::get_read_message_listener (void)
+ {
+ return new string_RawListener_exec_i (this->received_, this->name_);
+ }
+
+ ::CCM_DDS::CCM_PortStatusListener_ptr
+ Receiver_exec_i::get_read_message_status (void)
+ {
+ return new PortStatusListener_exec_i (this->lost_);
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello_DDS::CCM_Receiver_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Receiver_exec_i::ccm_activate (void)
+ {
+ /* Code to use the reader
+ ::CCM_DDS::string_Reader_var reader = this->context_->get_connection_read_message_data ();
+ ::CCM_DDS::ReadInfo_var readinfo;
+ ::CORBA::String_var string;
+ reader->read_one (string.out (), readinfo.out ());
+ */
+
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Receiver_exec_i::ccm_remove (void)
+ {
+ CIAO_DEBUG ((LM_INFO, "Receiver_exec_i received %u messages and lost %u messages\n",
+ this->received_.value (),
+ this->lost_.value ()));
+
+ if (this->received_ != this->expected_)
+ {
+ CIAO_ERROR ((LM_EMERGENCY, "Receiver_exec_i: Warning: Expected to receive %u messages, actually got %u\n",
+ this->expected_, this->received_.value ()));
+ }
+ }
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Receiver_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Receiver_exec_i);
+
+ return retval;
+ }
+}
+
+namespace CIAO_Hello_DDS_Receiver_Impl
+{
+ //============================================================
+ // Home Executor Implementation Class: ReceiverHome_exec_i
+ //============================================================
+
+ ReceiverHome_exec_i::ReceiverHome_exec_i (void)
+ {
+ }
+
+ ReceiverHome_exec_i::~ReceiverHome_exec_i (void)
+ {
+ }
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverHome_exec_i::create (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Receiver_exec_i,
+ ::CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_ReceiverHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ ReceiverHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ 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..0a78e1342de
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.h
@@ -0,0 +1,180 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1217
+
+#ifndef CIAO_HELLO_RECEIVER_EXEC_H_
+#define CIAO_HELLO_RECEIVER_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Hello_ReceiverEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Hello_Receiver_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO_Hello_DDS_Receiver_Impl
+{
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong;
+
+ class HELLO_RECEIVER_EXEC_Export string_RawListener_exec_i
+ : public virtual ::CCM_DDS::CCM_string_RawListener,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ string_RawListener_exec_i (Atomic_ULong &,
+ const ACE_CString &);
+ virtual ~string_RawListener_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::string_RawListener
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void
+ on_data (const char * an_instance,
+ const ::CCM_DDS::ReadInfo & 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 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.
+ virtual ::CORBA::ULong expected_samples (void);
+
+ virtual void expected_samples (::CORBA::ULong expected_samples);
+
+ virtual char * name (void);
+
+ virtual void name (const char *name);
+
+ // Port operations.
+
+ virtual ::CCM_DDS::CCM_string_RawListener_ptr
+ get_read_message_listener (void);
+
+ virtual ::CCM_DDS::CCM_PortStatusListener_ptr
+ get_read_message_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_DDS::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_DDS_Receiver_Impl (void);
+}
+
+namespace CIAO_Hello_DDS_Receiver_Impl
+{
+ class HELLO_RECEIVER_EXEC_Export ReceiverHome_exec_i
+ : public virtual ReceiverHome_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ ReceiverHome_exec_i (void);
+
+ virtual ~ReceiverHome_exec_i (void);
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (void);
+ };
+
+ extern "C" HELLO_RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_ReceiverHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#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..cd9e07930fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+#include "Hello_Sender_Base.idl"
+#include <Components.idl>
+
+module Hello_DDS
+{
+ component Sender
+ {
+ uses CCM_DDS::string_Writer push_data_data;
+ uses DDS::DataWriter push_data_dds_entity;
+
+ attribute unsigned long iterations;
+ attribute string message;
+ };
+
+ home SenderHome manages Sender
+ {
+ };
+};
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p
new file mode 100644
index 00000000000..87dbf27c33a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.idl3p
@@ -0,0 +1,9 @@
+#include "Hello_Base.idl3p"
+
+module Hello_DDS
+{
+ component Sender
+ {
+ port DDS_Write<string> push_message;
+ };
+}; \ No newline at end of file
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..2c34183205a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender.mpc
@@ -0,0 +1,131 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -b ciao_example_output, dds4ccm_base Hello_Sender"
+
+project(DDS_Hello_Sender_idl_gen) : connectoridldefaults , ciao_example_output, dds4ccm_base {
+ 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
+
+ IDL_Files {
+ Hello_Sender.idl
+ }
+}
+
+project(DDS_Hello_Sender_lem_gen) : ciaoidldefaults , ciao_example_output, dds4ccm_base {
+ after += DDS_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$(CIAO_ROOT)/connectors
+
+ IDL_Files {
+ Hello_SenderE.idl
+ }
+}
+
+project(DDS_Hello_Sender_stub) : ccm_stub , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_idl_gen DDS_Hello_Sender_Base_stub
+ libs += DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_Sender_stub
+ dynamicflags = HELLO_SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderC.h
+ Hello_Sender_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderC.inl
+ }
+}
+
+project(DDS_Hello_Sender_lem_stub) : ccm_svnt , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_lem_gen
+ libs +=
+
+ sharedname = DDS_Hello_Sender_lem_stub
+ dynamicflags = HELLO_SENDER_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_SenderEC.cpp
+ }
+
+ Header_Files {
+ Hello_SenderEC.h
+ Hello_Sender_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderEC.inl
+ }
+}
+
+project(DDS_Hello_Sender_exec) : ciao_executor , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_lem_stub DDS_Hello_Sender_stub DDS_Hello_Sender_Base_stub
+ sharedname = DDS_Hello_Sender_exec
+ libs += DDS_Hello_Sender_stub DDS_Hello_Sender_lem_stub DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ dynamicflags = HELLO_SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_exec.h
+ Hello_Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(DDS_Hello_Sender_svnt) : ciao_servant , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Base_stub DDS_Hello_Sender_lem_stub DDS_Hello_Sender_stub
+ sharedname = DDS_Hello_Sender_svnt
+ libs += DDS_Hello_Sender_stub DDS_Hello_Sender_lem_stub DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ 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
+ Hello_Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_SenderS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl
new file mode 100644
index 00000000000..ba7024d61a8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef HELLO_SENDER_BASE_IDL_
+#define HELLO_SENDER_BASE_IDL_
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+module CCM_DDS
+{
+ interface string_Writer
+ {
+ typedef sequence<string> stringSeq;
+
+ void write (in string an_instance)
+ raises (InternalError);
+ };
+};
+
+#endif
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc
new file mode 100644
index 00000000000..ec0709309b2
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Base.mpc
@@ -0,0 +1,79 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n -b ciao_example_output, dds4ccm_base Hello_Sender_Base"
+
+project(DDS_Hello_Sender_Base_idl_gen) : connectoridldefaults , ciao_example_output, dds4ccm_base {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SENDER_BASE_SKEL_Export \
+ -Wb,skel_export_include=Hello_Sender_Base_skel_export.h \
+ -Wb,exec_export_macro=HELLO_SENDER_BASE_EXEC_Export \
+ -Wb,exec_export_include=Hello_Sender_Base_exec_export.h
+
+ IDL_Files {
+ Hello_Sender_Base.idl
+ }
+}
+
+project(DDS_Hello_Sender_Base_lem_gen) : ciaoidldefaults , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Base_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_BASE_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_Base_lem_stub_export.h \
+ -SS -Gxhst -I$(CIAO_ROOT)/connectors
+
+ IDL_Files {
+ Hello_Sender_BaseE.idl
+ }
+}
+
+project(DDS_Hello_Sender_Base_stub) : ccm_stub, ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Base_idl_gen
+ libs +=
+
+ sharedname = DDS_Hello_Sender_Base_stub
+ dynamicflags = HELLO_SENDER_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_BaseC.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_BaseC.h
+ Hello_Sender_Base_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Sender_BaseC.inl
+ }
+}
+
+project(DDS_Hello_Sender_Base_skel) : ciao_executor, ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Base_stub
+ sharedname = DDS_Hello_Sender_Base_skel
+ libs += DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ dynamicflags = HELLO_SENDER_BASE_SKEL_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_BaseS.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_BaseS.h
+ Hello_Sender_Base_skel_export.h
+ }
+
+ Inline_Files {
+ Hello_Sender_BaseS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl
new file mode 100644
index 00000000000..ed40a8202d8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+#include <Components.idl>
+
+#include "Hello_Sender_Base.idl"
+
+module Hello_DDS
+{
+ component Hello_sender_Connector
+ {
+ provides CCM_DDS::string_Writer sender_data;
+#ifndef AVOID_E_IDL
+ provides DDS::DataWriter sender_dds_entity;
+#endif
+ };
+
+ home SenderConnectorHome manages Hello_sender_Connector
+ {
+ };
+};
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc
new file mode 100644
index 00000000000..8d9a743c06e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector.mpc
@@ -0,0 +1,133 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -b ciao_example_output, dds4ccm_base Hello_Sender_Connector"
+
+project(DDS_Hello_Sender_Connector_idl_gen) : connectoridldefaults , ciao_example_output, dds4ccm_base {
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_CONNECTOR_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_Connector_stub_export.h \
+ -Wb,skel_export_macro=HELLO_SENDER_CONNECTOR_SVNT_Export \
+ -Wb,skel_export_include=Hello_Sender_Connector_svnt_export.h \
+ -Wb,exec_export_macro=HELLO_SENDER_CONNECTOR_EXEC_Export \
+ -Wb,exec_export_include=Hello_Sender_Connector_exec_export.h
+
+ IDL_Files {
+ idlflags -= -Glem
+ Hello_Sender_Connector.idl
+ }
+}
+
+project(DDS_Hello_Sender_Connector_lem_gen) : ciaoidldefaults , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Connector_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=HELLO_SENDER_CONNECTOR_LEM_STUB_Export \
+ -Wb,stub_export_include=Hello_Sender_Connector_lem_stub_export.h \
+ -SS -Gxhst -I$(CIAO_ROOT)/connectors -DAVOID_E_IDL
+
+ IDL_Files {
+ Hello_Sender_ConnectorE.idl
+ }
+}
+
+project(DDS_Hello_Sender_Connector_stub) : ccm_stub , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Connector_idl_gen DDS_Hello_Sender_Base_stub
+ libs += DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_Sender_Connector_stub
+ dynamicflags = HELLO_SENDER_CONNECTOR_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_ConnectorC.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_ConnectorC.h
+ Hello_Sender_Connector_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Sender_ConnectorC.inl
+ }
+}
+
+project(DDS_Hello_Sender_Connector_lem_stub) : ccm_svnt , ciao_example_output, dds4ccm_base {
+ after += DDS_Hello_Sender_Connector_lem_gen DDS_Hello_Sender_Base_stub
+ libs += DDS_Hello_Sender_Base_stub
+ libpaths += ../lib
+
+ sharedname = DDS_Hello_Sender_Connector_lem_stub
+ dynamicflags = HELLO_SENDER_CONNECTOR_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_ConnectorEC.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_ConnectorEC.h
+ Hello_Sender_Connector_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_Sender_ConnectorEC.inl
+ }
+}
+
+project(DDS_Hello_Sender_Connector_exec) : ciao_executor , ciao_example_output, dds4ccm_skel, nddslib, ciao_dds4ccm_ndds_impl {
+ after += DDS_Hello_Sender_Connector_lem_stub DDS_Hello_Sender_Connector_stub DDS4CCM_lem_stub DDS_Hello_Sender_Base_stub
+ sharedname = DDS_Hello_Sender_Connector_exec
+ libs += DDS_Hello_Sender_Connector_stub DDS_Hello_Sender_Connector_lem_stub DDS_Hello_Sender_Base_stub
+ libs += DDS4CCM_lem_stub
+ libpaths += ../lib
+ dynamicflags = HELLO_SENDER_CONNECTOR_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_Connector_exec.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_Connector_exec.h
+ Hello_Sender_Connector_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Hello_Sender_Connector_svnt) : ciao_servant , ciao_example_output, dds4ccm_skel {
+ after += DDS_Hello_Sender_Base_stub DDS_Hello_Sender_Base_skel DDS4CCM_lem_stub DDS_Hello_Sender_Connector_lem_stub DDS4CCM_lem_stub
+ sharedname = DDS_Hello_Sender_Connector_svnt
+ libs += DDS_Hello_Sender_Connector_stub DDS_Hello_Sender_Connector_lem_stub DDS_Hello_Sender_Base_stub DDS_Hello_Sender_Base_skel
+ libs += DDS4CCM_lem_stub
+ libpaths += ../lib
+ dynamicflags = HELLO_SENDER_CONNECTOR_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Hello_Sender_ConnectorS.cpp
+ Hello_Sender_Connector_svnt.cpp
+ }
+
+ Header_Files {
+ Hello_Sender_ConnectorS.h
+ Hello_Sender_Connector_svnt.h
+ Hello_Sender_Connector_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_Sender_ConnectorS.inl
+ }
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl
new file mode 100644
index 00000000000..ab91d452475
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_ConnectorE.idl
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+//
+// $Id$
+
+/**
+ * NOTE: This file is hand crafted to remove the CCM_DataWriter element and add the dds_rtf2_dcpeE.idl include.
+ */
+
+#ifndef _CIAO_HELLO_SENDER_CONNECTORE_IDL_
+#define _CIAO_HELLO_SENDER_CONNECTORE_IDL_
+
+#include "ccm/CCM_Container.idl"
+#include "Hello_Sender_Connector.idl"
+#include "dds4ccm/idl/dds_rtf2_dcpsE.idl"
+
+module CCM_DDS
+{
+ local interface CCM_string_Writer : ::CCM_DDS::string_Writer
+ {
+ };
+};
+
+module Hello_DDS
+{
+ local interface CCM_Hello_sender_Connector
+ : ::Components::EnterpriseComponent
+ {
+ ::CCM_DDS::CCM_string_Writer get_sender_data ();
+ ::DDS::CCM_DataWriter get_sender_dds_entity ();
+ };
+
+ local interface CCM_Hello_sender_Connector_Context
+ : ::Components::SessionContext
+ {
+ };
+};
+
+module CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ typedef ::Hello_DDS::CCM_Hello_sender_Connector_Context Hello_sender_Connector_Exec_Context;
+
+ local interface Hello_sender_Connector_Exec
+ : ::Hello_DDS::CCM_Hello_sender_Connector,
+ ::Components::SessionComponent
+ {
+ };
+};
+
+module Hello_DDS
+{
+ local interface CCM_SenderConnectorHomeImplicit
+ {
+ ::Components::EnterpriseComponent create ()
+ raises ( ::Components::CCMException);
+ };
+
+ local interface CCM_SenderConnectorHomeExplicit
+ : ::Components::HomeExecutorBase
+ {
+ };
+
+ local interface CCM_SenderConnectorHome
+ : CCM_SenderConnectorHomeExplicit,
+ CCM_SenderConnectorHomeImplicit
+ {
+ };
+};
+
+module CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ local interface SenderConnectorHome_Exec
+ : ::Hello_DDS::CCM_SenderConnectorHome
+ {
+ };
+};
+
+#endif /* ifndef */
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp
new file mode 100644
index 00000000000..78aae5f0208
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.cpp
@@ -0,0 +1,257 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1278
+
+#include "Hello_Sender_Connector_exec.h"
+#include "ciao/CIAO_common.h"
+
+#include "dds4ccm/impl/ndds/DomainParticipantFactory.h"
+
+namespace CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: string_Writer_exec_i
+ //============================================================
+
+ string_Writer_exec_i::string_Writer_exec_i (String_Writer sw)
+ : writer_ (sw)
+ {
+ }
+
+ string_Writer_exec_i::~string_Writer_exec_i (void)
+ {
+ }
+
+ void
+ string_Writer_exec_i::write (const char *an_instance)
+ {
+ writer_.write (an_instance);
+ /*-----------------7-8-2009 14:13-------------------
+ * Code to call a multi writer
+ ::DDS_StringSeq myseq (1);
+ myseq.length (1);
+ myseq[0] = DDS_String_dup("Multi writer");
+ writer_.write (myseq, true);
+ * --------------------------------------------------*/
+ }
+
+ //============================================================
+ // Component Executor Implementation Class: Hello_sender_Connector_exec_i
+ //============================================================
+
+ Hello_sender_Connector_exec_i::Hello_sender_Connector_exec_i (void)
+ : dds_configured_ (false)
+ {
+ }
+
+ Hello_sender_Connector_exec_i::~Hello_sender_Connector_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ ::CCM_DDS::CCM_string_Writer_ptr
+ Hello_sender_Connector_exec_i::get_sender_data (void)
+ {
+ this->configure_dds ();
+ return ::CCM_DDS::CCM_string_Writer::_duplicate (this->sw_.in ());
+ }
+
+ ::DDS::CCM_DataWriter_ptr
+ Hello_sender_Connector_exec_i::get_sender_dds_entity (void)
+ {
+ this->configure_dds ();
+ return ::DDS::CCM_DataWriter::_duplicate (this->dw_.in ());
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Hello_sender_Connector_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello_DDS::CCM_Hello_sender_Connector_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Hello_sender_Connector_exec_i::configure_dds (void)
+ {
+ if (this->dds_configured_)
+ return;
+
+ try
+ {
+ //NDDSConfigLogger::get_instance()->set_verbosity_by_category(NDDS_CONFIG_LOG_CATEGORY_API,
+ // NDDS_CONFIG_LOG_VERBOSITY_STATUS_ALL );
+ dpf_ = new ::CIAO::DDS4CCM::RTI::RTI_DomainParticipantFactory_i ();
+ ::DDS::DomainParticipantQos qos;
+ dp_ = dpf_->create_participant (0, qos, 0, 0);
+
+ ::DDS::TopicQos tqos;
+ t_ = dp_->create_topic ("Hello, World",
+ ::CIAO::DDS4CCM::RTI::String_Traits::type_support::get_type_name (),
+ tqos,
+ 0,
+ 0);
+
+ ::DDS::PublisherQos pqos;
+ pub_ = dp_->create_publisher (pqos,
+ 0,
+ 0);
+
+ ::DDS::DataWriterQos dwqos;
+ ::DDS::DataWriter_var dwv_tmp = pub_->create_datawriter (t_.in (),
+ dwqos,
+ 0,
+ 0);
+
+ dw_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+
+ String_Writer sw (dw_.in ());
+
+ sw_ = new string_Writer_exec_i (sw);
+
+ }
+ catch (const CORBA::Exception &ex)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "Hello_sender_Connector_exec_i::configure_dds - "
+ "Caught CORBA exception %C\n",
+ ex._info ().c_str ()));
+ }
+ catch (...)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "Hello_sender_Connector_exec_i::configure_dds - "
+ "Error: caught unknown C++ exception while configuring DDS\n"));
+ }
+
+ this->dds_configured_ = true;
+ }
+
+
+ void
+ Hello_sender_Connector_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ this->configure_dds ();
+ }
+
+ void
+ Hello_sender_Connector_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Hello_sender_Connector_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Hello_sender_Connector_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" HELLO_SENDER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Hello_sender_Connector_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Hello_sender_Connector_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
+
+namespace CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ //============================================================
+ // Home Executor Implementation Class: SenderConnectorHome_exec_i
+ //============================================================
+
+ SenderConnectorHome_exec_i::SenderConnectorHome_exec_i (void)
+ {
+ }
+
+ SenderConnectorHome_exec_i::~SenderConnectorHome_exec_i (void)
+ {
+ }
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ SenderConnectorHome_exec_i::create (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Hello_sender_Connector_exec_i,
+ ::CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" HELLO_SENDER_CONNECTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_SenderConnectorHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ SenderConnectorHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h
new file mode 100644
index 00000000000..15e79f50efe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_Connector_exec.h
@@ -0,0 +1,164 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1217
+
+#ifndef CIAO_HELLO_SENDER_CONNECTOR_EXEC_H_
+#define CIAO_HELLO_SENDER_CONNECTOR_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Hello_Sender_ConnectorEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Hello_Sender_Connector_exec_export.h"
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/impl/ndds/DataWriter.h"
+#include "dds4ccm/impl/ndds/Writer.h"
+#include "dds4ccm/impl/ndds/NDDS_Traits.h"
+
+namespace CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ typedef CIAO::DDS4CCM::RTI::Writer_T< CIAO::DDS4CCM::RTI::String_Traits, ::CCM_DDS::CCM_string_Writer > String_Writer;
+
+ class HELLO_SENDER_CONNECTOR_EXEC_Export string_Writer_exec_i
+ : public virtual ::CCM_DDS::CCM_string_Writer,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ string_Writer_exec_i (String_Writer wr);
+ virtual ~string_Writer_exec_i (void);
+
+ // Operations and attributes from ::CCM_DDS::string_Writer
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual void write (const char * an_instance);
+
+ private:
+ String_Writer writer_;
+ };
+
+ /*
+ class HELLO_SENDER_CONNECTOR_EXEC_Export DDSWriter_i :
+ public virtual CIAO::DDS4CCM::RTI::RTI_DataWriter_i,
+ public virtual ::CORBA::LocalObject
+ {
+ DDSWriter_i (CIAO::DDS4CCM::RTI::RTI_DataWriter_i rti_dw)
+ : CIAO::DDS4CCM::RTI::RTI_DataWriter_i (rti_dw)
+ {
+ }
+ };
+ */
+
+ class HELLO_SENDER_CONNECTOR_EXEC_Export Hello_sender_Connector_exec_i
+ : public virtual Hello_sender_Connector_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Hello_sender_Connector_exec_i (void);
+ virtual ~Hello_sender_Connector_exec_i (void);
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ // Port operations.
+
+ virtual ::CCM_DDS::CCM_string_Writer_ptr
+ get_sender_data (void);
+
+ virtual ::DDS::CCM_DataWriter_ptr
+ get_sender_dds_entity (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:
+ void configure_dds (void);
+
+ ::Hello_DDS::CCM_Hello_sender_Connector_Context_var context_;
+
+ bool dds_configured_;
+ ::DDS::DomainParticipantFactory_var dpf_;
+ ::DDS::DomainParticipant_var dp_;
+ ::DDS::Topic_var t_;
+ ::DDS::Publisher_var pub_;
+ ::DDS::CCM_DataWriter_var dw_;
+ ::CCM_DDS::CCM_string_Writer_var sw_;
+ };
+
+ extern "C" HELLO_SENDER_CONNECTOR_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Hello_sender_Connector_Impl (void);
+}
+
+namespace CIAO_Hello_DDS_Hello_sender_Connector_Impl
+{
+ class HELLO_SENDER_CONNECTOR_EXEC_Export SenderConnectorHome_exec_i
+ : public virtual SenderConnectorHome_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ SenderConnectorHome_exec_i (void);
+
+ virtual ~SenderConnectorHome_exec_i (void);
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (void);
+ };
+
+ extern "C" HELLO_SENDER_CONNECTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_SenderConnectorHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
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..6559148a477
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.cpp
@@ -0,0 +1,232 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1278
+
+#include "Hello_Sender_exec.h"
+#include "ciao/CIAO_common.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/Task.h"
+
+namespace CIAO_Hello_DDS_Sender_Impl
+{
+ class Sending_Task : public virtual ACE_Task_Base
+ {
+ public:
+ Sending_Task (const ACE_CString &msg,
+ CORBA::ULong iters,
+ ::CCM_DDS::string_Writer_ptr writer)
+ : msg_ (msg),
+ iters_ (iters),
+ writer_ (::CCM_DDS::string_Writer::_duplicate (writer))
+ {
+ }
+
+ virtual int svc (void)
+ {
+ // Allowing some time for discovery to happen
+ ACE_OS::sleep (10);
+
+ for (size_t i = 0; i < this->iters_; ++i)
+ {
+ ACE_OS::sleep (2);
+ this->writer_->write (this->msg_.c_str ());
+ ACE_DEBUG ((LM_DEBUG, "Sender has sent string\n"));
+ }
+
+ return 0;
+ }
+
+ private:
+ const ACE_CString &msg_;
+ CORBA::ULong iters_;
+ ::CCM_DDS::string_Writer_var writer_;
+ };
+
+
+ //============================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //============================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ : iters_ (10),
+ msg_ ("Hi Johnny, I'm a CCM component sending DDS messages!"),
+ task_ (0)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ if (task_)
+ delete task_;
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes.
+
+ 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::ULong
+ Sender_exec_i::iterations (void)
+ {
+ return this->iters_;
+ }
+
+ void
+ Sender_exec_i::iterations (CORBA::ULong iters)
+ {
+ this->iters_ = iters;
+ }
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Sender_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::Hello_DDS::CCM_Sender_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Sender_exec_i::ccm_activate (void)
+ {
+ ::CCM_DDS::string_Writer_var writer =
+ this->context_->get_connection_push_data_data ();
+
+ this->task_ = new Sending_Task (this->msg_,
+ this->iters_,
+ writer);
+
+ this->task_->activate (THR_NEW_LWP | THR_JOINABLE,
+ 1);
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Sender_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Sender_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Sender_exec_i,
+ ::Components::EnterpriseComponent::_nil ());
+
+ return retval;
+ }
+}
+
+namespace CIAO_Hello_DDS_Sender_Impl
+{
+ //============================================================
+ // Home Executor Implementation Class: SenderHome_exec_i
+ //============================================================
+
+ SenderHome_exec_i::SenderHome_exec_i (void)
+ {
+ }
+
+ SenderHome_exec_i::~SenderHome_exec_i (void)
+ {
+ }
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ SenderHome_exec_i::create (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Sender_exec_i,
+ ::CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_SenderHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ SenderHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ 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..58d9189e733
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/Sender/Hello_Sender_exec.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1217
+
+#ifndef CIAO_HELLO_SENDER_EXEC_H_
+#define CIAO_HELLO_SENDER_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Hello_SenderEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Hello_Sender_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO_Hello_DDS_Sender_Impl
+{
+ class Sending_Task;
+
+ class HELLO_SENDER_EXEC_Export 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.
+
+ // Component attributes.
+
+ virtual ::CORBA::ULong iterations (void);
+
+ virtual void iterations (CORBA::ULong iterations);
+
+ virtual char * message (void);
+
+ virtual void message (const char *message);
+
+ // 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:
+ ::Hello_DDS::CCM_Sender_Context_var context_;
+
+ CORBA::ULong iters_;
+ ACE_CString msg_;
+ Sending_Task *task_;
+ };
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Hello_DDS_Sender_Impl (void);
+}
+
+namespace CIAO_Hello_DDS_Sender_Impl
+{
+ class HELLO_SENDER_EXEC_Export SenderHome_exec_i
+ : public virtual SenderHome_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ SenderHome_exec_i (void);
+
+ virtual ~SenderHome_exec_i (void);
+
+ // All operations and attributes.
+
+ // Factory operations.
+
+ // Finder operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (void);
+ };
+
+ extern "C" HELLO_SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Hello_DDS_SenderHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#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..dd47c25a659
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/1_to_5.cdp
@@ -0,0 +1,1413 @@
+<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="Hello_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorHomeImplementation">
+ <name>Hello_ReceiverConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>Hello_ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ReceiverConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorHomeImplementation">
+ <name>Hello_SenderConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>Hello_SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorComponentImplementation">
+ <name>Hello_SenderConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverHomeInstance">
+ <name>Hello_ReceiverHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorHomeInstance">
+ <name>Hello_ReceiverConnectorHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorOne.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorTwo.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorThree.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFour.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFive.ior</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>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance">
+ <name>Hello_SenderHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance">
+ <name>Hello_SenderConnectorHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderComponentInstance">
+ <name>Hello_SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstance">
+ <name>Hello_SenderConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>string_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_One_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Two_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Two_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Three_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Three_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Four_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Four_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Five_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Five_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello_Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello_Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_ReceiverConnector_ExecArtifact">
+ <name>Hello_ReceiverConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_ReceiverConnector_SvntArtifact">
+ <name>Hello_ReceiverConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</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..bd00d9fb9fb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Receivers.cdp
@@ -0,0 +1,1173 @@
+<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_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorHomeImplementation">
+ <name>Hello_ReceiverConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>Hello_ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ReceiverConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverHomeInstance">
+ <name>Hello_ReceiverHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorHomeInstance">
+ <name>Hello_ReceiverConnectorHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverOne.ior</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>50</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorOne.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverTwo.ior</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>50</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorTwo.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverThree.ior</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>50</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorThree.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFour.ior</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>50</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFour.ior</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>
+ </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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverFive.ior</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>50</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorFive.ior</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>
+ </instance>
+
+ <connection>
+ <name>ccm_dds_One_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_One_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_One_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Two_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Two_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Two_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Three_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Three_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Three_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Four_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Four_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Four_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>ccm_dds_Five_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_Five_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_Five_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello_Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello_Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_ReceiverConnector_ExecArtifact">
+ <name>Hello_ReceiverConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_ReceiverConnector_SvntArtifact">
+ <name>Hello_ReceiverConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</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..7081d4a31ae
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_Senders.cdp
@@ -0,0 +1,1084 @@
+<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_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorHomeImplementation">
+ <name>Hello_SenderConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>Hello_SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorComponentImplementation">
+ <name>Hello_SenderConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_SenderHomeInstance1">
+ <name>Hello_SenderHome1</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome1.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance2">
+ <name>Hello_SenderHome2</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance3">
+ <name>Hello_SenderHome3</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome3.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance4">
+ <name>Hello_SenderHome4</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance5">
+ <name>Hello_SenderHome5</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance1">
+ <name>Hello_SenderConnectorHome1</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome1.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance2">
+ <name>Hello_SenderConnectorHome2</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance3">
+ <name>Hello_SenderConnectorHome3</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome3.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance4">
+ <name>Hello_SenderConnectorHome4</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome4.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance5">
+ <name>Hello_SenderConnectorHome5</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome5.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome1</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderOne.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender One!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceOne">
+ <name>Hello_SenderConnectorComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome1</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorOne.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome2</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderTwo.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Two!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceTwo">
+ <name>Hello_SenderConnectorComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome2</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorTwo.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome3</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderThree.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Three!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceThree">
+ <name>Hello_SenderConnectorComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome3</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorThree.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFour.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Four!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFour">
+ <name>Hello_SenderConnectorComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFour.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFive.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Five!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFive">
+ <name>Hello_SenderConnectorComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFive.ior</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>
+ </instance>
+
+ <connection>
+ <name>string_writer_connection1</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection1</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection2</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection2</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection3</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection3</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection4</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection4</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection5</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection5</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</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..7de0268d091
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/5_to_1.cdp
@@ -0,0 +1,1465 @@
+<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="Hello_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorHomeImplementation">
+ <name>Hello_ReceiverConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>Hello_ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ReceiverConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorHomeImplementation">
+ <name>Hello_SenderConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>Hello_SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorComponentImplementation">
+ <name>Hello_SenderConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverHomeInstance">
+ <name>Hello_ReceiverHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorHomeInstance">
+ <name>Hello_ReceiverConnectorHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverComponentInstance">
+ <name>Hello_ReceiverComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>expected_samples</name>
+ <value>
+ <type>
+ <kind>tk_ulong</kind>
+ </type>
+ <value>
+ <ulong>50</ulong>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstance">
+ <name>Hello_ReceiverConnectorComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance1">
+ <name>Hello_SenderHome1</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome1.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance2">
+ <name>Hello_SenderHome2</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance3">
+ <name>Hello_SenderHome3</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome3.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance4">
+ <name>Hello_SenderHome4</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance5">
+ <name>Hello_SenderHome5</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance1">
+ <name>Hello_SenderConnectorHome1</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome1.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance2">
+ <name>Hello_SenderConnectorHome2</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance3">
+ <name>Hello_SenderConnectorHome3</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome3.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance4">
+ <name>Hello_SenderConnectorHome4</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome4.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+ <instance xmi:id="Hello_SenderConnectorHomeInstance5">
+ <name>Hello_SenderConnectorHome5</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome5.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome1</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderOne.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender One!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceOne">
+ <name>Hello_SenderConnectorComponentOne</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome1</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorOne.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome2</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderTwo.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Two!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceTwo">
+ <name>Hello_SenderConnectorComponentTwo</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome2</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorTwo.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome3</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderThree.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Three!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceThree">
+ <name>Hello_SenderConnectorComponentThree</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome3</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorThree.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFour.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Four!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFour">
+ <name>Hello_SenderConnectorComponentFour</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome4</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFour.ior</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>
+ </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.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderFive.ior</string>
+ </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>
+ <configProperty>
+ <name>message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hi, I'm sender Five!</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstanceFive">
+ <name>Hello_SenderConnectorComponentFive</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome5</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorFive.ior</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>
+ </instance>
+
+ <connection>
+ <name>string_writer_connection1</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection1</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceOne" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceOne" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection2</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection2</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceTwo" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceTwo" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection3</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection3</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceThree" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceThree" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection4</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection4</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFour" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFour" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>string_writer_connection5</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection5</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstanceFive" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstanceFive" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello_Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello_Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_ReceiverConnector_ExecArtifact">
+ <name>Hello_ReceiverConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_ReceiverConnector_SvntArtifact">
+ <name>Hello_ReceiverConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</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..f607f89b611
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,744 @@
+<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="Hello_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorHomeImplementation">
+ <name>Hello_ReceiverConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>Hello_ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ReceiverConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorHomeImplementation">
+ <name>Hello_SenderConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>Hello_SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorComponentImplementation">
+ <name>Hello_SenderConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverHomeInstance">
+ <name>Hello_ReceiverHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorHomeInstance">
+ <name>Hello_ReceiverConnectorHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverComponentInstance">
+ <name>Hello_ReceiverComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstance">
+ <name>Hello_ReceiverConnectorComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderHomeInstance">
+ <name>Hello_SenderHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance">
+ <name>Hello_SenderConnectorHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderComponentInstance">
+ <name>Hello_SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+<!--
+ <instance xmi:id="Hello_SenderComponentInstance">
+ <name>Hello_SenderComponent</name>
+ <node>SenderNode</node>
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+-->
+ <instance xmi:id="Hello_SenderConnectorComponentInstance">
+ <name>Hello_SenderConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>string_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello_Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello_Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_ReceiverConnector_ExecArtifact">
+ <name>Hello_ReceiverConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_ReceiverConnector_SvntArtifact">
+ <name>Hello_ReceiverConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</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..1c39265b2a7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/ReceiverOnly.cdp
@@ -0,0 +1,382 @@
+<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="Hello_ReceiverHomeImplementation">
+ <name>Hello_ReceiverHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Receiver_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverConnectorHomeImplementation">
+ <name>Hello_ReceiverConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_ReceiverConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_ReceiverConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_ReceiverComponentImplementation">
+ <name>Hello_ReceiverComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Receiver_ExecArtifact" />
+ <artifact xmi:idref="Hello_Receiver_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_ReceiverConnectorComponentImplementation">
+ <name>Hello_ReceiverConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_ReceiverConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_ReceiverConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_ReceiverHomeInstance">
+ <name>Hello_ReceiverHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorHomeInstance">
+ <name>Hello_ReceiverConnectorHome</name>
+ <node>ReceiverNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_ReceiverConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_ReceiverComponentInstance">
+ <name>Hello_ReceiverComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_ReceiverConnectorComponentInstance">
+ <name>Hello_ReceiverConnectorComponent</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.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ReceiverConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>ccm_dds_string_reader</name>
+ <internalEndpoint>
+ <portName>read_message_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_listenercontrol</name>
+ <internalEndpoint>
+ <portName>read_message_control</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_control</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_string_rawlistner</name>
+ <internalEndpoint>
+ <portName>read_message_listener</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_listener</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_datareader</name>
+ <internalEndpoint>
+ <portName>read_message_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>ccm_dds_portstatuslistener</name>
+ <internalEndpoint>
+ <portName>read_message_status</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_ReceiverComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>receiver_status</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_ReceiverConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Receiver_ExecArtifact">
+ <name>Hello_Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Receiver_SvntArtifact">
+ <name>Hello_Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_ReceiverConnector_ExecArtifact">
+ <name>Hello_ReceiverConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_ReceiverConnector_SvntArtifact">
+ <name>Hello_ReceiverConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Receiver_Connector_svnt</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..0bddb56ed13
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/SenderOnly.cdp
@@ -0,0 +1,334 @@
+<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="Hello_SenderHomeImplementation">
+ <name>Hello_SenderHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_Sender_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorHomeImplementation">
+ <name>Hello_SenderConnectorHomeImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ <execParameter>
+ <!-- entrypoint as exec parameter (see 10.6.1) -->
+ <name>home factory</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_DDS_SenderConnectorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_svnt</string>
+ </value>
+ </value>
+ </execParameter>
+ <execParameter>
+ <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnector_exec</string>
+ </value>
+ </value>
+ </execParameter>
+ </implementation>
+
+ <implementation xmi:id="Hello_SenderComponentImplementation">
+ <name>Hello_SenderComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_Sender_ExecArtifact" />
+ <artifact xmi:idref="Hello_Sender_SvntArtifact" />
+ </implementation>
+
+
+ <implementation xmi:id="Hello_SenderConnectorComponentImplementation">
+ <name>Hello_SenderConnectorComponentImplementation</name>
+ <source/>
+ <artifact xmi:idref="Hello_SenderConnector_ExecArtifact" />
+ <artifact xmi:idref="Hello_SenderConnector_SvntArtifact" />
+ </implementation>
+
+ <instance xmi:id="Hello_SenderHomeInstance">
+ <name>Hello_SenderHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance xmi:id="Hello_SenderConnectorHomeInstance">
+ <name>Hello_SenderConnectorHome</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorHomeImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderComponentInstance">
+ <name>Hello_SenderComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance xmi:id="Hello_SenderConnectorComponentInstance">
+ <name>Hello_SenderConnectorComponent</name>
+ <node>SenderNode</node>
+ <!-- hostname -->
+ <source/>
+ <implementation xmi:idref="Hello_SenderConnectorComponentImplementation" />
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.ExplicitHome</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Hello_SenderConnectorHome</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>SenderConnector</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>string_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_data</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_data</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>dds_data_writer_connection</name>
+ <internalEndpoint>
+ <portName>push_data_dds_entity</portName>
+ <provider>false</provider>
+ <kind>SimplexReceptacle</kind>
+ <instance xmi:idref="Hello_SenderComponentInstance" />
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>sender_dds_entity</portName>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ <instance xmi:idref="Hello_SenderConnectorComponentInstance" />
+ </internalEndpoint>
+ </connection>
+
+ <!-- Artifacts declarations -->
+ <artifact xmi:id="Hello_Sender_ExecArtifact">
+ <name>Hello_Sender_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_Sender_SvntArtifact">
+ <name>Hello_Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_svnt</location>
+ </artifact>
+
+ <artifact xmi:id="Hello_SenderConnector_ExecArtifact">
+ <name>Hello_SenderConnector_exec</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_exec</location>
+ </artifact>
+ <artifact xmi:id="Hello_SenderConnector_SvntArtifact">
+ <name>Hello_SenderConnector_svnt</name>
+ <source/>
+ <node/>
+ <location>DDS_Hello_Sender_Connector_svnt</location>
+ </artifact>
+
+</Deployment:DeploymentPlan>
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..e5e33f64cf6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_1_to_5.pl
@@ -0,0 +1,206 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "1_to_5.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -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 - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed (
+ "ReceiverOne.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x $cdp_file -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file -q");
+$E->SpawnWaitKill (30);
+
+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..d351b5cbe66
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_1.pl
@@ -0,0 +1,206 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "5_to_1.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -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 - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed (
+ "Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("SenderOne.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x $cdp_file -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file -q");
+$E->SpawnWaitKill (30);
+
+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..1f8db2303df
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_5_to_5.pl
@@ -0,0 +1,222 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "5_Receivers.cdp";
+$cdp_file_two = "5_Senders.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -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 - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed (
+ "ReceiverOne.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Start dance_plan_launcher.exe with -x $cdp_file_two -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file_two -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed ("SenderOne.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x $cdp_file -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file -q");
+$E->SpawnWaitKill (30);
+
+print "Invoking executor - stop the application -\n";
+print "by running dance_plan_launcher.exe with -k file://EM.ior -x $cdp_file_two -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file_two -q");
+$E->SpawnWaitKill (30);
+
+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..4e2c56a9be3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_receiver.pl
@@ -0,0 +1,218 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 1;
+@ports = ( 60001 );
+@iorfiles = ( "NodeApp1.ior" );
+@nodenames = ( "ReceiverNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "ReceiverOnly.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -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 - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed ("Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Invoking the non-CCM DDS Sender (../DDS_Sender/DDS_Sender -s \"Message from RTI DDS Sender\" -i 10)\n";
+
+$receiver = new PerlACE::Process ("../DDS_Sender/DDS_Sender", "-s \"Message from RTI DDS Sender\" -i 10");
+
+$result = $receiver->Spawn ();
+
+if ($result != 0) {
+ print STDERR "ERROR: Unable to spawn DDS sender $result\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to receive all messages\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Receiver.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Receiver.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x $cdp_file -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file -q");
+$E->SpawnWaitKill (30);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+$result = $receiver->WaitKill (10);
+
+if ($result != 0) {
+ print STDERR "ERROR: DDS Sender terminated unexpectedly with $result\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+
+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..c30d966db64
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_sender.pl
@@ -0,0 +1,218 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 1;
+@ports = ( 60001 );
+@iorfiles = ( "NodeApp1.ior" );
+@nodenames = ( "SenderNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "SenderOnly.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+print "Invoking the non-CCM DDS Receiver (../DDS_Receiver/DDS_receiver)";
+
+$receiver = new PerlACE::Process ("../DDS_Receiver/DDS_receiver", "10");
+
+$result = $receiver->Spawn ();
+
+if ($result != 0) {
+ print STDERR "ERROR: Unable to spawn DDS receiver $result\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x $cdp_file -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x $cdp_file -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to allow sending to complete\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x $cdp_file -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x $cdp_file -q");
+$E->SpawnWaitKill (30);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+$result = $receiver->WaitKill (10);
+
+if ($result != 0) {
+ print STDERR "ERROR: DDS Receiver terminated unexpectedly with $result\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+
+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..88b6d47c6fa
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/examples/Hello/descriptors/run_test.pl
@@ -0,0 +1,206 @@
+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::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'DANCE_ROOT'}";
+
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+@nodenames = ( "SenderNode", "ReceiverNode" );
+
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+PerlACE::add_lib_path ('../lib');
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$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);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+ $nodename = $nodenames[$i];
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$CIAO_ROOT/bin/ciao_componentserver";
+
+ $d_cmd = "$DAnCE/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";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ 30) == -1) {
+ print STDERR
+ "ERROR: The ior $iorfile file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n";
+
+if (PerlACE::waitforfile_timed ($nsior, $PerlACE::wait_interval_for_process_creation) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\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 -eEM.ior \n";
+$EM = new PerlACE::Process ("$DAnCE/bin/dance_execution_manager",
+ "-eEM.ior --domain-nc corbaloc:rir:/NameService");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -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 - start the application -\n";
+
+print "Start dance_plan_launcher.exe with -x DeploymentPlan.cdp -k file://EM.ior\n";
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-x DeploymentPlan.cdp -k file://EM.ior");
+
+$E->SpawnWaitKill (50);
+
+if (PerlACE::waitforfile_timed (
+ "Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Sleeping 60 seconds to allow task to complete\n";
+sleep (60);
+
+# print "Invoking the controller ($controller_exec -k file://Sender.ior)\n";
+# $controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+# $result = $controller->SpawnWaitKill (30);
+
+# 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://EM.ior -x DeploymentPlan.cdp -q\n";
+
+$E =
+ new PerlACE::Process ("$DAnCE/bin/dance_plan_launcher",
+ "-k file://EM.ior -x DeploymentPlan.cdp -q");
+$E->SpawnWaitKill (30);
+
+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/id3p_test/Multiple_Reader_Ports/test.idl3p b/modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p
new file mode 100644
index 00000000000..5130cc59e17
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/id3p_test/Multiple_Reader_Ports/test.idl3p
@@ -0,0 +1,12 @@
+// $Id$
+
+// IDL3+
+module Hello_DDS
+{
+ component Sender
+ {
+ port DDS_Write<string> push_message;
+ port DDS_Write<int> push_state;
+ };
+};
+
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc
new file mode 100644
index 00000000000..f2d80477e59
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm.mpc
@@ -0,0 +1,118 @@
+// $Id$
+
+project (DDS4CCM_idl_gen) : ciaoidldefaults, anytypecode {
+ 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
+
+ IDL_Files {
+ idlflags += -Gxhst -Gxhsk
+ dds4ccm_Base.idl3
+ }
+
+ IDL_Files {
+ dds4ccm_PortStatusListener.idl3
+ dds4ccm_ListenerControl.idl3
+ dds4ccm_ConnectorStatusListener.idl3
+ }
+
+ IDL_Files {
+ idlflags += -Glem -Glfa
+ dds_rtf2_dcps.idl
+ }
+}
+
+project (DDS4CCM_lem_gen) : ciaoidldefaults, anytypecode {
+ 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
+
+ IDL_Files {
+ idlflags += -Gxhst -SS
+ dds_rtf2_dcpsE.idl
+ }
+
+// IDL_Files {
+// dds4ccm_PortStatusListenerE.idl
+// dds4ccm_ListenerControlE.idl
+// dds4ccm_ConnectorStatusListenerE.idl
+//
+// }
+}
+
+project (DDS4CCM_stub) : ciaolib_with_idl, ciao_output, taolib, anytypecode {
+
+ after += DDS4CCM_idl_gen
+ includes += $(CIAO_ROOT)/connectors
+
+ dynamicflags += DDS4CCM_STUB_BUILD_DLL
+ IDL_Files {
+ }
+
+ Header_Files {
+ dds4ccm_BaseC.h
+ dds4ccm_PortStatusListenerC.h
+ dds4ccm_ListenerControlC.h
+ dds4ccm_ConnectorStatusListenerC.h
+ dds_rtf2_dcpsC.h
+ }
+
+ Source_Files {
+ dds4ccm_BaseC.cpp
+ dds4ccm_PortStatusListenerC.cpp
+ dds4ccm_ListenerControlC.cpp
+ dds4ccm_ConnectorStatusListenerC.cpp
+ dds_rtf2_dcpsC.cpp
+ }
+}
+
+project (DDS4CCM_lem_stub) : ciaolib_with_idl, ciao_output, taolib, valuetype {
+ after += DDS4CCM_stub DDS4CCM_lem_gen
+ libs += DDS4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+
+ dynamicflags += DDS4CCM_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ dds_rtf2_dcpsEC.cpp
+ }
+
+ Header_Files {
+ dds_rtf2_dcpsEC.h
+ dds4ccm_lem_stub_export.h
+ }
+}
+
+project (DDS4CCM_skel) : ciaolib_with_idl, ciao_output, taolib, anytypecode, portableserver {
+ after += DDS4CCM_stub
+ libs += DDS4CCM_stub
+ includes += $(CIAO_ROOT)/connectors
+
+ dynamicflags += DDS4CCM_SKEL_BUILD_DLL
+ IDL_Files {
+ }
+
+ Header_Files {
+ dds4ccm_BaseS.h
+ dds4ccm_PortStatusListenerS.h
+ dds4ccm_ListenerControlS.h
+ dds4ccm_ConnectorStatusListenerS.h
+ dds_rtf2_dcpsS.h
+ }
+
+ Source_Files {
+ dds4ccm_BaseS.cpp
+ dds4ccm_PortStatusListenerS.cpp
+ dds4ccm_ListenerControlS.cpp
+ dds4ccm_ConnectorStatusListenerS.cpp
+ dds_rtf2_dcpsS.cpp
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl3 b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl3
new file mode 100644
index 00000000000..ea8c73c6ebe
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Base.idl3
@@ -0,0 +1,56 @@
+/**
+ * @file dds4CCM_Base.idl3+
+ *
+ */
+
+#ifndef DDS4CCM_BASE_IDL3P
+#define DDS4CCM_BASE_IDL3P
+
+#include "dds_rtf2_dcps.idl"
+
+module CCM_DDS
+{
+ typedef sequence<unsigned long> InstanceNumberSeq;
+ exception AlreadyCreated {
+ InstanceNumberSeq indexes; // of the erroneous
+ };
+
+ exception NonExistent{
+ InstanceNumberSeq indexes; // of the erroneous
+ };
+
+ exception InternalError{
+ unsigned long error_code;// DDS codes that are relevant:
+ // ERROR (1); UNSUPPORTED (2); OUT_OF_RESOURCE (5)
+ unsigned long index; // of the erroneaous
+ };
+
+ exception BadParameter {};
+
+ enum AccessStatus {
+ FRESH_INFO,
+ ALREADY_SEEN
+ };
+
+ enum InstanceStatus {
+ INSTANCE_CREATED,
+ INSTANCE_UPDATED,
+ INSTANCE_DELETED
+ };
+
+ struct ReadInfo {
+ AccessStatus access_status;
+ InstanceStatus instance_status;
+ DDS::Time_t timestamp;
+ unsigned long instance_rank;
+ };
+ typedef sequence<ReadInfo> ReadInfoSeq;
+
+ struct QueryFilter {
+ string query;
+ ::DDS::StringSeq query_parameters;
+ };
+
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3 b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3
new file mode 100644
index 00000000000..d1c2e66be79
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3
@@ -0,0 +1,31 @@
+/**
+ * @file dds4CCM_ConnectorStatusListner.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_CONNECTORSTATUSLISTNER_IDL3P
+#define DDS4CCM_CONNECTORSTATUSLISTNER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ 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);
+ };
+
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p
new file mode 100644
index 00000000000..349c6035a5e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Base.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_Connector_Base.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_CONNECTOR_BASE_IDL3P
+#define DDS4CCM_CONNECTOR_BASE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_ConnectorStatusListener.idl3"
+
+module CCM_DDS
+{
+ connector DDS_Base {
+ uses ConnectorStatusListener error_listener;
+ readonly attribute DDS::DomainId_t domain_id;
+ readonly attribute string qos_profile;// File URL or XML string
+ };
+
+ connector DDS_TopicBase : DDS_Base {
+ readonly attribute string topic_name;
+ readonly attribute StringSeq key_fields;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p
new file mode 100644
index 00000000000..2d4659d1027
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_Event.idl3p
@@ -0,0 +1,22 @@
+/**
+ * @file dds4CCM_Connector_Event.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_CONNECTOR_EVENT_IDL3P
+#define DDS4CCM_CONNECTOR_EVENT_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Port_Write.idl3p"
+#include "dds4ccm/idl/dds4ccm_Port_Get.idl3p"
+#include "dds4ccm/idl/dds4ccm_Port_RawListen.idl3p"
+
+module CCM_DDS
+{
+ connector DDS_Event<typename T> : DDS_TopicBase { // T assumed to be a data type
+ mirrorport DDS_Write<T> supplier;
+ mirrorport DDS_Get<T> pull_consumer;
+ mirrorport DDS_RawListen<T> push_consumer;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p
new file mode 100644
index 00000000000..a2feed562bb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Connector_State.idl3p
@@ -0,0 +1,24 @@
+/**
+ * @file dds4CCM_Connector_State.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_CONNECTOR_STATE_IDL3P
+#define DDS4CCM_CONNECTOR_STATE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Port_Update.idl3p"
+#include "dds4ccm/idl/dds4ccm_Port_Read.idl3p"
+#include "dds4ccm/idl/dds4ccm_Port_Get.idl3p"
+#include "dds4ccm/idl/dds4ccm_Port_StateListen.idl3p"
+
+module CCM_DDS
+{
+ connector DDS_State<typename T> : DDS_TopicBase { // T assumed to be a data type
+ mirrorport DDS_Update<T> observable;
+ mirrorport DDS_Read<T> passive_observer;
+ mirrorport DDS_Get<T> pull_observer;
+ mirrorport DDS_StateListen<T> push_observer;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Getter.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Getter.idl3p
new file mode 100644
index 00000000000..68205c6a6b5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Getter.idl3p
@@ -0,0 +1,50 @@
+/**
+ * @file dds4CCM_Getter.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_Getter_IDL3P
+#define DDS4CCM_Getter_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface Getter<typename T> {
+ typedef sequence<T> T$Seq;
+ boolean get_all (out T$Seq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+ boolean get_all_history (out T$Seq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+ boolean get_one (inout T an_instance, out ReadInfo info)
+ raises (NonExistent,
+ InternalError);
+ boolean get_one_history (in T an_instance,
+ out T$Seq instances, out ReadInfoSeq infos)
+ raises (NonExistent,
+ InternalError);
+ boolean get_next (out T an_instance, out ReadInfo info)
+ raises (InternalError);
+ attribute QueryFilter filter
+ setraises (BadParameter);
+ attribute DDS::Duration_t time_out;
+ // behaviour
+ // - 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 filter ("" means no query)
+ // - within the time limit specified in time_out
+ // - all operations returns TRUE if data are provided,
+ // FALSE if time-out occurred
+ // - data returned:
+ // - get_all returns for all the instances their last sample
+ // - get_all_history returns all the samples of all instances
+ // - get_one returns the last sample of the given instance
+ // - get_one_history returns all the samples for the given instance
+ // - get_next returns each read sample one by one
+ };
+
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3 b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3
new file mode 100644
index 00000000000..fddba42a7cd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_ListenerControl.idl3
@@ -0,0 +1,18 @@
+/**
+ * @file dds4CCM_ListenerControl.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_LISTENERCONTROL_IDL3P
+#define DDS4CCM_LISTENERCONTROL_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface ListenerControl {
+ attribute boolean enabled;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p
new file mode 100644
index 00000000000..3aa3f4a64e3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiListener.idl3p
@@ -0,0 +1,32 @@
+/**
+ * @file dds4CCM_MultiListener.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_MULTILISTENER_IDL3P
+#define DDS4CCM_MULTILISTENER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ enum GroupingMode {
+ INSTANCE_HISTORY,
+ LAST_SAMPLE_ALL_INSTANCES,
+ ALL_SAMPLES_ALL_INSTANCES
+ };
+
+ interface MultiListener<typename T> {
+ typedef sequence<T> T$Seq;
+ void on_data (in T$Seq instances, in ReadInfoSeq infos);
+ attribute GroupingMode grouping_mode;
+ // behaviour
+ // - depending on grouping_mode similar to get_one_history(any new instance),
+ // get_all or get_all_history, except that in push mode instead of
+ // pull mode
+ // - triggered only if enabled is the associated ListenerControl
+ // - query filter (if any) in the associated Reader
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p
new file mode 100644
index 00000000000..f9c7edaf49b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiUpdater.idl3p
@@ -0,0 +1,40 @@
+/**
+ * @file dds4CCM_MultiUpdater.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_MULTIUPDATER_IDL3P
+#define DDS4CCM_MULTIUPDATER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface MultiUpdater<typename T> {
+ typedef sequence<T> T$Seq;
+ unsigned long create (in T$Seq instances) // returns nb of created instances
+ raises (AlreadyCreated,
+ InternalError);
+
+ unsigned long update (in T$Seq instances) // returns nb of updated instances
+ raises (NonExistent,
+ InternalError);
+ unsigned long delete (in T$Seq instances) // returns nb of deleted instances
+ raises (NonExistent,
+ InternalError);
+ readonly attribute boolean is_lifecycle_checked;
+ attribute boolean is_coherent_write;
+ // behaviour:
+ // - exceptions AlreadyCreated or NonExistent are raised only if
+ // is_lifecycle_checked
+ // - global check is performed before actual write or dispose
+ // (in case of error, all the erroneous instances are reported
+ // in the exception)
+ // - attempt to write or dispose is stopped at the first error
+ // - if is_coherent_write, write orders are placed betwen begin/end
+ // coherent updates (even if an error occurs)
+ };
+
+};
+
+#endif \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p
new file mode 100644
index 00000000000..e877b07a191
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_MultiWriter.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_MultiWriter.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_MULTIWRITER_IDL3P
+#define DDS4CCM_MULTIWRITER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface MultiWriter<typename T> {
+ typedef sequence<T> T$Seq;
+ unsigned long write(in T$Seq instances) // returns nb of written
+ raises (InternalError);
+ attribute boolean is_coherent_write;
+ // behaviour:
+ // - attempt to write is stopped at the first error
+ // - if is_coherent_write, write orders are placed betwen begin/end
+ // coherent updates (even if an error occurs)
+ };
+};
+
+#endif \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3 b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3
new file mode 100644
index 00000000000..e7c7c302b1a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_PortStatusListener.idl3
@@ -0,0 +1,22 @@
+/**
+ * @file dds4CCM_PortStatusListner.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORTSTATUSLISTNER_IDL3P
+#define DDS4CCM_PORTSTATUSLISTNER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ 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);
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p
new file mode 100644
index 00000000000..26bb41c236f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Get.idl3p
@@ -0,0 +1,21 @@
+/**
+ * @file dds4CCM_Port_Get.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_GET_IDL3P
+#define DDS4CCM_PORT_GET_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Getter.idl3p"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_Get<typename T> {
+ uses Getter<T> data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p
new file mode 100644
index 00000000000..110910c248a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiListen.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_Port_MultiListen.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_MULTILISTEN_IDL3P
+#define DDS4CCM_PORT_MULTILISTEN_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Reader.idl3"
+#include "dds4ccm/idl/dds4ccm_ListenerControl.idl3"
+#include "dds4ccm/idl/dds4ccm_MultiListener.idl3"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3"
+
+module CCM_DDS
+{
+ porttype DDS_MultiListen<typename T> {
+ uses Reader<T> data;
+ uses ListenerControl control;
+ provides MultiListener<T> listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p
new file mode 100644
index 00000000000..597f23706e8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiUpdate.idl3p
@@ -0,0 +1,19 @@
+/**
+ * @file dds4CCM_Port_MultiUpdate.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_MULTIUPDATE_IDL3P
+#define DDS4CCM_PORT_MULTIUPDATE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_MultiUpdater.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_MultiUpdate <typename T> {
+ uses MultiUpdater<T> data;
+ uses DDS::DataWriter dds_entity;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p
new file mode 100644
index 00000000000..4e286911936
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_MultiWrite.idl3p
@@ -0,0 +1,19 @@
+/**
+ * @file dds4CCM_Port_MultiWrite.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_MULTIWRITE_IDL3P
+#define DDS4CCM_PORT_MULTIWRITE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_MultiWriter.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_MultiWrite<typename T> {
+ uses MultiWriter<T> data;
+ uses DDS::DataWriter dds_entity;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p
new file mode 100644
index 00000000000..ce55031fd7e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_RawListen.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_Port_RawListen.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_RAWLISTEN_IDL3P
+#define DDS4CCM_PORT_RAWLISTEN_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Reader.idl3p"
+#include "dds4ccm/idl/dds4ccm_ListenerControl.idl3p"
+#include "dds4ccm/idl/dds4ccm_RawListener.idl3p"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_RawListen<typename T> {
+ uses Reader<T> data;
+ uses ListenerControl control;
+ provides RawListener<T> listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p
new file mode 100644
index 00000000000..072da9a710b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Read.idl3p
@@ -0,0 +1,21 @@
+/**
+ * @file dds4CCM_Port_Read.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_READ_IDL3P
+#define DDS4CCM_PORT_READ_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Reader.idl3p"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_Read<typename T> {
+ uses Reader<T> data;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p
new file mode 100644
index 00000000000..9e11f0e3890
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_StateListen.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_Port_StateListen.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_STATELISTEN_IDL3P
+#define DDS4CCM_PORT_STATELISTEN_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Reader.idl3p"
+#include "dds4ccm/idl/dds4ccm_ListenerControl.idl3p"
+#include "dds4ccm/idl/dds4ccm_StateListener.idl3p"
+#include "dds4ccm/idl/dds4ccm_PortStatusListener.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_StateListen<typename T> {
+ uses Reader<T> data;
+ uses ListenerControl control;
+ provides StateListener<T> listener;
+ uses DDS::DataReader dds_entity;
+ provides PortStatusListener status;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p
new file mode 100644
index 00000000000..801a9d5117e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Update.idl3p
@@ -0,0 +1,19 @@
+/**
+ * @file dds4CCM_Port_Update.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_UPDATE_IDL3P
+#define DDS4CCM_PORT_UPDATE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Updater.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_Update <typename T> {
+ uses Updater<T> data;
+ uses DDS::DataWriter dds_entity;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p
new file mode 100644
index 00000000000..685436d8f3e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Port_Write.idl3p
@@ -0,0 +1,19 @@
+/**
+ * @file dds4CCM_Port_Write.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_PORT_WRITE_IDL3P
+#define DDS4CCM_PORT_WRITE_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Writer.idl3p"
+
+module CCM_DDS
+{
+ porttype DDS_Write<typename T> {
+ uses Writer<T> data;
+ uses DDS::DataWriter dds_entity;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p
new file mode 100644
index 00000000000..22b5c2a6689
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_RawListener.idl3p
@@ -0,0 +1,22 @@
+/**
+ * @file dds4CCM_RawListener.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_RAWLISTENER_IDL3P
+#define DDS4CCM_RAWLISTENER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface RawListener<typename T> {
+ void on_data (in T an_instance, in ReadInfo info);
+ // behaviour
+ // - similar to a get_next, except that in push mode instead of pull mode
+ // - triggered only if enabled is the associated ListenerControl
+ // - query filter (if any) in the associated Reader
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Reader.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Reader.idl3p
new file mode 100644
index 00000000000..4b349cce80e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Reader.idl3p
@@ -0,0 +1,45 @@
+/**
+ * @file dds4CCM_Reader.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_READER_IDL3P
+#define DDS4CCM_READER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface Reader <typename T> {
+ typedef sequence<T> T$Seq;
+ void read_all (out T$Seq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_all_history (out T$Seq instances, out ReadInfoSeq infos)
+ raises (InternalError);
+ void read_one (inout T an_instance, out ReadInfo info)
+ raises (NonExistent,
+ InternalError);
+ void read_one_history (in T an_instance,
+ out T$Seq instances, out ReadInfoSeq infos)
+ raises (NonExistent,
+ InternalError);
+ attribute QueryFilter filter
+ setraises (BadParameter);
+ // behaviour
+ // - 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_all returns for each living instance, its last sample
+ // ordered by instance first and then by sample
+ // - read_all_history returns all the samples of all instances
+ // ordered by instance first and then by sample
+ // - read_one returns the last sample of the given instance
+ // - read_one_history returns all the samples for the given instance
+ };
+
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p
new file mode 100644
index 00000000000..89e61124fac
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_StateListener.idl3p
@@ -0,0 +1,25 @@
+/**
+ * @file dds4CCM_StateListener.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_STATELISTENER_IDL3P
+#define DDS4CCM_STATELISTENER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface StateListener<typename T> {
+ void on_creation (in T an_instance, in DDS::Time_t timestamp);
+ void on_update (in T an_instance, in DDS::Time_t timestamp);
+ void on_deletion (in T an_instance, in DDS::Time_t timestamp);
+ // behaviour
+ // - similar to a get_next, except that different operations are called
+ // depending on the instance state
+ // - triggered only if enabled is the associated ListenerControl
+ // - query filter (if any) in the associated Reader
+ };
+};
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Updater.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Updater.idl3p
new file mode 100644
index 00000000000..e76e361e64c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Updater.idl3p
@@ -0,0 +1,33 @@
+/**
+ * @file dds4CCM_Updater.idl3p
+ *
+ */
+
+#ifndef DDS4CCM_UPDATER_IDL3P
+#define DDS4CCM_UPDATER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface Updater<typename T> {
+ void create (in T an_instance)
+ raises (AlreadyCreated,
+ InternalError);
+ void update (in T an_instance)
+ raises (NonExistent,
+ InternalError);
+ void delete (in T an_instance)
+ raises (NonExistent,
+ InternalError);
+ readonly attribute boolean is_lifecycle_checked;
+ // behaviour:
+ // - exceptions AlreadyCreated or NonExistent are raised only if
+ // is_lifecycle_checked
+ // - note: this check requires to previously attempt to read (not free)
+ // - note: this check is not 100% guarantee as a creation or a deletion may
+ // occur between the check and the actual write od dispose order
+ };
+};
+
+#endif \ No newline at end of file
diff --git a/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Writer.idl3p b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Writer.idl3p
new file mode 100644
index 00000000000..3e2e223e487
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds4ccm_Writer.idl3p
@@ -0,0 +1,19 @@
+/**
+ * @file dds4CCM_Writer.idl3+
+ *
+ */
+
+#ifndef DDS4CCM_WRITER_IDL3P
+#define DDS4CCM_WRITER_IDL3P
+
+#include "dds4ccm/idl/dds4ccm_Base.idl3"
+
+module CCM_DDS
+{
+ interface Writer<typename T> { // T assumed to be a data type
+ void write (in T an_instance)
+ raises (InternalError);
+ };
+};
+
+#endif \ No newline at end of file
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..14a695d5c37
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
@@ -0,0 +1,1206 @@
+// $Id$
+
+#ifndef DDS_RFT2_DCPS_IDL
+#define DDS_RFT2_DCPS_IDL
+
+#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"
+
+module DDS {
+ struct NativeInstanceHandle_t {
+ octet value[16];
+ unsigned long length;
+ };
+ typedef long DomainId_t;
+ typedef NativeInstanceHandle_t InstanceHandle_t;
+ struct BuiltinTopicKey_t {
+ long value[3];
+ };
+
+ typedef sequence<InstanceHandle_t> InstanceHandleSeq;
+
+ 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;
+
+ 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;
+ };
+
+ // ----------------------------------------------------------------------
+ // Listeners
+ // ----------------------------------------------------------------------
+
+ interface Listener;
+ interface Entity;
+ interface TopicDescription;
+ interface Topic;
+ interface ContentFilteredTopic;
+ interface MultiTopic;
+ interface DataWriter;
+ interface DataReader;
+ interface Subscriber;
+ interface Publisher;
+
+ typedef sequence<DataReader> DataReaderSeq;
+
+ interface Listener {};
+
+ interface TopicListener : Listener {
+ void on_inconsistent_topic(in Topic the_topic,
+ in InconsistentTopicStatus status);
+ };
+
+ 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);
+ };
+
+ interface PublisherListener : DataWriterListener {
+ };
+
+ 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);
+ };
+
+ interface SubscriberListener : DataReaderListener {
+ void on_data_on_readers(
+ in Subscriber the_subscriber);
+ };
+
+
+ interface DomainParticipantListener : TopicListener,
+ PublisherListener,
+ SubscriberListener {
+ };
+
+
+ // ----------------------------------------------------------------------
+ // Conditions
+ // ----------------------------------------------------------------------
+
+ interface Condition {
+ boolean get_trigger_value();
+ };
+
+ typedef sequence<Condition> ConditionSeq;
+
+ 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);
+ };
+
+ interface GuardCondition : Condition {
+ ReturnCode_t set_trigger_value(
+ in boolean value);
+ };
+
+ 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;
+
+
+ interface ReadCondition : Condition {
+ SampleStateMask get_sample_state_mask();
+ ViewStateMask get_view_state_mask();
+ InstanceStateMask get_instance_state_mask();
+ DataReader get_datareader();
+ };
+
+ 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;
+ };
+
+ // ----------------------------------------------------------------------
+ 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();
+ };
+
+ // ----------------------------------------------------------------------
+ interface DomainParticipant : Entity {
+ // Factory interfaces
+ Publisher create_publisher(
+ in PublisherQos qos,
+ 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);
+ 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);
+
+ 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);
+ };
+
+ interface DomainParticipantFactory {
+ DomainParticipant create_participant(
+ in DomainId_t domain_id,
+ in DomainParticipantQos qos,
+ 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 get_default_participant_qos(
+ inout DomainParticipantQos qos);
+
+ ReturnCode_t set_qos(
+ in DomainParticipantFactoryQos qos);
+ ReturnCode_t get_qos(
+ inout DomainParticipantFactoryQos qos);
+ };
+
+ interface TypeSupport {
+ // ReturnCode_t register_type(
+ // in DomainParticipant domain,
+ // in string type_name);
+ // string get_type_name();
+ };
+
+ // ----------------------------------------------------------------------
+ interface TopicDescription {
+ string get_type_name();
+ string get_name();
+
+ DomainParticipant get_participant();
+ };
+
+ 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);
+ };
+
+ 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();
+ };
+
+ 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);
+ };
+
+ // ----------------------------------------------------------------------
+ interface Publisher : Entity {
+ DataWriter create_datawriter(
+ in Topic a_topic,
+ in DataWriterQos qos,
+ 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);
+ };
+
+ 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);
+ };
+
+ // ----------------------------------------------------------------------
+ interface Subscriber : Entity {
+ DataReader create_datareader(
+ in TopicDescription a_topic,
+ in DataReaderQos qos,
+ 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);
+ };
+
+ 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
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp
new file mode 100644
index 00000000000..5949f4009b7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.cpp
@@ -0,0 +1,254 @@
+// $Id$
+
+#include "DataReader.h"
+#include "DataReaderListener.h"
+#include "StatusCondition.h"
+#include "ReadCondition.h"
+#include "QueryCondition.h"
+#include "SampleLostStatus.h"
+#include "SubscriptionMatchedStatus.h"
+#include "RequestedDeadlineMissedStatus.h"
+#include "SampleRejectedStatus.h"
+#include "LivelinessChangedStatus.h"
+#include "RequestedIncompatibleQosStatus.h"
+#include "Duration_t.h"
+#include "InstanceHandle_t.h"
+#include "InstanceHandleSeq.h"
+#include "Subscriber.h"
+#include "TopicDescription.h"
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_DataReader_i::RTI_DataReader_i (DDSDataReader * dr)
+ : impl_ (dr)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_DataReader_i::~RTI_DataReader_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_DataReader_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_DataReader_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_DataReader_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ ::DDS::ReadCondition_ptr
+ RTI_DataReader_i::create_readcondition (
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+ {
+ DDSReadCondition* rc = this->impl_->create_readcondition (sample_states, view_states, instance_states);
+ ::DDS::ReadCondition_var retval = new RTI_ReadCondition_i (rc);
+ return retval._retn ();
+ }
+
+ ::DDS::QueryCondition_ptr
+ RTI_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*/)
+ {
+ DDSQueryCondition* qc = 0; // @todo = this->impl_->create_querycondition (sample_states, view_states, instance_states, query_expression, query_parameters);
+ ::DDS::QueryCondition_var retval = new RTI_QueryCondition_i (qc);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::delete_readcondition (
+ ::DDS::ReadCondition_ptr a_condition)
+ {
+ RTI_ReadCondition_i *rc = dynamic_cast< RTI_ReadCondition_i *> (a_condition);
+ if (!rc)
+ {
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+ return this->impl_->delete_readcondition (rc->get_readcondition ());
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::delete_contained_entities (void)
+ {
+ return this->impl_->delete_contained_entities ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::set_qos (
+ const ::DDS::DataReaderQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_qos (
+ ::DDS::DataReaderQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::set_listener (
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_DataReaderListener_i* rti_impl_list = new RTI_DataReaderListener_i (a_listener);
+ return this->impl_->set_listener (rti_impl_list, mask);
+ }
+
+ ::DDS::DataReaderListener_ptr
+ RTI_DataReader_i::get_listener (void)
+ {
+ //::DDSDataReaderListener* reader = this->impl_->get_listener ();
+// ::DDS::DataReaderListener_var dds_reader = new RTI_DataReaderListener_i (reader);
+ //return dds_reader._retn ();
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::TopicDescription_ptr
+ RTI_DataReader_i::get_topicdescription (void)
+ {
+ ::DDSTopicDescription* reader = this->impl_->get_topicdescription ();
+ ::DDS::TopicDescription_var dds_td = new RTI_TopicDescription_i (reader);
+ return dds_td._retn ();
+ }
+
+ ::DDS::Subscriber_ptr
+ RTI_DataReader_i::get_subscriber (void)
+ {
+ ::DDSSubscriber* subscriber = this->impl_->get_subscriber ();
+ ::DDS::Subscriber_var dds_td = new RTI_Subscriber_i (subscriber);
+ return dds_td._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_sample_rejected_status (
+ ::DDS::SampleRejectedStatus & status)
+ {
+ DDS_SampleRejectedStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_sample_rejected_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_liveliness_changed_status (
+ ::DDS::LivelinessChangedStatus & status)
+ {
+ DDS_LivelinessChangedStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_liveliness_changed_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_requested_deadline_missed_status (
+ ::DDS::RequestedDeadlineMissedStatus & status)
+ {
+ DDS_RequestedDeadlineMissedStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_requested_deadline_missed_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_requested_incompatible_qos_status (
+ ::DDS::RequestedIncompatibleQosStatus & status)
+ {
+ DDS_RequestedIncompatibleQosStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_requested_incompatible_qos_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_subscription_matched_status (
+ ::DDS::SubscriptionMatchedStatus & status)
+ {
+ ::DDS_SubscriptionMatchedStatus ddsstatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_subscription_matched_status (ddsstatus);
+ ddsstatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_sample_lost_status (
+ ::DDS::SampleLostStatus & status)
+ {
+ DDS_SampleLostStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_sample_lost_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::wait_for_historical_data (
+ const ::DDS::Duration_t & max_wait)
+ {
+ ::DDS_Duration_t rtiduration;
+ rtiduration <<= max_wait;
+ return this->impl_->wait_for_historical_data (rtiduration);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_matched_publications (
+ ::DDS::InstanceHandleSeq & publication_handles)
+ {
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_matched_publications (rtiseq);
+ rtiseq >>= publication_handles;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataReader_i::get_matched_publication_data (
+ ::DDS::PublicationBuiltinTopicData & /*publication_data*/,
+ const ::DDS::InstanceHandle_t & /*publication_handle*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ DDSDataReader *
+ RTI_DataReader_i::get_datareader (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h
new file mode 100644
index 00000000000..eecde2749ec
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReader.h
@@ -0,0 +1,140 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_DATAREADER_H
+#define CIAO_RTI_DATAREADER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+#include "tao/LocalObject.h"
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DataReader_i
+ : public virtual ::DDS::CCM_DataReader,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_DataReader_i (DDSDataReader *dr);
+
+ // Destructor
+ virtual ~RTI_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::InstanceHandle_t
+ 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,
+ const ::DDS::InstanceHandle_t & publication_handle);
+
+ DDSDataReader * get_datareader (void);
+
+ private:
+ DDSDataReader * impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp
new file mode 100644
index 00000000000..707ca497c2b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.cpp
@@ -0,0 +1,114 @@
+// $Id$
+
+#include "DataReaderListener.h"
+#include "DataReader.h"
+#include "SampleLostStatus.h"
+#include "SubscriptionMatchedStatus.h"
+#include "RequestedDeadlineMissedStatus.h"
+#include "SampleRejectedStatus.h"
+#include "LivelinessChangedStatus.h"
+#include "RequestedIncompatibleQosStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_DataReaderListener_i::RTI_DataReaderListener_i (::DDS::DataReaderListener_ptr p)
+ : impl_ (::DDS::DataReaderListener::_duplicate (p))
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_DataReaderListener_i::~RTI_DataReaderListener_i (void)
+ {
+ }
+
+ void
+ RTI_DataReaderListener_i::on_requested_deadline_missed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedDeadlineMissedStatus & status)
+ {
+ ::DDS::RequestedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataReaderListener_i::on_requested_incompatible_qos (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedIncompatibleQosStatus & status)
+ {
+ ::DDS::RequestedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataReaderListener_i::on_sample_rejected (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleRejectedStatus & status)
+ {
+ ::DDS::SampleRejectedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataReaderListener_i::on_liveliness_changed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_LivelinessChangedStatus & status)
+ {
+ ::DDS::LivelinessChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataReaderListener_i::on_data_available(::DDSDataReader *reader)
+ {
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (reader);
+ this->impl_->on_data_available (dds_reader.in ());
+ }
+
+ void
+ RTI_DataReaderListener_i::on_subscription_matched (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SubscriptionMatchedStatus & status)
+ {
+ ::DDS::SubscriptionMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataReaderListener_i::on_sample_lost (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleLostStatus & status)
+ {
+ ::DDS::SampleLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_sample_lost (dds_reader.in (), ddsstatus);
+ }
+
+ ::DDS::DataReaderListener_ptr
+ RTI_DataReaderListener_i::get_datareaderlistener (void)
+ {
+ return ::DDS::DataReaderListener::_duplicate (this->impl_.in ());
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h
new file mode 100644
index 00000000000..adf47e57b4e
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.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_RTI_DATAREADERLISTENER_H
+#define CIAO_RTI_DATAREADERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DataReaderListener_i :
+ public virtual ::DDSDataReaderListener
+ {
+ public:
+ // Constructor
+ RTI_DataReaderListener_i (::DDS::DataReaderListener_ptr p);
+
+ // Destructor
+ virtual ~RTI_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/ndds/DataWriter.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp
new file mode 100644
index 00000000000..4cc5674e91f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.cpp
@@ -0,0 +1,187 @@
+// $Id$
+
+#include "DataWriter.h"
+#include "StatusCondition.h"
+#include "Publisher.h"
+#include "DataWriterListener.h"
+#include "Topic.h"
+#include "Duration_t.h"
+#include "InstanceHandle_t.h"
+#include "PublicationMatchedStatus.h"
+#include "LivelinessLostStatus.h"
+#include "OfferedIncompatibleQosStatus.h"
+#include "OfferedDeadlineMissedStatus.h"
+#include "InstanceHandleSeq.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_DataWriter_i::RTI_DataWriter_i (DDSDataWriter * dw)
+ : impl_ (dw)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_DataWriter_i::~RTI_DataWriter_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::set_qos (const ::DDS::DataWriterQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DataWriter_i::set_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_qos (::DDS::DataWriterQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DataWriter_i::get_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::set_listener (::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_DataWriterListener_i* rti_impl_list = new RTI_DataWriterListener_i (a_listener);
+ return this->impl_->set_listener (rti_impl_list, mask);
+ }
+
+ ::DDS::DataWriterListener_ptr
+ RTI_DataWriter_i::get_listener (void)
+ {
+ DDSDataWriterListener* wr = this->impl_->get_listener ();
+ RTI_DataWriterListener_i *dwl = dynamic_cast< RTI_DataWriterListener_i *> (wr);
+ return dwl->get_datawriterlistener ();
+ }
+
+ ::DDS::Topic_ptr
+ RTI_DataWriter_i::get_topic (void)
+ {
+ DDSTopic* t = this->impl_->get_topic ();
+ ::DDS::Topic_var retval = new RTI_Topic_i (t);
+ return retval._retn ();
+ }
+
+ ::DDS::Publisher_ptr
+ RTI_DataWriter_i::get_publisher (void)
+ {
+ DDSPublisher* p = this->impl_->get_publisher ();
+ ::DDS::Publisher_var retval = new RTI_Publisher_i (p);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait)
+ {
+ ::DDS_Duration_t rtiduration;
+ rtiduration <<= max_wait;
+ return this->impl_->wait_for_acknowledgments (rtiduration);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_liveliness_lost_status (::DDS::LivelinessLostStatus & status)
+ {
+ ::DDS_LivelinessLostStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_liveliness_lost_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_offered_deadline_missed_status (::DDS::OfferedDeadlineMissedStatus & status)
+ {
+ ::DDS_OfferedDeadlineMissedStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_offered_deadline_missed_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_offered_incompatible_qos_status (::DDS::OfferedIncompatibleQosStatus & status)
+ {
+ ::DDS_OfferedIncompatibleQosStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_offered_incompatible_qos_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_publication_matched_status (::DDS::PublicationMatchedStatus & status)
+ {
+ ::DDS_PublicationMatchedStatus rtistatus;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_publication_matched_status (rtistatus);
+ rtistatus >>= status;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::assert_liveliness (void)
+ {
+ return this->impl_->assert_liveliness ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_matched_subscriptions (::DDS::InstanceHandleSeq & subscription_handles)
+ {
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_matched_subscriptions (rtiseq);
+ rtiseq >>= subscription_handles;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::get_matched_subscription_data (::DDS::SubscriptionBuiltinTopicData & /*subscription_data*/,
+ const ::DDS::InstanceHandle_t & /*subscription_handle*/)
+ {
+ CIAO_TRACE ("RTI_DataWriter_i::get_matched_subscription_data");
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DataWriter_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_DataWriter_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_DataWriter_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_DataWriter_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ DDSDataWriter *
+ RTI_DataWriter_i::get_datawriter (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h
new file mode 100644
index 00000000000..8f251ca84fd
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriter.h
@@ -0,0 +1,104 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_DATAWRITER_H
+#define CIAO_RTI_DATAWRITER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+#include "tao/LocalObject.h"
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DataWriter_i
+ : public virtual ::DDS::CCM_DataWriter,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_DataWriter_i (::DDSDataWriter *dw);
+
+ // Destructor
+ virtual ~RTI_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,
+ const ::DDS::InstanceHandle_t & subscription_handle);
+
+ 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);
+
+ DDSDataWriter * get_datawriter (void);
+
+ private:
+ DDSDataWriter * impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp
new file mode 100644
index 00000000000..7c66b260ab7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.cpp
@@ -0,0 +1,79 @@
+// $Id$
+
+#include "DataWriterListener.h"
+#include "DataWriter.h"
+#include "PublicationMatchedStatus.h"
+#include "LivelinessLostStatus.h"
+#include "OfferedIncompatibleQosStatus.h"
+#include "OfferedDeadlineMissedStatus.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_DataWriterListener_i::RTI_DataWriterListener_i (::DDS::DataWriterListener_ptr s)
+ : impl_ (::DDS::DataWriterListener::_duplicate (s))
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_DataWriterListener_i::~RTI_DataWriterListener_i (void)
+ {
+ }
+
+ void
+ RTI_DataWriterListener_i::on_offered_deadline_missed (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status)
+ {
+ ::DDS::OfferedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (the_writer);
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataWriterListener_i::on_offered_incompatible_qos (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status)
+ {
+ ::DDS::OfferedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (the_writer);
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataWriterListener_i::on_liveliness_lost (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_LivelinessLostStatus & status)
+ {
+ ::DDS::LivelinessLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (the_writer);
+ this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_DataWriterListener_i::on_publication_matched (
+ ::DDSDataWriter *the_writer,
+ const ::DDS_PublicationMatchedStatus & status)
+ {
+ ::DDS::PublicationMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (the_writer);
+ this->impl_->on_publication_matched (dds_writer.in (), ddsstatus);
+ }
+
+ ::DDS::DataWriterListener_ptr
+ RTI_DataWriterListener_i::get_datawriterlistener (void)
+ {
+ return ::DDS::DataWriterListener::_duplicate (this->impl_.in ());
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h
new file mode 100644
index 00000000000..22501f92e9d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DataWriterListener.h
@@ -0,0 +1,66 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_DATAWRITERLISTENER_H
+#define CIAO_RTI_DATAWRITERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DataWriterListener_i :
+ public virtual ::DDSDataWriterListener
+ {
+ public:
+ // Constructor
+ RTI_DataWriterListener_i (::DDS::DataWriterListener_ptr p);
+
+ // Destructor
+ virtual ~RTI_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/ndds/DomainParticipant.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
new file mode 100644
index 00000000000..78d726ab6b1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
@@ -0,0 +1,517 @@
+// $Id$
+
+#include "DomainParticipant.h"
+#include "Subscriber.h"
+#include "Publisher.h"
+#include "Topic.h"
+#include "TopicDescription.h"
+#include "Utils.h"
+#include "StatusCondition.h"
+#include "InstanceHandle_t.h"
+#include "Duration_t.h"
+#include "Time_t.h"
+#include "InstanceHandleSeq.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_DomainParticipant_i::RTI_DomainParticipant_i (DDSDomainParticipant *part)
+ : impl_ (part)
+ {
+ CIAO_TRACE ("RTI_DomainParticipant_i::RTI_DomainParticipant_i");
+ }
+
+ // Implementation skeleton destructor
+ RTI_DomainParticipant_i::~RTI_DomainParticipant_i (void)
+ {
+ CIAO_TRACE ("RTI_DomainParticipant_i::~RTI_DomainParticipant_i");
+ }
+
+ ::DDS::Publisher_ptr
+ RTI_DomainParticipant_i::create_publisher (const ::DDS::PublisherQos & /*qos*/,
+ ::DDS::PublisherListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_publisher");
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_publisher - "
+ "Creating Publisher\n"));
+
+ DDSPublisher * rti_pub =
+ this->impl_->create_publisher (DDS_PUBLISHER_QOS_DEFAULT,
+ 0,
+ mask);
+
+ if (!rti_pub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_publisher - "
+ "Error: Unable to create Participant\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::create_publisher - "
+ "Successfully created a DDSPublisher\n"));
+
+ ::DDS::Publisher_var retval = new RTI_Publisher_i (rti_pub);
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_publisher (::DDS::Publisher_ptr p)
+ {
+ RTI_Publisher_i *rti_pub = dynamic_cast < RTI_Publisher_i * > (p);
+
+ if (!rti_pub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_publisher - "
+ "Unable to cast provided object refence to servant pointer.\n"));
+ return ::DDS::RETCODE_ERROR;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_publisher - "
+ "Successfully casted provided object refence to RTI_Publisher_i\n"));
+
+ DDS_ReturnCode_t retval = this->impl_->delete_publisher (rti_pub->get_publisher ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_publisher - "
+ "Error: RTI delete_publisher returned non-ok error code %c\n",
+ translate_retcode (retval)));
+ }
+ else CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::delete_publisher - "
+ "Provided publisher successfully created\n"));
+
+ return retval;
+ }
+
+ ::DDS::Subscriber_ptr
+ RTI_DomainParticipant_i::create_subscriber (const ::DDS::SubscriberQos & /*qos*/,
+ ::DDS::SubscriberListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_subscriber");
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_subscriber - "
+ "Creating Subscriber\n"));
+
+ DDSSubscriber * rti_sub =
+ this->impl_->create_subscriber (DDS_SUBSCRIBER_QOS_DEFAULT,
+ 0,
+ mask);
+
+ if (!rti_sub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_subscriber - "
+ "Error: Unable to create Subscriber\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::create_subscriber - "
+ "Successfully created a DDSSubscriber\n"));
+
+ ::DDS::Subscriber_var retval = new RTI_Subscriber_i (rti_sub);
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_subscriber (::DDS::Subscriber_ptr s)
+ {
+ RTI_Subscriber_i *rti_sub = dynamic_cast < RTI_Subscriber_i * > (s);
+
+ if (!rti_sub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_subscriber - "
+ "Unable to cast provided object refence to servant pointer.\n"));
+ return ::DDS::RETCODE_ERROR;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_subscriber - "
+ "Successfully casted provided object refence to RTI_Subscriber_i\n"));
+
+ return this->impl_->delete_subscriber (rti_sub->get_subscriber ());
+ }
+
+ ::DDS::Subscriber_ptr
+ RTI_DomainParticipant_i::get_builtin_subscriber (void)
+ {
+ DDSSubscriber* rti_sub = this->impl_->get_builtin_subscriber ();
+ ::DDS::Subscriber_var retval = new RTI_Subscriber_i (rti_sub);
+ return retval._retn ();
+ }
+
+ ::DDS::Topic_ptr
+ RTI_DomainParticipant_i::create_topic (const char * impl_name,
+ const char * type_name,
+ const ::DDS::TopicQos & /*qos*/,
+ ::DDS::TopicListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_topic");
+
+ if (impl_name == 0)
+ {
+ CIAO_ERROR ((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)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Error: provided nil type name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER,
+ 0);
+ }
+
+ CIAO_DEBUG ((LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Attempting to create topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ DDSTopic *rti_topic = this->impl_->create_topic (impl_name,
+ type_name,
+ DDS_TOPIC_QOS_DEFAULT,
+ 0,
+ mask);
+
+ if (rti_topic == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Error: RTI DDS returned a nil topic\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ CIAO_DEBUG ((LM_INFO, CLINFO "DDS_DomainParticipant_i::create_topic - "
+ "Successfully created topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ ::DDS::Topic_var retval = new RTI_Topic_i (rti_topic);
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_topic (::DDS::Topic_ptr a_topic)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::delete_topic");
+
+ RTI_Topic_i *top = dynamic_cast< RTI_Topic_i *> (a_topic);
+
+ if (top == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_topic - "
+ "Unable to cast provided object reference to servant.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::delete_topic - "
+ "Successfully casted provided object reference to servant.\n"));
+
+ DDS_ReturnCode_t retval = this->impl_->delete_topic (top->get_topic ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::delete_topic - "
+ "Error: RTI delete_topic returned non-ok error code %c\n",
+ translate_retcode (retval)));
+ }
+ else CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::delete_topic - "
+ "Provided topic successfully deleted\n"));
+
+ return retval;
+ }
+
+ ::DDS::Topic_ptr
+ RTI_DomainParticipant_i::find_topic (const char * impl_name,
+ const ::DDS::Duration_t & timeout)
+ {
+ ::DDS_Duration_t ddstimeout;
+ ddstimeout <<= timeout;
+ ::DDSTopic* rti_topic = this->impl_->find_topic (impl_name, ddstimeout);
+ ::DDS::Topic_var retval = new RTI_Topic_i (rti_topic);
+ return retval._retn ();
+ }
+
+ ::DDS::TopicDescription_ptr
+ RTI_DomainParticipant_i::lookup_topicdescription (const char * name)
+ {
+ ::DDSTopicDescription* rti_topic = this->impl_->lookup_topicdescription (name);
+ ::DDS::TopicDescription_var retval = new RTI_TopicDescription_i (rti_topic);
+ return retval._retn ();
+ }
+
+ ::DDS::ContentFilteredTopic_ptr
+ RTI_DomainParticipant_i::create_contentfilteredtopic (const char * /*name*/,
+ ::DDS::Topic_ptr /*related_topic*/,
+ const char * /*filter_expression*/,
+ const ::DDS::StringSeq & /*expression_parameters*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_contentfilteredtopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_contentfilteredtopic (::DDS::ContentFilteredTopic_ptr /*a_contentfilteredtopic*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::delete_contentfilteredtopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::MultiTopic_ptr
+ RTI_DomainParticipant_i::create_multitopic (const char * /*name*/,
+ const char * /*type_name*/,
+ const char * /*subscription_expression*/,
+ const ::DDS::StringSeq & /*expression_parameters*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_multitopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_multitopic (::DDS::MultiTopic_ptr /*a_multitopic*/)
+ {
+ //this->impl_->delete_multitopic (
+ CIAO_TRACE ("DDS_DomainParticipant_i::delete_multitopic");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::delete_contained_entities (void)
+ {
+ return this->impl_->delete_contained_entities ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::set_qos (const ::DDS::DomainParticipantQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::set_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_qos (::DDS::DomainParticipantQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::set_listener (::DDS::DomainParticipantListener_ptr /*a_listener*/,
+ ::DDS::StatusMask /*mask*/)
+ {
+// RTI_DomainParticipantListener_i* rti_impl_list = new RTI_DomainParticipantListener_i (a_listener);
+ //return this->impl_->set_listener (rti_impl_list, mask);
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::DomainParticipantListener_ptr
+ RTI_DomainParticipant_i::get_listener (void)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_listener");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::ignore_participant (const ::DDS::InstanceHandle_t & handle)
+ {
+ ::DDS_InstanceHandle_t rti_handle;
+ rti_handle <<= handle;
+ return this->impl_->ignore_participant (rti_handle);
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::ignore_topic (const ::DDS::InstanceHandle_t & handle)
+ {
+ ::DDS_InstanceHandle_t rti_handle;
+ rti_handle <<= handle;
+ return this->impl_->ignore_topic (rti_handle);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::ignore_publication (const ::DDS::InstanceHandle_t & handle)
+ {
+ ::DDS_InstanceHandle_t rti_handle;
+ rti_handle <<= handle;
+ return this->impl_->ignore_publication (rti_handle);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::ignore_subscription (const ::DDS::InstanceHandle_t & handle)
+ {
+ ::DDS_InstanceHandle_t rti_handle;
+ rti_handle <<= handle;
+ return this->impl_->ignore_subscription (rti_handle);
+ }
+
+ ::DDS::DomainId_t
+ RTI_DomainParticipant_i::get_domain_id (void)
+ {
+ return this->impl_->get_domain_id ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::assert_liveliness (void)
+ {
+ return this->impl_->assert_liveliness ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::set_default_publisher_qos (const ::DDS::PublisherQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::set_default_publisher_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_default_publisher_qos (::DDS::PublisherQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_default_publisher_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::set_default_subscriber_qos (const ::DDS::SubscriberQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::set_default_subscriber_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_default_subscriber_qos (::DDS::SubscriberQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_default_subscriber_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::set_default_topic_qos (const ::DDS::TopicQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::set_default_topic_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_default_topic_qos (::DDS::TopicQos & /*qos*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_default_topic_qos");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_discovered_participants (::DDS::InstanceHandleSeq & impl_handles)
+ {
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_discovered_participants (rtiseq);
+ rtiseq >>= impl_handles;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_discovered_participant_data (::DDS::ParticipantBuiltinTopicData & /*impl_data*/,
+ const ::DDS::InstanceHandle_t & /*impl_handle*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_discovered_participant_data");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_discovered_topics (::DDS::InstanceHandleSeq & impl_handles)
+ {
+ ::DDS_InstanceHandleSeq rtiseq;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_discovered_topics (rtiseq);
+ rtiseq >>= impl_handles;
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_discovered_topic_data (::DDS::TopicBuiltinTopicData & /*impl_data*/,
+ const ::DDS::InstanceHandle_t & /*impl_handle*/)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::get_discovered_topic_data");
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::CORBA::Boolean
+ RTI_DomainParticipant_i::contains_entity (const ::DDS::InstanceHandle_t & a_handle)
+ {
+ ::DDS_InstanceHandle_t rti_handle;
+ rti_handle <<= a_handle;
+ return this->impl_->contains_entity (rti_handle);
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::get_current_time (::DDS::Time_t & current_time)
+ {
+ DDS_Time_t rti_time;
+ ::DDS::ReturnCode_t const retval = this->impl_->get_current_time (rti_time);
+ rti_time >>= current_time;
+ return retval;
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipant_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_DomainParticipant_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_DomainParticipant_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_DomainParticipant_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ DDSDomainParticipant *
+ RTI_DomainParticipant_i::get_participant (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h
new file mode 100644
index 00000000000..986c8e4eab6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h
@@ -0,0 +1,188 @@
+/**
+ * @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/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DomainParticipant_i :
+ public virtual ::DDS::CCM_DomainParticipant,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_DomainParticipant_i (DDSDomainParticipant *p);
+
+ // Destructor
+ virtual ~RTI_DomainParticipant_i (void);
+
+ virtual
+ ::DDS::Publisher_ptr create_publisher (const ::DDS::PublisherQos & qos,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ 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);
+
+ 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);
+
+ 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 (const ::DDS::InstanceHandle_t & handle);
+
+ virtual
+ ::DDS::ReturnCode_t ignore_topic (const ::DDS::InstanceHandle_t & handle);
+
+ virtual
+ ::DDS::ReturnCode_t ignore_publication (const ::DDS::InstanceHandle_t & handle);
+
+ virtual
+ ::DDS::ReturnCode_t ignore_subscription (const ::DDS::InstanceHandle_t & 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,
+ const ::DDS::InstanceHandle_t & 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,
+ const ::DDS::InstanceHandle_t & impl_handle);
+
+ virtual
+ ::CORBA::Boolean contains_entity (const ::DDS::InstanceHandle_t & 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::InstanceHandle_t get_instance_handle (void);
+
+ DDSDomainParticipant * get_participant (void);
+
+ protected:
+ DDSDomainParticipant *impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
new file mode 100644
index 00000000000..defdfafe9e7
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
@@ -0,0 +1,128 @@
+// $Id$
+
+#include "DomainParticipantFactory.h"
+#include "DomainParticipant.h"
+#include "Utils.h"
+
+#include "ciao/Logger/Log_Macros.h"
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ RTI_DomainParticipantFactory_i::RTI_DomainParticipantFactory_i (void)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::RTI_DomainParticipantFactory_i");
+ }
+
+ RTI_DomainParticipantFactory_i::~RTI_DomainParticipantFactory_i (void)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::~RTI_DomainParticipantFactory_i");
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_DomainParticipantFactory_i::create_participant (::DDS::DomainId_t domain_id,
+ const ::DDS::DomainParticipantQos & /*qos*/,
+ ::DDS::DomainParticipantListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::create_participant");
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipantFactory_i::create_participant - "
+ "Creating domain participant\n"));
+ DDSDomainParticipant *part = DDSDomainParticipantFactory::get_instance ()->
+ create_participant (domain_id,
+ DDS_PARTICIPANT_QOS_DEFAULT,
+ 0,
+ mask);
+
+ if (!part)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::create_participant - "
+ "Error: Unable to create DomainParticipant\n"));
+ throw CCM_DDS::InternalError (1, 0);
+ }
+
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (part);
+
+ return retval._retn ();
+ }
+
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::delete_participant (::DDS::DomainParticipant_ptr a_participant)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::delete_participant");
+
+ RTI_DomainParticipant_i *part = dynamic_cast< RTI_DomainParticipant_i * > (a_participant);
+
+ if (!part)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - "
+ "Unable to cast provided object reference to servant type, bailing.\n"));
+ return DDS::RETCODE_ERROR;
+ }
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - "
+ "Successfully casted provided object reference to servant type.\n"));
+
+ DDS_ReturnCode_t retval = DDSDomainParticipantFactory::get_instance ()->
+ delete_participant (part->get_participant ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - "
+ "RTI delete_participant returned non-ok error code %c\n",
+ translate_retcode (retval)));
+ }
+ else CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipantFactory_i::delete_participant - "
+ "Successfully deleted provided participant.\n"));
+
+ return retval;
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_DomainParticipantFactory_i::lookup_participant (::DDS::DomainId_t domain_id)
+ {
+ DDSDomainParticipant* dp = DDSDomainParticipantFactory::get_instance ()->lookup_participant (domain_id);
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (dp);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::set_default_participant_qos (const ::DDS::DomainParticipantQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_default_participant_qos");
+
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::get_default_participant_qos (::DDS::DomainParticipantQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::get_default_participant_qos");
+
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::set_qos (const ::DDS::DomainParticipantFactoryQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_qos");
+
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::get_qos (::DDS::DomainParticipantFactoryQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::get_qos");
+
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
new file mode 100644
index 00000000000..04b42655796
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
@@ -0,0 +1,67 @@
+/**
+ * @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/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_DomainParticipantFactory_i :
+ public virtual ::DDS::CCM_DomainParticipantFactory,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_DomainParticipantFactory_i (void);
+
+ // Destructor
+ virtual ~RTI_DomainParticipantFactory_i (void);
+
+ virtual
+ ::DDS::DomainParticipant_ptr create_participant (::DDS::DomainId_t domain_id,
+ const ::DDS::DomainParticipantQos & qos,
+ ::DDS::DomainParticipantListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ 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);
+ };
+ }
+ }
+}
+
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h
new file mode 100644
index 00000000000..594e7d90d66
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Duration_t.h
@@ -0,0 +1,35 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_DURATION_T_H
+#define CIAO_RTI_DURATION_T_H
+
+inline void
+operator<<= (::DDS::Duration_t &ddsstatus, const ::DDS_Duration_t & status)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+inline void
+operator<<= (::DDS_Duration_t &ddsstatus, const ::DDS::Duration_t & status)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+inline void
+operator>>= (const ::DDS_Duration_t &status, ::DDS::Duration_t & ddsstatus)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+#endif /* CIAO_RTI_DURATION_T_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.h
new file mode 100644
index 00000000000..31585e1a0d5
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InconsistentTopicStatus.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 CIAO_RTI_INCONSISTENTTOPICSTATUS_H
+#define CIAO_RTI_INCONSISTENTTOPICSTATUS_H
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_InconsistentTopicStatus &status, ::DDS::InconsistentTopicStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+inline void
+operator>>= (const ::DDS::InconsistentTopicStatus &status, ::DDS_InconsistentTopicStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+#endif /* CIAO_RTI_INCONSISTENTTOPICSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h
new file mode 100644
index 00000000000..e3916285d14
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandleSeq.h
@@ -0,0 +1,60 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_INSTANCEHANDLESEQ_H
+#define CIAO_RTI_INSTANCEHANDLESEQ_H
+
+#include "InstanceHandle_t.h"
+
+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];
+ }
+}
+
+inline void
+operator>>= (const ::DDS_InstanceHandleSeq &instancehandle, ::DDS::InstanceHandleSeq & ddsinstancehandleseqseq)
+{
+ ddsinstancehandleseqseq.length (instancehandle.length ());
+ for (::DDS_Long index = 0; index < instancehandle.length (); index++)
+ {
+ ddsinstancehandleseqseq[index] <<= instancehandle[index];
+ }
+}
+
+inline void
+operator>>= (const ::DDS::InstanceHandleSeq &instancehandle, ::DDS_InstanceHandleSeq & ddsinstancehandleseqseq)
+{
+ ddsinstancehandleseqseq.length (instancehandle.length ());
+ for (::DDS::InstanceHandleSeq::size_type index = 0; index < instancehandle.length (); index++)
+ {
+ ddsinstancehandleseqseq[index] <<= instancehandle[index];
+ }
+}
+
+#endif /* CIAO_RTI_INSTANCEHANDLESEQ_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.h
new file mode 100644
index 00000000000..f92e4722994
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/InstanceHandle_t.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 CIAO_RTI_INSTANCEHANDLE_T_H
+#define CIAO_RTI_INSTANCEHANDLE_T_H
+
+inline void
+operator<<= (::DDS::InstanceHandle_t &ddsinstancehandle, const ::DDS_InstanceHandle_t & instancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.value, instancehandle.keyHash.value, MIG_RTPS_KEY_HASH_MAX_LENGTH);
+ ddsinstancehandle.length = instancehandle.keyHash.length;
+}
+
+inline void
+operator<<= (::DDS_InstanceHandle_t &ddsinstancehandle, const ::DDS::InstanceHandle_t & instancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.keyHash.value, instancehandle.value, MIG_RTPS_KEY_HASH_MAX_LENGTH);
+ ddsinstancehandle.keyHash.length = instancehandle.length;
+}
+
+inline void
+operator>>= (const ::DDS_InstanceHandle_t &instancehandle, ::DDS::InstanceHandle_t & ddsinstancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.value, instancehandle.keyHash.value, MIG_RTPS_KEY_HASH_MAX_LENGTH);
+ ddsinstancehandle.length = instancehandle.keyHash.length;
+}
+
+inline void
+operator>>= (const ::DDS::InstanceHandle_t &instancehandle, ::DDS_InstanceHandle_t & ddsinstancehandle)
+{
+ ACE_OS::memcpy (ddsinstancehandle.keyHash.value, instancehandle.value, MIG_RTPS_KEY_HASH_MAX_LENGTH);
+ ddsinstancehandle.keyHash.length = instancehandle.length;
+}
+
+#endif /* CIAO_RTI_INSTANCEHANDLE_T_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.cpp
new file mode 100644
index 00000000000..1f0b4e95321
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.cpp
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1422
+
+#include "dds4ccm_ListnerControlI.h"
+
+// Implementation skeleton constructor
+CCM_DDS_ListenerControl_i::CCM_DDS_ListenerControl_i (void)
+{
+}
+
+// Implementation skeleton destructor
+CCM_DDS_ListenerControl_i::~CCM_DDS_ListenerControl_i (void)
+{
+}
+
+::CORBA::Boolean CCM_DDS_ListenerControl_i::enabled (void)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_ListenerControl_i::enabled (
+ ::CORBA::Boolean enabled)
+{
+ // Add your implementation here
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.h
new file mode 100644
index 00000000000..a698d55a0ed
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ListenerControl.h
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1364
+
+#ifndef DDS4CCM_LISTNERCONTROLI_H_
+#define DDS4CCM_LISTNERCONTROLI_H_
+
+#include "dds4ccm_ListnerControlS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class CCM_DDS_ListenerControl_i
+ : public virtual POA_CCM_DDS::ListenerControl
+{
+public:
+ // Constructor
+ CCM_DDS_ListenerControl_i (void);
+
+ // Destructor
+ virtual ~CCM_DDS_ListenerControl_i (void);
+
+ virtual
+ ::CORBA::Boolean enabled (void);
+
+ virtual
+ void enabled (
+ ::CORBA::Boolean enabled);
+};
+
+
+#endif /* DDS4CCM_LISTNERCONTROLI_H_ */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.h
new file mode 100644
index 00000000000..4215f1bd160
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessChangedStatus.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 CIAO_RTI_LIVELINESSCHANGEDSTATUS_H
+#define CIAO_RTI_LIVELINESSCHANGEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_LivelinessChangedStatus &status, ::DDS::LivelinessChangedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::LivelinessChangedStatus &status, ::DDS_LivelinessChangedStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_LIVELINESSCHANGEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.h
new file mode 100644
index 00000000000..926e39d8f08
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/LivelinessLostStatus.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 CIAO_RTI_LIVELINESSLOSTSTATUS_H
+#define CIAO_RTI_LIVELINESSLOSTSTATUS_H
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_LivelinessLostStatus &status, ::DDS::LivelinessLostStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+inline void
+operator>>= (const ::DDS::LivelinessLostStatus &status, ::DDS_LivelinessLostStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+}
+
+#endif /* CIAO_RTI_LIVELINESSLOSTSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/NDDS_Traits.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/NDDS_Traits.h
new file mode 100644
index 00000000000..7634f4b6db9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/NDDS_Traits.h
@@ -0,0 +1,47 @@
+/**
+ * @file NDDS_Traits.h
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ *
+ * Traits necessary for various bits and pieces of the DDS4CCM infrastructure.
+ */
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ /**
+ * @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 SEQ_TYPE,
+ typename TYPE_SUPPORT,
+ typename DATA_WRITER,
+ typename DATA_READER>
+ struct Type_Traits
+ {
+ typedef VALUE_TYPE value_type;
+ typedef SEQ_TYPE seq_type;
+ typedef TYPE_SUPPORT type_support;
+ typedef DATA_WRITER data_writer;
+ typedef DATA_READER data_reader;
+ };
+
+ typedef Type_Traits < const char *,
+ DDS_StringSeq,
+ DDSStringTypeSupport,
+ DDSStringDataWriter,
+ DDSStringDataReader > String_Traits;
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h
new file mode 100644
index 00000000000..255b22b4c71
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedDeadlineMissedStatus.h
@@ -0,0 +1,47 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H
+#define CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_OfferedDeadlineMissedStatus &status, ::DDS::OfferedDeadlineMissedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::OfferedDeadlineMissedStatus &status, ::DDS_OfferedDeadlineMissedStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif /* CIAO_RTI_OFFEREDDEADLINEMISSEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h
new file mode 100644
index 00000000000..3021d2ff935
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/OfferedIncompatibleQosStatus.h
@@ -0,0 +1,51 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H
+#define CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H
+
+#include "QosPolicyCountSeq.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_OfferedIncompatibleQosStatus &status, ::DDS::OfferedIncompatibleQosStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::OfferedIncompatibleQosStatus &status, ::DDS_OfferedIncompatibleQosStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_OFFEREDINCOMPATIBLEQOSSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.cpp
new file mode 100644
index 00000000000..ec4c56c2974
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.cpp
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler v1.6.9 ****
+// 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
+// be/be_codegen.cpp:1422
+
+#include "PortStatusListener.h"
+
+// Implementation skeleton constructor
+CCM_DDS_PortStatusListener_i::CCM_DDS_PortStatusListener_i (void)
+{
+}
+
+// Implementation skeleton destructor
+CCM_DDS_PortStatusListener_i::~CCM_DDS_PortStatusListener_i (void)
+{
+}
+
+void CCM_DDS_PortStatusListener_i::on_requested_deadline_missed (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::RequestedDeadlineMissedStatus & status)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_PortStatusListener_i::on_sample_lost (
+ ::DDS::DataReader_ptr the_reader,
+ const ::DDS::SampleLostStatus & status)
+{
+ // Add your implementation here
+}
+
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.h
new file mode 100644
index 00000000000..9f6273a4683
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PortStatusListener.h
@@ -0,0 +1,42 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef DDS4CCM_PORTSTATUSLISTENERI_H_
+#define DDS4CCM_PORTSTATUSLISTENERI_H_
+
+#include "dds4ccm_PortStatusListenerS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class CCM_DDS_PortStatusListener_i
+ : public virtual ::POA_CCM_DDS::PortStatusListener
+{
+public:
+ // Constructor
+ CCM_DDS_PortStatusListener_i (void);
+
+ // Destructor
+ virtual ~CCM_DDS_PortStatusListener_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);
+};
+
+
+#endif /* DDS4CCM_PORTSTATUSLISTENERI_H_ */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.h
new file mode 100644
index 00000000000..fa967fcbee8
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublicationMatchedStatus.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 CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H
+#define CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_PublicationMatchedStatus &status, ::DDS::PublicationMatchedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::PublicationMatchedStatus &status, ::DDS_PublicationMatchedStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_PUBLICATIONMATCHEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp
new file mode 100644
index 00000000000..eac22517a2f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp
@@ -0,0 +1,247 @@
+// $Id$
+
+#include "Publisher.h"
+#include "PublisherListener.h"
+#include "Topic.h"
+#include "DataWriter.h"
+#include "StatusCondition.h"
+#include "Utils.h"
+#include "Duration_t.h"
+#include "InstanceHandle_t.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_Publisher_i::RTI_Publisher_i (DDSPublisher *p)
+ : impl_ (p)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::RTI_Publisher_i");
+ }
+
+ // Implementation skeleton destructor
+ RTI_Publisher_i::~RTI_Publisher_i (void)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::~RTI_Publisher_i");
+ }
+
+ ::DDS::DataWriter_ptr
+ RTI_Publisher_i::create_datawriter (::DDS::Topic_ptr a_topic,
+ const ::DDS::DataWriterQos & /*qos*/,
+ ::DDS::DataWriterListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::create_datawriter");
+
+ RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic);
+
+ if (!topic)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter - "
+ "Error: Unable to cast provided topic to its servant.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+
+ DDSTopic *rti_topic = topic->get_topic ();
+
+ DDSDataWriter *rti_dw = this->impl_->create_datawriter (rti_topic,
+ DDS_DATAWRITER_QOS_DEFAULT,
+ 0,
+ mask);
+
+ if (rti_dw == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter - "
+ "Error: RTI Topic returned a nil datawriter.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::DataWriter_var retval = new RTI_DataWriter_i (rti_dw);
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::delete_datawriter (::DDS::DataWriter_ptr a_datawriter)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::delete_datawriter");
+
+ RTI_DataWriter_i *top = dynamic_cast< RTI_DataWriter_i *> (a_datawriter);
+
+ if (top == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Publisher_i::delete_datawriter - "
+ "Unable to cast provided object reference to servant.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_Publisher_i::delete_datawriter - "
+ "Successfully casted provided object reference to servant.\n"));
+
+ DDS_ReturnCode_t retval = this->impl_->delete_datawriter (top->get_datawriter ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Publisher_i::delete_datawriter - "
+ "Error: RTI delete_datawriter returned non-ok error code %c\n",
+ translate_retcode (retval)));
+ }
+ else CIAO_DEBUG ((LM_INFO, CLINFO "RTI_Publisher_i::delete_datawriter - "
+ "Provided datawriter successfully deleted\n"));
+
+ return retval;
+ }
+
+ ::DDS::DataWriter_ptr
+ RTI_Publisher_i::lookup_datawriter (const char * impl_name)
+ {
+ DDSDataWriter* dw = this->impl_->lookup_datawriter (impl_name);
+ ::DDS::DataWriter_var retval = new RTI_DataWriter_i (dw);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::delete_contained_entities (void)
+ {
+ return this->impl_->delete_contained_entities ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::set_qos (const ::DDS::PublisherQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::set_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::get_qos (::DDS::PublisherQos & /* qos*/)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::get_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::set_listener (::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_PublisherListener_i* rti_impl_list = new RTI_PublisherListener_i (a_listener);
+ return this->impl_->set_listener (rti_impl_list, mask);
+ }
+
+ ::DDS::PublisherListener_ptr
+ RTI_Publisher_i::get_listener (void)
+ {
+ // DDSPublisherListener* pl = this->impl_->get_listener ();
+// ::DDS::PublisherListener_var retval = new RTI_PublisherListener_i (pl);
+ //return retval._retn ();
+ throw CORBA::NO_IMPLEMENT ();
+
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::suspend_publications (void)
+ {
+ return this->impl_->suspend_publications ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::resume_publications (void)
+ {
+ return this->impl_->resume_publications ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::begin_coherent_changes (void)
+ {
+ return this->impl_->begin_coherent_changes ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::end_coherent_changes (void)
+ {
+ return this->impl_->end_coherent_changes ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::wait_for_acknowledgments (const ::DDS::Duration_t & max_wait)
+ {
+ DDS_Duration_t rti_dds_duration;
+ rti_dds_duration <<= max_wait;
+ return this->impl_->wait_for_acknowledgments (rti_dds_duration);
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_Publisher_i::get_participant (void)
+ {
+ DDSDomainParticipant* p = this->impl_->get_participant ();
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (p);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::set_default_datawriter_qos (const ::DDS::DataWriterQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::set_default_datawriter_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::get_default_datawriter_qos (::DDS::DataWriterQos & /*qos*/)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::get_default_datawriter_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::copy_from_topic_qos (::DDS::DataWriterQos & /*a_dataimpl_qos*/,
+ const ::DDS::TopicQos & /*a_impl_qos*/)
+ {
+ CIAO_TRACE ("RTI_Publisher_i::copy_from_topic_qos");
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Publisher_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_Publisher_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_Publisher_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_Publisher_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ DDSPublisher *
+ RTI_Publisher_i::get_publisher (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h
new file mode 100644
index 00000000000..f1c4e3584a1
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h
@@ -0,0 +1,116 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_PUBLISHER_H
+#define CIAO_RTI_PUBLISHER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_Publisher_i :
+ public virtual ::DDS::CCM_Publisher,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_Publisher_i (DDSPublisher *p);
+
+ // Destructor
+ virtual ~RTI_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::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_publisher (void);
+ private:
+ DDSPublisher *impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp
new file mode 100644
index 00000000000..10e9ce5980c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.cpp
@@ -0,0 +1,82 @@
+// $Id$
+
+#include "PublisherListener.h"
+#include "Publisher.h"
+#include "DataWriter.h"
+#include "PublicationMatchedStatus.h"
+#include "LivelinessLostStatus.h"
+#include "OfferedIncompatibleQosStatus.h"
+#include "OfferedDeadlineMissedStatus.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_PublisherListener_i::RTI_PublisherListener_i ( ::DDS::PublisherListener_ptr p)
+ : impl_ (::DDS::PublisherListener::_duplicate (p))
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_PublisherListener_i::~RTI_PublisherListener_i (void)
+ {
+ }
+
+ void
+ RTI_PublisherListener_i::on_offered_deadline_missed (
+ ::DDSDataWriter* writer,
+ const ::DDS_OfferedDeadlineMissedStatus & status)
+ {
+ ::DDS::OfferedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (writer);
+ this->impl_->on_offered_deadline_missed (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_PublisherListener_i::on_offered_incompatible_qos (
+ ::DDSDataWriter* writer,
+ const ::DDS_OfferedIncompatibleQosStatus & status)
+ {
+ ::DDS::OfferedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (writer);
+ this->impl_->on_offered_incompatible_qos (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_PublisherListener_i::on_liveliness_lost (
+ ::DDSDataWriter* writer,
+ const ::DDS_LivelinessLostStatus & status)
+ {
+ ::DDS::LivelinessLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (writer);
+ this->impl_->on_liveliness_lost (dds_writer.in (), ddsstatus);
+ }
+
+ void
+ RTI_PublisherListener_i::on_publication_matched (
+ ::DDSDataWriter* writer,
+ const ::DDS_PublicationMatchedStatus & status)
+ {
+ ::DDS::PublicationMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataWriter_var dds_writer = new RTI_DataWriter_i (writer);
+ this->impl_->on_publication_matched (dds_writer.in (), ddsstatus);
+ }
+
+ ::DDS::PublisherListener_ptr
+ RTI_PublisherListener_i::get_publisher_listener (void)
+ {
+ return ::DDS::PublisherListener::_duplicate (this->impl_.in ());
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h
new file mode 100644
index 00000000000..edad2f0a620
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener.h
@@ -0,0 +1,67 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_PUBLISHERLISTENER_H
+#define CIAO_RTI_PUBLISHERLISTENER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_PublisherListener_i :
+ public virtual ::DDSPublisherListener
+ {
+ public:
+ // Constructor
+ RTI_PublisherListener_i (::DDS::PublisherListener_ptr p);
+
+ // Destructor
+ virtual ~RTI_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);
+
+ ::DDS::PublisherListener_ptr get_publisher_listener (void);
+ private:
+ ::DDS::PublisherListener_var impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h
new file mode 100644
index 00000000000..a54eb46faf6
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QosPolicyCountSeq.h
@@ -0,0 +1,34 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_QOSPOLICYCOUNTSEQ_H
+#define CIAO_RTI_QOSPOLICYCOUNTSEQ_H
+
+inline void
+operator<<= (::DDS::QosPolicyCountSeq &/*ddsstatus*/, const ::DDS_QosPolicyCountSeq & /*status*/)
+{
+ // todo
+}
+
+inline void
+operator<<= (::DDS_QosPolicyCountSeq &/*ddsstatus*/, const ::DDS::QosPolicyCountSeq & /*status*/)
+{
+}
+
+inline void
+operator>>= (const ::DDS_QosPolicyCountSeq &/*status*/, ::DDS::QosPolicyCountSeq & /*ddsstatus*/)
+{
+}
+
+inline void
+operator>>= (const ::DDS::QosPolicyCountSeq &/*status*/, ::DDS_QosPolicyCountSeq & /*ddsstatus*/)
+{
+}
+
+#endif /* CIAO_RTI_QOSPOLICYCOUNTSEQ_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp
new file mode 100644
index 00000000000..ddd28d90346
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.cpp
@@ -0,0 +1,88 @@
+// $Id$
+
+#include "QueryCondition.h"
+#include "Subscriber.h"
+#include "DataReader.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_QueryCondition_i::RTI_QueryCondition_i ( ::DDSQueryCondition *sc)
+ : impl_ (sc)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_QueryCondition_i::~RTI_QueryCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ RTI_QueryCondition_i::get_trigger_value (void)
+ {
+ return this->impl_->get_trigger_value ();
+ }
+
+ ::DDS::SampleStateMask
+ RTI_QueryCondition_i::get_sample_state_mask (void)
+ {
+ return this->impl_->get_sample_state_mask ();
+ }
+
+ ::DDS::ViewStateMask
+ RTI_QueryCondition_i::get_view_state_mask (void)
+ {
+ return this->impl_->get_view_state_mask ();
+ }
+
+ ::DDS::InstanceStateMask
+ RTI_QueryCondition_i::get_instance_state_mask (void)
+ {
+ return this->impl_->get_instance_state_mask ();
+ }
+
+ ::DDS::DataReader_ptr
+ RTI_QueryCondition_i::get_datareader (void)
+ {
+ ::DDSDataReader* reader = this->impl_->get_datareader ();
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (reader);
+ return dds_reader._retn ();
+ }
+
+ char *
+ RTI_QueryCondition_i::get_query_expression (void)
+ {
+ return ::CORBA::string_dup (this->impl_->get_query_expression ());
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_QueryCondition_i::get_query_parameters (
+ ::DDS::StringSeq & /*query_parameters*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_QueryCondition_i::set_query_parameters (
+ const ::DDS::StringSeq & /*query_parameters*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ DDSQueryCondition *
+ RTI_QueryCondition_i::get_query_condition (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h
new file mode 100644
index 00000000000..62e41e5623c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/QueryCondition.h
@@ -0,0 +1,74 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_QUERYCONDITION_H
+#define CIAO_RTI_QUERYCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_QueryCondition_i :
+ public virtual ::DDS::CCM_QueryCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_QueryCondition_i (DDSQueryCondition *sc);
+
+ // Destructor
+ virtual ~RTI_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_query_condition (void);
+ private:
+ DDSQueryCondition *impl_;
+ };
+ }
+ }
+}
+
+#endif /* CIAO_RTI_QUERYCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.cpp
new file mode 100644
index 00000000000..2212ec3557d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.cpp
@@ -0,0 +1,20 @@
+// $Id$
+
+#include "RawListener.h"
+
+// Implementation skeleton constructor
+CCM_DDS_string_RawListener_i::CCM_DDS_string_RawListener_i (void)
+{
+}
+
+// Implementation skeleton destructor
+CCM_DDS_string_RawListener_i::~CCM_DDS_string_RawListener_i (void)
+{
+}
+
+void CCM_DDS_string_RawListener_i::on_data (
+ const char * an_instance,
+ const ::CCM_DDS::ReadInfo & info)
+{
+ // Add your implementation here
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.h
new file mode 100644
index 00000000000..17cd4acbfa3
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RawListener.h
@@ -0,0 +1,17 @@
+// $Id$
+
+class CCM_DDS_string_RawListener_i
+ : public virtual POA_CCM_DDS::string_RawListener
+{
+public:
+ // Constructor
+ CCM_DDS_string_RawListener_i (void);
+
+ // Destructor
+ virtual ~CCM_DDS_string_RawListener_i (void);
+
+ virtual
+ void on_data (
+ const char * an_instance,
+ const ::CCM_DDS::ReadInfo & info);
+};
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp
new file mode 100644
index 00000000000..55f8ae929ea
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.cpp
@@ -0,0 +1,63 @@
+// $Id$
+
+#include "ReadCondition.h"
+#include "DataReader.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_ReadCondition_i::RTI_ReadCondition_i (DDSReadCondition *rc)
+ : impl_ (rc)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_ReadCondition_i::~RTI_ReadCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ RTI_ReadCondition_i::get_trigger_value (void)
+ {
+ return this->impl_->get_trigger_value ();
+ }
+
+ ::DDS::SampleStateMask
+ RTI_ReadCondition_i::get_sample_state_mask (void)
+ {
+ return this->impl_->get_sample_state_mask ();
+ }
+
+ ::DDS::ViewStateMask
+ RTI_ReadCondition_i::get_view_state_mask (void)
+ {
+ return this->impl_->get_view_state_mask ();
+ }
+
+ ::DDS::InstanceStateMask
+ RTI_ReadCondition_i::get_instance_state_mask (void)
+ {
+ return this->impl_->get_instance_state_mask ();
+ }
+
+ ::DDS::DataReader_ptr
+ RTI_ReadCondition_i::get_datareader (void)
+ {
+ DDSDataReader* rd = this->impl_->get_datareader ();
+ ::DDS::DataReader_var retval = new RTI_DataReader_i (rd);
+ return retval._retn ();
+ }
+
+ DDSReadCondition *
+ RTI_ReadCondition_i::get_readcondition (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h
new file mode 100644
index 00000000000..71c7847311c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ReadCondition.h
@@ -0,0 +1,63 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_READCONDITION_H
+#define CIAO_RTI_READCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_ReadCondition_i :
+ public virtual ::DDS::CCM_ReadCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_ReadCondition_i (DDSReadCondition *rc);
+
+ // Destructor
+ virtual ~RTI_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_readcondition (void);
+ private:
+ DDSReadCondition *impl_;
+ };
+ }
+ }
+}
+
+#endif /* CIAO_RTI_READCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.cpp
new file mode 100644
index 00000000000..1dc38146250
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.cpp
@@ -0,0 +1,53 @@
+// $Id$
+
+#include "Reader.h"
+
+// Implementation skeleton constructor
+CCM_DDS_string_Reader_i::CCM_DDS_string_Reader_i (void)
+{
+}
+
+// Implementation skeleton destructor
+CCM_DDS_string_Reader_i::~CCM_DDS_string_Reader_i (void)
+{
+}
+
+void CCM_DDS_string_Reader_i::read_all (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_string_Reader_i::read_all_history (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_string_Reader_i::read_one (
+ char *& an_instance,
+ ::CCM_DDS::ReadInfo_out info)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_string_Reader_i::read_one_history (
+ const char * an_instance,
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos)
+{
+ // Add your implementation here
+}
+
+::CCM_DDS::QueryFilter * CCM_DDS_string_Reader_i::filter (void)
+{
+ // Add your implementation here
+}
+
+void CCM_DDS_string_Reader_i::filter (
+ const ::CCM_DDS::QueryFilter & filter)
+{
+ // Add your implementation here
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.h
new file mode 100644
index 00000000000..15358976d0c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Reader.h
@@ -0,0 +1,40 @@
+// $Id$
+
+class CCM_DDS_string_Reader_i
+ : public virtual POA_CCM_DDS::string_Reader
+{
+public:
+ // Constructor
+ CCM_DDS_string_Reader_i (void);
+
+ // Destructor
+ virtual ~CCM_DDS_string_Reader_i (void);
+
+ virtual
+ void read_all (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ virtual
+ void read_all_history (
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ virtual
+ void read_one (
+ char *& an_instance,
+ ::CCM_DDS::ReadInfo_out info);
+
+ virtual
+ void read_one_history (
+ const char * an_instance,
+ ::CCM_DDS::string_Reader::stringSeq_out instances,
+ ::CCM_DDS::ReadInfoSeq_out infos);
+
+ virtual
+ ::CCM_DDS::QueryFilter * filter (void);
+
+ virtual
+ void filter (
+ const ::CCM_DDS::QueryFilter & filter);
+};
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h
new file mode 100644
index 00000000000..9d9f203c649
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedDeadlineMissedStatus.h
@@ -0,0 +1,47 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H
+#define CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_RequestedDeadlineMissedStatus &status, ::DDS::RequestedDeadlineMissedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::RequestedDeadlineMissedStatus &status, ::DDS_RequestedDeadlineMissedStatus & ddsstatus)
+{
+ ddsstatus.total_count = status.total_count;
+ ddsstatus.total_count_change = status.total_count_change;
+ ddsstatus.last_instance_handle <<= status.last_instance_handle;
+}
+
+#endif /* CIAO_RTI_REQUESTEDDEADLINEMISSEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h
new file mode 100644
index 00000000000..b657de7c1fc
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/RequestedIncompatibleQosStatus.h
@@ -0,0 +1,51 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H
+#define CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H
+
+#include "QosPolicyCountSeq.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_RequestedIncompatibleQosStatus &status, ::DDS::RequestedIncompatibleQosStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::RequestedIncompatibleQosStatus &status, ::DDS_RequestedIncompatibleQosStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_REQUESTEDINCOMPATIBLEQOSSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h
new file mode 100644
index 00000000000..4e51ef3e61a
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleLostStatus.h
@@ -0,0 +1,28 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_SAMPLELOSTSTATUS_H
+#define CIAO_RTI_SAMPLELOSTSTATUS_H
+
+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 /* CIAO_RTI_SAMPLELOSTSTATUS_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h
new file mode 100644
index 00000000000..09bee568910
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SampleRejectedStatus.h
@@ -0,0 +1,51 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_SAMPLEREJECTEDSTATUS_H
+#define CIAO_RTI_SAMPLEREJECTEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_SampleRejectedStatus &status, ::DDS::SampleRejectedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::SampleRejectedStatus &status, ::DDS_SampleRejectedStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_SAMPLEREJECTEDSTATUS_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp
new file mode 100644
index 00000000000..c632e85ed71
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.cpp
@@ -0,0 +1,60 @@
+// $Id$
+
+#include "StatusCondition.h"
+#include "Subscriber.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_StatusCondition_i::RTI_StatusCondition_i (DDSStatusCondition *sc)
+ : impl_ (sc)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_StatusCondition_i::~RTI_StatusCondition_i (void)
+ {
+ }
+
+ ::CORBA::Boolean
+ RTI_StatusCondition_i::get_trigger_value (void)
+ {
+ return this->impl_->get_trigger_value ();
+ }
+
+ ::DDS::StatusMask
+ RTI_StatusCondition_i::get_enabled_statuses (void)
+ {
+ return this->impl_->get_enabled_statuses ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_StatusCondition_i::set_enabled_statuses (
+ ::DDS::StatusMask mask)
+ {
+ return this->impl_->set_enabled_statuses (mask);
+ }
+
+ ::DDS::Entity_ptr
+ RTI_StatusCondition_i::get_entity (void)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ DDSStatusCondition *
+ RTI_StatusCondition_i::get_status_condition (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h
new file mode 100644
index 00000000000..720b2430dbf
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/StatusCondition.h
@@ -0,0 +1,61 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_STATUSCONDITION_H
+#define CIAO_RTI_STATUSCONDITION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_StatusCondition_i :
+ public virtual ::DDS::CCM_StatusCondition,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_StatusCondition_i (DDSStatusCondition *sc);
+
+ // Destructor
+ virtual ~RTI_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_status_condition (void);
+ private:
+ DDSStatusCondition *impl_;
+ };
+ }
+ }
+}
+
+#endif /* CIAO_RTI_STATUSCONDITION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp
new file mode 100644
index 00000000000..91764d8856d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp
@@ -0,0 +1,255 @@
+// $Id$
+
+#include "Subscriber.h"
+#include "SubscriberListener.h"
+#include "Topic.h"
+#include "DataReader.h"
+#include "DataReaderListener.h"
+#include "Utils.h"
+#include "StatusCondition.h"
+#include "InstanceHandle_t.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_Subscriber_i::RTI_Subscriber_i (DDSSubscriber *s)
+ : impl_ (s)
+ {
+ CIAO_TRACE ("RTI_Subscriber_i::RTI_Subscriber_i");
+ }
+
+ // Implementation skeleton destructor
+ RTI_Subscriber_i::~RTI_Subscriber_i (void)
+ {
+ CIAO_TRACE ("RTI_Subscriber_i::~RTI_Subscriber_i");
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_Subscriber_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_Subscriber_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_Subscriber_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ ::DDS::DataReader_ptr
+ RTI_Subscriber_i::create_datareader (
+ ::DDS::TopicDescription_ptr a_topic,
+ const ::DDS::DataReaderQos & /*qos*/,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic);
+ if (!topic)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader - "
+ "Error: Unable to cast provided topic to its servant.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER, 0);
+ }
+ DDSTopic *rti_topic = topic->get_topic ();
+// DDSDataReaderListener *rti_drl = drl->get_datareaderlistener ();
+// todo leak
+ DDSDataReaderListener *rti_drl = new RTI_DataReaderListener_i (a_listener);
+ DDSDataReader *rti_dr = this->impl_->create_datareader (rti_topic,
+ DDS_DATAREADER_QOS_DEFAULT,
+ rti_drl,
+ mask);
+ if (!rti_dr)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader - "
+ "Error: RTI Topic returned a nil datareader.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ ::DDS::DataReader_var retval = new RTI_DataReader_i (rti_dr);
+
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::delete_datareader (
+ ::DDS::DataReader_ptr a_datareader)
+ {
+ RTI_DataReader_i *top = dynamic_cast< RTI_DataReader_i *> (a_datareader);
+ if (!top)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::delete_datareader - "
+ "Unable to cast provided object reference to servant.\n"));
+ return ::DDS::RETCODE_BAD_PARAMETER;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_Subscriber_i::delete_datareader - "
+ "Successfully casted provided object reference to servant.\n"));
+
+ DDS_ReturnCode_t retval = this->impl_->delete_datareader (top->get_datareader ());
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::delete_datareader - "
+ "Error: Returned non-ok error code %c\n",
+ translate_retcode (retval)));
+ }
+ else CIAO_DEBUG ((LM_INFO, CLINFO "RTI_Subscriber_i::delete_datareader - "
+ "Successfully deleted\n"));
+
+ return retval;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::delete_contained_entities (void)
+ {
+ return this->impl_->delete_contained_entities ();
+ }
+
+ ::DDS::DataReader_ptr
+ RTI_Subscriber_i::lookup_datareader (
+ const char * impl_name)
+ {
+ DDSDataReader* dr = this->impl_->lookup_datareader (impl_name);
+ ::DDS::DataReader_var retval = new RTI_DataReader_i (dr);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_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
+ RTI_Subscriber_i::notify_datareaders (void)
+ {
+ return this->impl_->notify_datareaders ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::set_qos (
+ const ::DDS::SubscriberQos & /*qos*/)
+ {
+ DDS_SubscriberQos rti_impl_qos;
+/* rti_impl_qos.presentation = qos.presentation;
+ rti_impl_qos.partition = qos.partition;
+ rti_impl_qos.group_data = qos.group_data;
+ rti_impl_qos.entity_factory = qos.entity_factory;*/
+ return this->impl_->set_qos (rti_impl_qos);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::get_qos (
+ ::DDS::SubscriberQos & /*qos*/)
+ {
+ DDS_SubscriberQos rti_impl_qos;
+ DDS_ReturnCode_t const rti_retcode = this->impl_->get_qos (rti_impl_qos);
+ /*qos.presentation = rti_impl_qos.presentation;
+ qos.partition = rti_impl_qos.partition;
+ qos.group_data = rti_impl_qos.group_data;
+ qos.entity_factory = rti_impl_qos.entity_factory;*/
+ return rti_retcode;
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::set_listener (
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_SubscriberListener_i* rti_impl_list = new RTI_SubscriberListener_i (a_listener);
+ return this->impl_->set_listener (rti_impl_list, mask);
+ }
+
+ ::DDS::SubscriberListener_ptr
+ RTI_Subscriber_i::get_listener (void)
+ {
+// DDSSubscriberListener* rti_impl_list = this->impl_->get_listener ();
+// ::DDS::SubscriberListener_var retval = new RTI_SubscriberListener_i (rti_impl_list);
+// return retval._retn ();
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::begin_access (void)
+ {
+ return this->impl_->begin_access ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::end_access (void)
+ {
+ return this->impl_->end_access ();
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_Subscriber_i::get_participant (void)
+ {
+ DDSDomainParticipant* p = this->impl_->get_participant ();
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (p);
+ return retval._retn ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::set_default_datareader_qos (
+ const ::DDS::DataReaderQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::get_default_datareader_qos (
+ ::DDS::DataReaderQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Subscriber_i::copy_from_topic_qos (
+ ::DDS::DataReaderQos & /*a_datareader_qos*/,
+ const ::DDS::TopicQos & /*a_impl_qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ // Add your implementation here
+ }
+
+ DDSSubscriber *
+ RTI_Subscriber_i::get_subscriber (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h
new file mode 100644
index 00000000000..cf35349ed28
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h
@@ -0,0 +1,127 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_SUBSCRIBER_H
+#define CIAO_RTI_SUBSCRIBER_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_Subscriber_i :
+ public virtual ::DDS::CCM_Subscriber,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_Subscriber_i (DDSSubscriber *p);
+
+ // Destructor
+ virtual ~RTI_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);
+
+ 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_subscriber (void);
+ private:
+ DDSSubscriber *impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp
new file mode 100644
index 00000000000..1a894786c21
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.cpp
@@ -0,0 +1,120 @@
+// $Id$
+
+#include "SubscriberListener.h"
+#include "Subscriber.h"
+#include "DataReader.h"
+#include "SampleLostStatus.h"
+#include "SubscriptionMatchedStatus.h"
+#include "RequestedDeadlineMissedStatus.h"
+#include "SampleRejectedStatus.h"
+#include "LivelinessChangedStatus.h"
+#include "RequestedIncompatibleQosStatus.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_SubscriberListener_i::RTI_SubscriberListener_i (::DDS::SubscriberListener_ptr p)
+ : impl_ ( ::DDS::SubscriberListener::_duplicate (p))
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_SubscriberListener_i::~RTI_SubscriberListener_i (void)
+ {
+ }
+
+ void
+ RTI_SubscriberListener_i::on_data_on_readers (
+ ::DDSSubscriber* the_subscriber)
+ {
+ ::DDS::Subscriber_var sub = new RTI_Subscriber_i (the_subscriber);
+ this->impl_->on_data_on_readers (sub.in ());
+ }
+
+ void
+ RTI_SubscriberListener_i::on_requested_deadline_missed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedDeadlineMissedStatus & status)
+ {
+ ::DDS::RequestedDeadlineMissedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_requested_deadline_missed (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_SubscriberListener_i::on_requested_incompatible_qos (
+ ::DDSDataReader* the_reader,
+ const ::DDS_RequestedIncompatibleQosStatus & status)
+ {
+ ::DDS::RequestedIncompatibleQosStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_requested_incompatible_qos (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_SubscriberListener_i::on_sample_rejected (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleRejectedStatus & status)
+ {
+ ::DDS::SampleRejectedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_sample_rejected (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_SubscriberListener_i::on_liveliness_changed (
+ ::DDSDataReader* the_reader,
+ const ::DDS_LivelinessChangedStatus & status)
+ {
+ ::DDS::LivelinessChangedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_liveliness_changed (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_SubscriberListener_i::on_data_available (
+ ::DDSDataReader* the_reader)
+ {
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_data_available (dds_reader.in ());
+ }
+
+ void
+ RTI_SubscriberListener_i::on_subscription_matched (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SubscriptionMatchedStatus & status)
+ {
+ ::DDS::SubscriptionMatchedStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_subscription_matched (dds_reader.in (), ddsstatus);
+ }
+
+ void
+ RTI_SubscriberListener_i::on_sample_lost (
+ ::DDSDataReader* the_reader,
+ const ::DDS_SampleLostStatus & status)
+ {
+ ::DDS::SampleLostStatus ddsstatus;
+ ddsstatus <<= status;
+ ::DDS::DataReader_var dds_reader = new RTI_DataReader_i (the_reader);
+ this->impl_->on_sample_lost (dds_reader.in (), ddsstatus);
+ }
+
+ ::DDS::SubscriberListener_ptr
+ RTI_SubscriberListener_i::get_subscriber_listener (void)
+ {
+ return ::DDS::SubscriberListener::_duplicate (this->impl_.in ());
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h
new file mode 100644
index 00000000000..6f552d234e9
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener.h
@@ -0,0 +1,82 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_SUBSCRIBERLISTENER_H
+#define CIAO_RTI_SUBSCRIBERLISTENER_H
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_SubscriberListener_i :
+ public virtual ::DDSSubscriberListener
+ {
+ public:
+ // Constructor
+ RTI_SubscriberListener_i ( ::DDS::SubscriberListener_ptr s);
+
+ // Destructor
+ virtual ~RTI_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/ndds/SubscriptionMatchedStatus.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h
new file mode 100644
index 00000000000..0bfbfdbab4f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/SubscriptionMatchedStatus.h
@@ -0,0 +1,56 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H
+#define CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H
+
+#include "InstanceHandle_t.h"
+
+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;
+}
+
+inline void
+operator>>= (const ::DDS_SubscriptionMatchedStatus &status, ::DDS::SubscriptionMatchedStatus & ddsstatus)
+{
+ 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>>= (const ::DDS::SubscriptionMatchedStatus &status, ::DDS_SubscriptionMatchedStatus & ddsstatus)
+{
+ 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 /* CIAO_RTI_SUBSCRIPTIONMATCHEDSTATUS_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h
new file mode 100644
index 00000000000..a6385b25756
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Time_t.h
@@ -0,0 +1,35 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_TIME_T_H
+#define CIAO_RTI_TIME_T_H
+
+inline void
+operator<<= (::DDS::Time_t &ddsstatus, const ::DDS_Time_t & status)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+inline void
+operator<<= (::DDS_Time_t &ddsstatus, const ::DDS::Time_t & status)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+inline void
+operator>>= (const ::DDS_Time_t &status, ::DDS::Time_t & ddsstatus)
+{
+ ddsstatus.sec = status.sec;
+ ddsstatus.nanosec = status.nanosec;
+}
+
+#endif /* CIAO_RTI_TIME_T_H */
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp
new file mode 100644
index 00000000000..aa8ed0c686f
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.cpp
@@ -0,0 +1,117 @@
+// $Id$
+
+#include "Topic.h"
+#include "StatusCondition.h"
+#include "InstanceHandle_t.h"
+#include "InconsistentTopicStatus.h"
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_Topic_i::RTI_Topic_i (DDSTopic * top)
+ : impl_ (top)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_Topic_i::~RTI_Topic_i (void)
+ {
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Topic_i::set_qos (const ::DDS::TopicQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Topic_i::get_qos (::DDS::TopicQos & /*qos*/)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Topic_i::set_listener (::DDS::TopicListener_ptr /*a_listener*/,
+ ::DDS::StatusMask /*mask*/)
+ {
+ //RTI_TopicListener_i* rti_impl_list = new RTI_TopicListener_i (a_listener);
+ //return this->impl_->set_listener (rti_impl_list, mask);
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::TopicListener_ptr
+ RTI_Topic_i::get_listener (void)
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Topic_i::get_inconsistent_topic_status (::DDS::InconsistentTopicStatus & a_status)
+ {
+ DDS_InconsistentTopicStatus ddsstatus;
+ ddsstatus <<= a_status;
+ return this->impl_->get_inconsistent_topic_status (ddsstatus);
+ }
+
+ ::DDS::ReturnCode_t
+ RTI_Topic_i::enable (void)
+ {
+ return this->impl_->enable ();
+ }
+
+ ::DDS::StatusCondition_ptr
+ RTI_Topic_i::get_statuscondition (void)
+ {
+ DDSStatusCondition* sc = this->impl_->get_statuscondition ();
+ ::DDS::StatusCondition_var retval = new RTI_StatusCondition_i (sc);
+ return retval._retn ();
+ }
+
+ ::DDS::StatusMask
+ RTI_Topic_i::get_status_changes (void)
+ {
+ return this->impl_->get_status_changes ();
+ }
+
+ ::DDS::InstanceHandle_t
+ RTI_Topic_i::get_instance_handle (void)
+ {
+ ::DDS_InstanceHandle_t const rtihandle = this->impl_->get_instance_handle ();
+ ::DDS::InstanceHandle_t handle;
+ handle <<= rtihandle;
+ return handle;
+ }
+
+ char *
+ RTI_Topic_i::get_type_name (void)
+ {
+ return CORBA::string_dup (this->impl_->get_type_name ());
+ }
+
+ char *
+ RTI_Topic_i::get_name (void)
+ {
+ return CORBA::string_dup (this->impl_->get_name ());
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_Topic_i::get_participant (void)
+ {
+ DDSDomainParticipant* p = this->impl_->get_participant ();
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (p);
+ return retval._retn ();
+ }
+
+ DDSTopic *
+ RTI_Topic_i::get_topic (void)
+ {
+ return impl_;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h
new file mode 100644
index 00000000000..af0ff15fdeb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Topic.h
@@ -0,0 +1,81 @@
+/**
+ * @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 "NDDS_Traits.h"
+#include "DomainParticipant.h"
+
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_Topic_i :
+ public virtual ::DDS::CCM_Topic,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_Topic_i (DDSTopic *);
+
+ // Destructor
+ virtual ~RTI_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_topic (void);
+
+ private:
+ DDSTopic * impl_;
+ };
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp
new file mode 100644
index 00000000000..2950ec89dc0
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.cpp
@@ -0,0 +1,55 @@
+// $Id$
+
+#include "TopicDescription.h"
+#include "DomainParticipant.h"
+
+#include "dds4ccm/idl/dds4ccm_BaseC.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ // Implementation skeleton constructor
+ RTI_TopicDescription_i::RTI_TopicDescription_i (DDSTopicDescription *td)
+ : impl_ (td)
+ {
+ }
+
+ // Implementation skeleton destructor
+ RTI_TopicDescription_i::~RTI_TopicDescription_i (void)
+ {
+ }
+
+ char *
+ RTI_TopicDescription_i::get_type_name (void)
+ {
+ return CORBA::string_dup (this->impl_->get_type_name ());
+ }
+
+ char *
+ RTI_TopicDescription_i::get_name (void)
+ {
+ return CORBA::string_dup (this->impl_->get_name ());
+ }
+
+ ::DDS::DomainParticipant_ptr
+ RTI_TopicDescription_i::get_participant (void)
+ {
+ DDSDomainParticipant* p = this->impl_->get_participant ();
+ ::DDS::DomainParticipant_var retval = new RTI_DomainParticipant_i (p);
+ return retval._retn ();
+ }
+
+ DDSTopicDescription *
+ RTI_TopicDescription_i::get_topicdescription (void)
+ {
+ return this->impl_;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h
new file mode 100644
index 00000000000..cbd4c84433c
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/TopicDescription.h
@@ -0,0 +1,57 @@
+/**
+ * @author William R. Otte <wotte@dre.vanderbilt.edu>
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ *
+ * $Id$
+ *
+ * Wrapper facade for NDDS.
+ */
+
+#ifndef CIAO_RTI_TOPICDESCRIPTION_H
+#define CIAO_RTI_TOPICDESCRIPTION_H
+
+#include "tao/LocalObject.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsEC.h"
+
+#include "dds4ccm/idl/dds_rtf2_dcpsC.h"
+#include "dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h"
+
+#include "ndds/ndds_cpp.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ class DDS4CCM_NDDS_IMPL_Export RTI_TopicDescription_i :
+ public virtual ::DDS::CCM_TopicDescription,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ // Constructor
+ RTI_TopicDescription_i (DDSTopicDescription *td);
+
+ // Destructor
+ virtual ~RTI_TopicDescription_i (void);
+
+ virtual char *
+ get_type_name (void);
+
+ virtual char *
+ get_name (void);
+
+ virtual ::DDS::DomainParticipant_ptr
+ get_participant (void);
+
+ DDSTopicDescription * get_topicdescription (void);
+ private:
+ DDSTopicDescription *impl_;
+ };
+ }
+ }
+}
+
+#endif /* CIAO_RTI_TOPICDESCRIPTION_H */
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp
new file mode 100644
index 00000000000..cd1f279d7ac
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.cpp
@@ -0,0 +1,36 @@
+// $Id$
+
+#include "Utils.h"
+#include "ndds/ndds_cpp.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ 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
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h
new file mode 100644
index 00000000000..dbc687f6e7b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Utils.h
@@ -0,0 +1,27 @@
+/**
+ * @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 "ndds/ndds_cpp.h"
+#include "dds4ccm_ndds_impl_export.h"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ DDS4CCM_NDDS_IMPL_Export const char * translate_retcode (DDS_ReturnCode_t ret);
+ }
+ }
+}
+
+#endif
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.h
new file mode 100644
index 00000000000..afdab67e31d
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.h
@@ -0,0 +1,38 @@
+/**
+ * @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"
+
+namespace CIAO
+{
+ namespace DDS4CCM
+ {
+ namespace RTI
+ {
+ template <typename NDDS_TYPE, typename BASE>
+ class Writer_T
+ {
+ public:
+ // Constructor
+ Writer_T (::DDS::DataWriter_ptr dw);
+
+ // Destructor
+ virtual ~Writer_T (void);
+
+ virtual void write (const typename NDDS_TYPE::value_type& an_instance);
+
+ virtual void write (const typename NDDS_TYPE::seq_type& instances, bool coherent_write);
+ private:
+ typename NDDS_TYPE::data_writer *impl_;
+ };
+ }
+ }
+}
+
+#include "dds4ccm/impl/ndds/Writer.tpp"
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.tpp b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.tpp
new file mode 100644
index 00000000000..86d46402509
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/Writer.tpp
@@ -0,0 +1,105 @@
+// $Id$
+#include "dds4ccm/impl/ndds/DataWriter.h"
+#include "dds4ccm/impl/ndds/Utils.h"
+
+#include "ciao/Logger/Log_Macros.h"
+
+// Implementation skeleton constructor
+template <typename NDDS_TYPE, typename BASE >
+CIAO::DDS4CCM::RTI::Writer_T<NDDS_TYPE, BASE>::Writer_T (::DDS::DataWriter_ptr writer)
+ : impl_ (0)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::Writer_T");
+
+ RTI_DataWriter_i *rdw = dynamic_cast <RTI_DataWriter_i *> (writer);
+
+ if (rdw == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::Writer_T - "
+ "Unable to cast provided DataWriter to servant\n"));
+ throw CORBA::INTERNAL ();
+ }
+
+ impl_ = NDDS_TYPE::data_writer::narrow (rdw->get_datawriter ());
+
+ if (!impl_)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::Writer_T - "
+ "Unable to narrow the provided writer entity to the specific "
+ "type necessary to publish messages\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+// Implementation skeleton destructor
+template <typename NDDS_TYPE, typename BASE >
+CIAO::DDS4CCM::RTI::Writer_T<NDDS_TYPE, BASE>::~Writer_T (void)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::~Writer_T");
+}
+
+template <typename NDDS_TYPE, typename BASE >
+void
+CIAO::DDS4CCM::RTI::Writer_T<NDDS_TYPE, BASE>::write (const typename NDDS_TYPE::value_type & an_instance)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::write");
+
+ if (an_instance == 0)
+ {
+ CIAO_DEBUG ((LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Write was provided a null instance to write\n"));
+ return;
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Preparing to write to DDS\n"));
+ DDS_ReturnCode_t retval = this->impl_->write (an_instance,
+ DDS_HANDLE_NIL);
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Write unsuccessful, received error code %C\n",
+ translate_retcode (retval)));
+ throw CCM_DDS::InternalError (retval, 0);
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Write successful\n"));
+}
+
+template <typename NDDS_TYPE, typename BASE >
+void
+CIAO::DDS4CCM::RTI::Writer_T<NDDS_TYPE, BASE>::write (const typename NDDS_TYPE::seq_type& instances, bool coherent_write)
+{
+ CIAO_TRACE ("CIAO::DDS4CCM::RTI::Writer_T::write");
+
+ if (coherent_write)
+ {
+ this->impl_->get_publisher()->begin_coherent_changes ();
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Preparing to write to DDS\n"));
+ for (::DDS_Long index = 0; index < instances.length(); index++)
+ {
+ DDS_ReturnCode_t retval = this->impl_->write (instances[index],
+ DDS_HANDLE_NIL);
+
+ if (retval != DDS_RETCODE_OK)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Write unsuccessful, received error code %C\n",
+ translate_retcode (retval)));
+ throw CCM_DDS::InternalError (retval, index);
+ }
+ }
+
+ if (coherent_write)
+ {
+ this->impl_->get_publisher()->end_coherent_changes ();
+ }
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "CIAO::DDS4CCM::RTI::Writer_T::write - "
+ "Write successful\n"));
+}
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h b/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_impl_export.h
new file mode 100644
index 00000000000..7ca68d771eb
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/dds4ccm_ndds_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_NDDS_IMPL_EXPORT_H
+#define DDS4CCM_NDDS_IMPL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DDS4CCM_NDDS_IMPL_HAS_DLL)
+# define DDS4CCM_NDDS_IMPL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DDS4CCM_NDDS_IMPL_HAS_DLL */
+
+#if !defined (DDS4CCM_NDDS_IMPL_HAS_DLL)
+# define DDS4CCM_NDDS_IMPL_HAS_DLL 1
+#endif /* ! DDS4CCM_NDDS_IMPL_HAS_DLL */
+
+#if defined (DDS4CCM_NDDS_IMPL_HAS_DLL) && (DDS4CCM_NDDS_IMPL_HAS_DLL == 1)
+# if defined (DDS4CCM_NDDS_IMPL_BUILD_DLL)
+# define DDS4CCM_NDDS_IMPL_Export ACE_Proper_Export_Flag
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DDS4CCM_NDDS_IMPL_BUILD_DLL */
+# define DDS4CCM_NDDS_IMPL_Export ACE_Proper_Import_Flag
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DDS4CCM_NDDS_IMPL_BUILD_DLL */
+#else /* DDS4CCM_NDDS_IMPL_HAS_DLL == 1 */
+# define DDS4CCM_NDDS_IMPL_Export
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARATION(T)
+# define DDS4CCM_NDDS_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DDS4CCM_NDDS_IMPL_HAS_DLL == 1 */
+
+// Set DDS4CCM_NDDS_IMPL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DDS4CCM_NDDS_IMPL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DDS4CCM_NDDS_IMPL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DDS4CCM_NDDS_IMPL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DDS4CCM_NDDS_IMPL_NTRACE */
+
+#if (DDS4CCM_NDDS_IMPL_NTRACE == 1)
+# define DDS4CCM_NDDS_IMPL_TRACE(X)
+#else /* (DDS4CCM_NDDS_IMPL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DDS4CCM_NDDS_IMPL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DDS4CCM_NDDS_IMPL_NTRACE == 1) */
+
+#endif /* DDS4CCM_NDDS_IMPL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc b/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc
new file mode 100644
index 00000000000..9fbe81b294b
--- /dev/null
+++ b/modules/CIAO/connectors/dds4ccm/impl/ndds/ndds_impl.mpc
@@ -0,0 +1,32 @@
+// $Id$
+
+project(CIAO_DDS4CCM_NDDS_Impl) : dds4ccm_skel, taolib, ciao_output, nddslib, ccm_stub {
+
+ after += DDS4CCM_lem_stub
+ libs += DDS4CCM_lem_stub
+
+ dynamicflags = DDS4CCM_NDDS_IMPL_BUILD_DLL
+ macros += BUILDING_NDDS_LIB
+ Header_Files {
+ *.h
+ }
+
+ Source_Files {
+ DataWriter.cpp
+ DataWriterListener.cpp
+ DataReader.cpp
+ DataReaderListener.cpp
+ DomainParticipant.cpp
+ DomainParticipantFactory.cpp
+ Topic.cpp
+ TopicDescription.cpp
+ Publisher.cpp
+ PublisherListener.cpp
+ Subscriber.cpp
+ SubscriberListener.cpp
+ StatusCondition.cpp
+ ReadCondition.cpp
+ QueryCondition.cpp
+ Utils.cpp
+ }
+}