diff options
Diffstat (limited to 'modules/CIAO/connectors')
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 + } +} |