summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2009-11-25 14:27:05 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2009-11-25 14:27:05 +0000
commitf8fc918027d4aeb0f38f741fa580b7f8d9feee78 (patch)
tree668d85057114425d76a96eed22e56a6fb0c9d18e
parente130a31df5e9940ac59b43e4cbea89e7d7583115 (diff)
downloadATCD-f8fc918027d4aeb0f38f741fa580b7f8d9feee78.tar.gz
Wed Nov 25 14:26:21 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* connectors/dds4ccm/idl/dds_rtf2_dcps.idl * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp * connectors/dds4ccm/impl/ndds/DomainParticipant.h * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h * connectors/dds4ccm/impl/ndds/Publisher.cpp * connectors/dds4ccm/impl/ndds/Publisher.h * connectors/dds4ccm/impl/ndds/Subscriber.cpp * connectors/dds4ccm/impl/ndds/Subscriber.h Implemented all with_profile methods
-rw-r--r--CIAO/ChangeLog16
-rw-r--r--CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl38
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp24
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h2
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp106
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp124
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h20
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp10
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h5
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp39
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/Publisher.h7
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp37
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h8
13 files changed, 400 insertions, 36 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog
index c78e451f004..322c8f54dd9 100644
--- a/CIAO/ChangeLog
+++ b/CIAO/ChangeLog
@@ -1,3 +1,19 @@
+Wed Nov 25 14:26:21 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * connectors/dds4ccm/idl/dds_rtf2_dcps.idl
+ * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp
+ * connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h
+ * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
+ * connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
+ * connectors/dds4ccm/impl/ndds/DomainParticipant.h
+ * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
+ * connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
+ * connectors/dds4ccm/impl/ndds/Publisher.cpp
+ * connectors/dds4ccm/impl/ndds/Publisher.h
+ * connectors/dds4ccm/impl/ndds/Subscriber.cpp
+ * connectors/dds4ccm/impl/ndds/Subscriber.h
+ Implemented all with_profile methods
+
Wed Nov 25 14:12:21 UTC 2009 Marcel Smit <msmit@remedy.nl>
* bin/ciao_tests.lst:
diff --git a/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl b/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
index aa7fc6a3219..7f473db37f1 100644
--- a/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
+++ b/CIAO/connectors/dds4ccm/idl/dds_rtf2_dcps.idl
@@ -697,6 +697,11 @@ module DDS {
in PublisherQos qos,
in PublisherListener a_listener,
in StatusMask mask);
+ Publisher create_publisher_with_profile(
+ in string library_name,
+ in string profile_name,
+ in PublisherListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_publisher(
in Publisher p);
@@ -704,6 +709,11 @@ module DDS {
in SubscriberQos qos,
in SubscriberListener a_listener,
in StatusMask mask);
+ Subscriber create_subscriber_with_profile(
+ in string library_name,
+ in string profile_name,
+ in SubscriberListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_subscriber(
in Subscriber s);
Subscriber get_builtin_subscriber();
@@ -714,6 +724,13 @@ module DDS {
in TopicQos qos,
in TopicListener a_listener,
in StatusMask mask);
+ Topic create_topic_with_profile(
+ in string topic_name,
+ in string type_name,
+ in string library_name,
+ in string profile_name,
+ in TopicListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_topic(
in Topic a_topic);
@@ -806,6 +823,12 @@ module DDS {
in DomainParticipantQos qos,
in DomainParticipantListener a_listener,
in StatusMask mask);
+ DomainParticipant create_participant_with_profile(
+ in DomainId_t domain_id,
+ in string library_name,
+ in string profile_name,
+ in DomainParticipantListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_participant(
in DomainParticipant a_participant);
@@ -814,6 +837,9 @@ module DDS {
ReturnCode_t set_default_participant_qos(
in DomainParticipantQos qos);
+ ReturnCode_t set_default_participant_qos_with_profile(
+ in string library_name,
+ in string profile_name);
ReturnCode_t get_default_participant_qos(
inout DomainParticipantQos qos);
@@ -876,6 +902,12 @@ module DDS {
in DataWriterQos qos,
in DataWriterListener a_listener,
in StatusMask mask);
+ DataWriter create_datawriter_with_profile(
+ in Topic a_topic,
+ in string library_name,
+ in string probile_name,
+ in DataWriterListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_datawriter(
in DataWriter a_datawriter);
DataWriter lookup_datawriter(
@@ -989,6 +1021,12 @@ module DDS {
in DataReaderQos qos,
in DataReaderListener a_listener,
in StatusMask mask);
+ DataReader create_datareader_with_profile(
+ in TopicDescription a_topic,
+ in string library_name,
+ in string profile_name,
+ in DataReaderListener a_listener,
+ in StatusMask mask);
ReturnCode_t delete_datareader(
in DataReader a_datareader);
ReturnCode_t delete_contained_entities();
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp
index e59bb550e39..4b7cf9d1616 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp
@@ -11,6 +11,8 @@ template <typename DDS_TYPE, typename CCM_TYPE>
DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::DDS_Base_Connector_T (void)
: domain_id_ (0)
, configuration_complete_ (false)
+ , library_name_ (0)
+ , profile_name_ (0)
{
ACE_Env_Value<int> id (ACE_TEXT("DDS4CCM_DEFAULT_DOMAIN_ID"), this->domain_id_);
this->domain_id_ = id;
@@ -87,12 +89,9 @@ DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::configure_default_domain (void)
// NDDS_CONFIG_LOG_VERBOSITY_STATUS_ALL );
// Generic code
- ::CIAO::DDS4CCM::RTI::RTI_DomainParticipantFactory_i* df =
+ this->domain_participant_factory_ =
new ::CIAO::DDS4CCM::RTI::RTI_DomainParticipantFactory_i ();
- this->domain_participant_factory_ = df;
- const char* library = 0;
- const char* profile = 0;
if (this->qos_profile_.in ())
{
char* buf = ACE_OS::strdup (this->qos_profile_.in ());
@@ -100,22 +99,23 @@ DDS_Base_Connector_T<DDS_TYPE, CCM_TYPE>::configure_default_domain (void)
tok.delimiter_replace ('#', 0);
for (char *p = tok.next (); p; p = tok.next ())
{
- if (!library)
+ if (!this->library_name_)
{
- library = p;
+ this->library_name_ = p;
}
- else if (!profile)
+ else if (!this->profile_name_)
{
- profile = p;
+ this->profile_name_ = p;
}
}
}
- if (library && profile)
+ if (this->library_name_ && this->profile_name_)
{
+ this->domain_participant_factory_->set_default_participant_qos_with_profile (this->library_name_, this->profile_name_);
this->domain_participant_ =
- df->create_participant_with_profile (this->domain_id_,
- library,
- profile,
+ this->domain_participant_factory_->create_participant_with_profile (this->domain_id_,
+ this->library_name_,
+ this->profile_name_,
0,
DDS_STATUS_MASK_NONE);
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h
index 0773e52c03b..6928dd24ff1 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h
@@ -39,6 +39,8 @@ protected:
DDS::DomainId_t domain_id_;
CORBA::String_var qos_profile_;
bool configuration_complete_;
+ const char* library_name_;
+ const char* profile_name_;
::DDS::DomainParticipantFactory_var domain_participant_factory_;
::DDS::DomainParticipant_var domain_participant_;
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
index c121db218c7..63b384f3ece 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
@@ -34,10 +34,21 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_write (void)
{
if (CORBA::is_nil (this->supplier_publisher_.in ()))
{
- ::DDS::PublisherQos pqos;
- this->supplier_publisher_ = this->domain_participant_->create_publisher (pqos,
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->supplier_publisher_ = this->domain_participant_->create_publisher_with_profile (
+ this->library_name_,
+ this->profile_name_,
0,
0);
+ }
+ else
+ {
+ ::DDS::PublisherQos pqos;
+ this->supplier_publisher_ = this->domain_participant_->create_publisher (pqos,
+ 0,
+ 0);
+ }
}
if (CORBA::is_nil (this->supplier_writer_.in ()))
@@ -48,12 +59,24 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_write (void)
this->listen_datalistener_mode_,
this->listen_datalistener_max_delivered_data_);
- ::DDS::DataWriterQos dwqos;
- ::DDS::DataWriter_var dwv_tmp = this->supplier_publisher_->create_datawriter (this->topic_.in (),
- dwqos,
- this->supplier_listener_.in (),
- DDS_OFFERED_DEADLINE_MISSED_STATUS | DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | DDS_LIVELINESS_LOST_STATUS | DDS_PUBLICATION_MATCHED_STATUS);
- this->supplier_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+ if (this->library_name_ && this->profile_name_)
+ {
+ ::DDS::DataWriter_var dwv_tmp = this->supplier_publisher_->create_datawriter_with_profile (this->topic_.in (),
+ this->library_name_,
+ this->profile_name_,
+ this->supplier_listener_.in (),
+ DDS_OFFERED_DEADLINE_MISSED_STATUS | DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | DDS_LIVELINESS_LOST_STATUS | DDS_PUBLICATION_MATCHED_STATUS);
+ this->supplier_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+ }
+ else
+ {
+ ::DDS::DataWriterQos dwqos;
+ ::DDS::DataWriter_var dwv_tmp = this->supplier_publisher_->create_datawriter (this->topic_.in (),
+ dwqos,
+ this->supplier_listener_.in (),
+ DDS_OFFERED_DEADLINE_MISSED_STATUS | DDS_OFFERED_INCOMPATIBLE_QOS_STATUS | DDS_LIVELINESS_LOST_STATUS | DDS_PUBLICATION_MATCHED_STATUS);
+ this->supplier_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+ }
}
}
catch (...)
@@ -73,10 +96,21 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_listen (void)
{
if (CORBA::is_nil (this->listen_subscriber_.in ()))
{
- ::DDS::SubscriberQos sqos;
- this->listen_subscriber_ = this->domain_participant_->create_subscriber (sqos,
- 0,
- 0);
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->listen_subscriber_ = this->domain_participant_->create_subscriber_with_profile (
+ this->library_name_,
+ this->profile_name_,
+ 0,
+ 0);
+ }
+ else
+ {
+ ::DDS::SubscriberQos sqos;
+ this->listen_subscriber_ = this->domain_participant_->create_subscriber (sqos,
+ 0,
+ 0);
+ }
}
if (CORBA::is_nil (this->__listen_datareaderlistener.in ()))
@@ -90,22 +124,46 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configure_port_dds_listen (void)
if (CORBA::is_nil (this->push_consumer_data_.in ()))
{
- ::DDS::DataReaderQos drqos;
- this->push_consumer_data_ =
- this->listen_subscriber_->create_datareader (this->topic_.in (),
- drqos,
- this->__listen_datareaderlistener.in (),
- DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ if (this->library_name_ && this->profile_name_)
+ {
+ this->push_consumer_data_ =
+ this->listen_subscriber_->create_datareader_with_profile (this->topic_.in (),
+ this->library_name_,
+ this->profile_name_,
+ this->__listen_datareaderlistener.in (),
+ DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ this->push_consumer_data_ =
+ this->listen_subscriber_->create_datareader (this->topic_.in (),
+ drqos,
+ this->__listen_datareaderlistener.in (),
+ DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ }
}
if (CORBA::is_nil (this->pull_consumer_fresh_data_.in ()))
{
- ::DDS::DataReaderQos drqos;
- this->pull_consumer_fresh_data_ =
- this->listen_subscriber_->create_datareader (this->topic_.in (),
- drqos,
- this->__listen_datareaderlistener.in (),
- DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ if (this->profile_name_ && this->library_name_)
+ {
+ this->pull_consumer_fresh_data_ =
+ this->listen_subscriber_->create_datareader_with_profile (this->topic_.in (),
+ this->library_name_,
+ this->profile_name_,
+ this->__listen_datareaderlistener.in (),
+ DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ }
+ else
+ {
+ ::DDS::DataReaderQos drqos;
+ this->pull_consumer_fresh_data_ =
+ this->listen_subscriber_->create_datareader (this->topic_.in (),
+ drqos,
+ this->__listen_datareaderlistener.in (),
+ DDS_DATA_AVAILABLE_STATUS | DDS_REQUESTED_DEADLINE_MISSED_STATUS | DDS_SAMPLE_LOST_STATUS | DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS);
+ }
}
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
index 85b0a720b1d..a1b26329a7b 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.cpp
@@ -39,6 +39,41 @@ namespace CIAO
}
::DDS::Publisher_ptr
+ RTI_DomainParticipant_i::create_publisher_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_publisher_with_profile");
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - "
+ "Creating Publisher\n"));
+
+ RTI_PublisherListener_i *rti_pl = new RTI_PublisherListener_i (a_listener);
+ DDSPublisher * rti_pub =
+ this->impl_->create_publisher_with_profile (library_name,
+ profile_name,
+ rti_pl,
+ mask);
+
+ if (!rti_pub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - "
+ "Error: Unable to create Publisher\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::create_publisher_with_profile - "
+ "Successfully created a DDSPublisher\n"));
+
+ rti_pub->enable ();
+ ::DDS::Publisher_var retval = new RTI_Publisher_i (rti_pub);
+
+ return retval._retn ();
+ }
+
+ ::DDS::Publisher_ptr
RTI_DomainParticipant_i::create_publisher (const ::DDS::PublisherQos & /*qos*/,
::DDS::PublisherListener_ptr a_listener,
::DDS::StatusMask mask)
@@ -102,6 +137,40 @@ namespace CIAO
}
::DDS::Subscriber_ptr
+ RTI_DomainParticipant_i::create_subscriber_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::SubscriberListener_ptr /*a_listener*/,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_subscriber_with_profile");
+
+ CIAO_DEBUG ((LM_TRACE, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - "
+ "Creating Subscriber\n"));
+
+ DDSSubscriber * rti_sub =
+ this->impl_->create_subscriber_with_profile (library_name,
+ profile_name,
+ 0,
+ mask);
+
+ if (!rti_sub)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - "
+ "Error: Unable to create Subscriber\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ CIAO_DEBUG ((LM_INFO, CLINFO "RTI_DomainParticipant_i::create_subscriber_with_profile - "
+ "Successfully created a DDSSubscriber\n"));
+
+ rti_sub->enable ();
+ ::DDS::Subscriber_var retval = new RTI_Subscriber_i (rti_sub);
+
+ return retval._retn ();
+ }
+
+ ::DDS::Subscriber_ptr
RTI_DomainParticipant_i::create_subscriber (const ::DDS::SubscriberQos & /*qos*/,
::DDS::SubscriberListener_ptr /*a_listener*/,
::DDS::StatusMask mask)
@@ -210,6 +279,61 @@ namespace CIAO
return retval._retn ();
}
+ ::DDS::Topic_ptr
+ RTI_DomainParticipant_i::create_topic_with_profile (
+ const char *impl_name,
+ const char *type_name,
+ const char *library_name,
+ const char *profile_name,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ CIAO_TRACE ("DDS_DomainParticipant_i::create_topic_with_profile");
+
+ if (impl_name == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Error: provided nil topic name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER,
+ 0);
+ }
+
+ if (type_name == 0)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Error: provided nil type name\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_BAD_PARAMETER,
+ 0);
+ }
+
+ CIAO_DEBUG ((LM_DEBUG, CLINFO "DDS_DomainParticipant_i::create_topic_with_profile - "
+ "Attempting to create topic with name %C and type %C\n",
+ impl_name, type_name));
+
+ RTI_TopicListener_i *rti_tl = new RTI_TopicListener_i (a_listener);
+ DDSTopic *rti_topic = this->impl_->create_topic_with_profile (impl_name,
+ type_name,
+ library_name,
+ profile_name,
+ rti_tl,
+ 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)
{
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h
index 986c8e4eab6..5c56b4e5f59 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipant.h
@@ -43,6 +43,12 @@ namespace CIAO
::DDS::PublisherListener_ptr a_listener,
::DDS::StatusMask mask);
+ virtual ::DDS::Publisher_ptr create_publisher_with_profile (
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::PublisherListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
virtual
::DDS::ReturnCode_t delete_publisher (::DDS::Publisher_ptr p);
@@ -51,6 +57,12 @@ namespace CIAO
::DDS::SubscriberListener_ptr a_listener,
::DDS::StatusMask mask);
+ virtual ::DDS::Subscriber_ptr create_subscriber_with_profile(
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::SubscriberListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
virtual
::DDS::ReturnCode_t delete_subscriber (::DDS::Subscriber_ptr s);
@@ -64,6 +76,14 @@ namespace CIAO
::DDS::TopicListener_ptr a_listener,
::DDS::StatusMask mask);
+ virtual ::DDS::Topic_ptr create_topic_with_profile (
+ const char * impl_name,
+ const char * type_name,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::TopicListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
virtual
::DDS::ReturnCode_t delete_topic (::DDS::Topic_ptr a_topic);
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
index 73a90e3e6c4..2b9721ed2e1 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.cpp
@@ -154,6 +154,16 @@ namespace CIAO
throw CORBA::NO_IMPLEMENT ();
}
+
+ ::DDS::ReturnCode_t
+ RTI_DomainParticipantFactory_i::set_default_participant_qos_with_profile (
+ const char* library_name,
+ const char *profile_name)
+ {
+ CIAO_TRACE ("RTI_DomainParticipantFactory_i::set_default_participant_qos_with_profile");
+
+ return DDSDomainParticipantFactory::get_instance ()->set_default_participant_qos_with_profile (library_name, profile_name);
+ }
}
}
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
index df7ab6008ad..064574b47b6 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantFactory.h
@@ -65,6 +65,11 @@ namespace CIAO
virtual
::DDS::ReturnCode_t get_qos (::DDS::DomainParticipantFactoryQos & qos);
+
+ virtual ::DDS::ReturnCode_t set_default_participant_qos_with_profile(
+ const char* library_name,
+ const char *profile_name);
+
};
}
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp b/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp
index 68946c64109..70e5256074f 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/Publisher.cpp
@@ -73,6 +73,45 @@ namespace CIAO
return retval._retn ();
}
+ ::DDS::DataWriter_ptr
+ RTI_Publisher_i::create_datawriter_with_profile (::DDS::Topic_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ 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_with_profile - "
+ "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 ();
+ DDSDataWriterListener *rti_drl = new RTI_DataWriterListener_i (a_listener);
+ DDSDataWriter *rti_dw = this->impl_->create_datawriter_with_profile (rti_topic,
+ library_name,
+ profile_name,
+ rti_drl,
+ mask);
+
+ if (!rti_dw)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Publisher_i::create_datawriter_with_profile - "
+ "Error: RTI Topic returned a nil datawriter.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ rti_dw->enable ();
+ ::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)
{
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h b/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h
index f1c4e3584a1..cfa5cba0efe 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/Publisher.h
@@ -44,6 +44,13 @@ namespace CIAO
::DDS::StatusMask mask);
virtual
+ ::DDS::DataWriter_ptr create_datawriter_with_profile (::DDS::Topic_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
+ virtual
::DDS::ReturnCode_t delete_datawriter (::DDS::DataWriter_ptr a_datawriter);
virtual
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp b/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp
index f86ae581bce..e14ac8a7fb2 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.cpp
@@ -97,6 +97,43 @@ namespace CIAO
return retval._retn ();
}
+ ::DDS::DataReader_ptr
+ RTI_Subscriber_i::create_datareader_with_profile (
+ ::DDS::TopicDescription_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask)
+ {
+ RTI_Topic_i * topic = dynamic_cast < RTI_Topic_i * > (a_topic);
+ if (!topic)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader_with_profile - "
+ "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_with_profile (rti_topic,
+ library_name,
+ profile_name,
+ rti_drl,
+ mask);
+ if (!rti_dr)
+ {
+ CIAO_ERROR ((LM_ERROR, CLINFO "RTI_Subscriber_i::create_datareader_with_profile - "
+ "Error: RTI Topic returned a nil datareader.\n"));
+ throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 0);
+ }
+
+ rti_dr->enable ();
+ ::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)
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h b/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h
index cf35349ed28..a239d0b5f91 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/Subscriber.h
@@ -57,6 +57,14 @@ namespace CIAO
::DDS::DataReaderListener_ptr a_listener,
::DDS::StatusMask mask);
+ virtual ::DDS::DataReader_ptr
+ create_datareader_with_profile (
+ ::DDS::TopicDescription_ptr a_topic,
+ const char* library_name,
+ const char *profile_name,
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusMask mask);
+
virtual ::DDS::ReturnCode_t
delete_datareader (
::DDS::DataReader_ptr a_datareader);