summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormsmit <msmit@remedy.nl>2010-01-05 09:35:10 +0000
committermsmit <msmit@remedy.nl>2010-01-05 09:35:10 +0000
commitcc8bffd715d8e3266d205d29338d775f429d24d1 (patch)
tree4f36c588613a3586d38e8c9c5909ec4e97744ec3
parent6819f29fc99e572b6e23a8a90b8f986a123917aa (diff)
downloadATCD-cc8bffd715d8e3266d205d29338d775f429d24d1.tar.gz
Tue Jan 5 09:37:56 UTC 2010 Marcel Smit <msmit@remedy.nl>
* connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp: * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp: * connectors/dds4ccm/impl/ndds/DDS_Update_T.h: * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp: * connectors/dds4ccm/impl/ndds/DDS_Write_T.h: * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp: Separate DDS lifecycle from CCM lifecycle. DDS_Update_T and DDS_Write_T now have a configuration_complete, activate, passivate and remove methods.
-rw-r--r--CIAO/ChangeLog12
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp18
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp14
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp94
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h8
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp97
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h12
7 files changed, 193 insertions, 62 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog
index 2416304064b..5a5e717a914 100644
--- a/CIAO/ChangeLog
+++ b/CIAO/ChangeLog
@@ -1,3 +1,15 @@
+Tue Jan 5 09:37:56 UTC 2010 Marcel Smit <msmit@remedy.nl>
+
+ * connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp:
+ * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp:
+ * connectors/dds4ccm/impl/ndds/DDS_Update_T.h:
+ * connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp:
+ * connectors/dds4ccm/impl/ndds/DDS_Write_T.h:
+ * connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp:
+ Separate DDS lifecycle from CCM lifecycle. DDS_Update_T and DDS_Write_T
+ now have a configuration_complete, activate, passivate and remove
+ methods.
+
Tue Jan 5 08:51:51 UTC 2010 Marcel Smit <msmit@remedy.nl>
* connectors/dds4ccm/impl/ndds/DDS_Get_T.cpp:
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 7aae160ac71..cbc17579777 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp
@@ -108,6 +108,12 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (void)
this->library_name_,
this->profile_name_);
+ this->supplier_.configuration_complete(
+ this->topic_.in (),
+ this->publisher_.in (),
+ this->library_name_,
+ this->profile_name_);
+
this->pull_consumer_.configuration_complete (
this->topic_.in (),
this->subscriber_.in (),
@@ -126,11 +132,7 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate (void)
this->context_->get_connection_push_consumer_data_listener (),
this->context_->get_connection_push_consumer_status ());
- this->supplier_.init (
- this->topic_.in (),
- this->publisher_.in (),
- this->library_name_,
- this->profile_name_);
+ this->supplier_.activate ();
this->pull_consumer_.activate (
this->context_->get_connection_pull_consumer_status ());
@@ -143,9 +145,8 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate (void)
CIAO_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate");
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate ();
-
this->push_consumer_.passivate ();
-
+ this->supplier_.passivate ();
this->pull_consumer_.passivate ();
}
@@ -156,8 +157,7 @@ DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove (void)
CIAO_TRACE ("DDS_Event_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove");
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove ();
-
this->push_consumer_.remove ();
-
+ this->supplier_.remove ();
this->pull_consumer_.remove ();
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp
index 37c1eb8de49..eb2bdb9ad12 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp
@@ -120,6 +120,12 @@ void
DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete (void)
{
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::configuration_complete ();
+ this->observable_.configuration_complete (
+ this->topic_.in (),
+ this->publisher_.in (),
+ this->library_name_,
+ this->profile_name_);
+
this->push_observer_.configuration_complete (
this->topic_.in (),
this->subscriber_.in (),
@@ -150,11 +156,7 @@ void
DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate (void)
{
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_activate ();
- this->observable_.init (
- this->topic_.in (),
- this->publisher_.in (),
- this->library_name_,
- this->profile_name_);
+ this->observable_.activate ();
this->push_observer_.activate (
this->context_->get_connection_push_observer_data_listener (),
@@ -176,6 +178,7 @@ void
DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate (void)
{
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_passivate ();
+ this->observable_.passivate ();
this->push_observer_.passivate ();
this->push_state_observer_.passivate ();
this->pull_observer_.passivate ();
@@ -187,6 +190,7 @@ void
DDS_State_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove (void)
{
DDS_TopicBase_Connector_T<DDS_TYPE, CCM_TYPE>::ccm_remove ();
+ this->observable_.remove ();
this->push_observer_.remove ();
this->push_state_observer_.remove ();
this->pull_observer_.remove ();
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp
index f59b05ddb0d..39c23983d9b 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.cpp
@@ -20,52 +20,104 @@ DDS_Update_T<DDS_TYPE, CCM_TYPE>::~DDS_Update_T (void)
template <typename DDS_TYPE, typename CCM_TYPE>
void
-DDS_Update_T<DDS_TYPE, CCM_TYPE>::init (
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::configuration_complete (
::DDS::Topic_ptr topic,
::DDS::Publisher_ptr publisher,
const char* library_name,
const char* profile_name)
{
+ CIAO_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
try
{
if (CORBA::is_nil (this->data_writer_.in ()))
{
- this->data_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T
- <DDS_TYPE, CCM_TYPE> ();
-
+ ::DDS::DataWriter_var dwv_tmp;
if (library_name && profile_name)
{
- ::DDS::DataWriter_var dwv_tmp = publisher->
- create_datawriter_with_profile (
+ dwv_tmp = publisher->create_datawriter_with_profile (
topic,
library_name,
profile_name,
- this->data_listener_.in (),
- ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
- DDSDataWriter *rw = dynamic_cast < DDSDataWriter *> (dwv_tmp.in ());
- this->rti_writer_.set_impl (rw);
- this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
- this->dds_update_.set_impl (dwv_tmp);
+ ::DDS::DataWriterListener::_nil (),
+ 0);
}
else
{
::DDS::DataWriterQos dwqos;
- ::DDS::DataWriter_var dwv_tmp = publisher->
- create_datawriter (
+ dwv_tmp = publisher->create_datawriter (
topic,
dwqos,
- this->data_listener_.in (),
- ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
- DDSDataWriter *rw = dynamic_cast < DDSDataWriter *> (dwv_tmp.in ());
- this->rti_writer_.set_impl (rw);
- this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
- this->dds_update_.set_impl (dwv_tmp);
+ ::DDS::DataWriterListener::_nil (),
+ 0);
}
+ ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *rw =
+ dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *> (dwv_tmp.in ());
+ this->rti_writer_.set_impl (rw->get_impl ());
+ this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+ this->dds_update_.set_impl (dwv_tmp);
+ }
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::configuration_complete: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::activate ()
+{
+ CIAO_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::activate");
+ try
+ {
+ if (CORBA::is_nil (this->data_listener_.in ()))
+ {
+ this->data_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T
+ <DDS_TYPE, CCM_TYPE> ();
}
+ this->rti_writer_.set_listener (
+ this->data_listener_.in (),
+ ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::activate: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::passivate ()
+{
+ CIAO_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::passivate");
+ try
+ {
+ this->rti_writer_.set_listener (
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::passivate: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Update_T<DDS_TYPE, CCM_TYPE>::remove ()
+{
+ CIAO_TRACE ("DDS_Update_T<DDS_TYPE, CCM_TYPE>::remove");
+ try
+ {
+ //this->rti_writer_.delete_contained_entities ();
+ this->rti_writer_.set_impl (0);
}
catch (...)
{
- CIAO_ERROR (1, (LM_ERROR, "Caught unknown C++ exception while configuring port info_in_\n"));
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Update_T::remove: Caught unknown c++ exception.\n"));
throw CORBA::INTERNAL ();
}
}
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h
index e8818b75a42..5d5e1f7153a 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Update_T.h
@@ -21,12 +21,18 @@ public:
::DDS::CCM_DataWriter_ptr get_dds_entity (void);
- void init (
+ void configuration_complete (
::DDS::Topic_ptr topic,
::DDS::Publisher_ptr publisher,
const char* library_name,
const char* profile_name);
+ void activate (void);
+
+ void passivate (void);
+
+ void remove (void);
+
private:
/**
* DDS_Update
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp
index e3951f97ebc..de5ee5e2581 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.cpp
@@ -20,57 +20,108 @@ DDS_Write_T<DDS_TYPE, CCM_TYPE>::~DDS_Write_T (void)
template <typename DDS_TYPE, typename CCM_TYPE>
void
-DDS_Write_T<DDS_TYPE, CCM_TYPE>::init (
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::configuration_complete (
::DDS::Topic_ptr topic,
::DDS::Publisher_ptr publisher,
const char* library_name,
const char* profile_name)
{
- CIAO_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::init");
+ CIAO_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::configuration_complete");
try
{
- if (CORBA::is_nil (this->writer_.in ()))
+ if (CORBA::is_nil (this->data_writer_.in ()))
{
- this->writer_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T
- <DDS_TYPE, CCM_TYPE> ();
-
+ ::DDS::DataWriter_var dwv_tmp;
if (library_name && profile_name)
{
- ::DDS::DataWriter_var dwv_tmp = publisher->
- create_datawriter_with_profile (
+ dwv_tmp = publisher->create_datawriter_with_profile (
topic,
library_name,
profile_name,
- this->writer_listener_.in (),
- ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
- DDSDataWriter *rw = dynamic_cast < DDSDataWriter *> (dwv_tmp.in ());
- this->rti_writer_.set_impl (rw);
- this->writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
- this->writer_t_.set_impl (dwv_tmp);
+ ::DDS::DataWriterListener::_nil (),
+ 0);
}
else
{
::DDS::DataWriterQos dwqos;
- ::DDS::DataWriter_var dwv_tmp = publisher->
- create_datawriter (
+ dwv_tmp = publisher->create_datawriter (
topic,
dwqos,
- this->writer_listener_.in (),
- ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
- DDSDataWriter *rw = dynamic_cast < DDSDataWriter *> (dwv_tmp.in ());
- this->rti_writer_.set_impl (rw);
- this->writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
- this->writer_t_.set_impl (dwv_tmp);
+ ::DDS::DataWriterListener::_nil (),
+ 0);
}
+ ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *rw =
+ dynamic_cast < ::CIAO::DDS4CCM::RTI::RTI_DataWriter_i *> (dwv_tmp.in ());
+ this->rti_writer_.set_impl (rw->get_impl ());
+ this->data_writer_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp);
+ this->writer_t_.set_impl (dwv_tmp);
}
}
catch (...)
{
- CIAO_ERROR (1, (LM_ERROR, "Caught unknown C++ exception while configuring port info_in_\n"));
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::configuration_complete: Caught unknown c++ exception.\n"));
throw CORBA::INTERNAL ();
}
}
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::activate ()
+{
+ CIAO_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::activate");
+ try
+ {
+ if (CORBA::is_nil (this->data_listener_.in ()))
+ {
+ this->data_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T
+ <DDS_TYPE, CCM_TYPE> ();
+ }
+ this->rti_writer_.set_listener (
+ this->data_listener_.in (),
+ ::CIAO::DDS4CCM::DataWriterListener_T<DDS_TYPE, CCM_TYPE>::get_mask ());
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::activate: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::passivate ()
+{
+ CIAO_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::passivate");
+ try
+ {
+ this->rti_writer_.set_listener (
+ ::DDS::DataWriterListener::_nil (),
+ 0);
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::passivate: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
+template <typename DDS_TYPE, typename CCM_TYPE>
+void
+DDS_Write_T<DDS_TYPE, CCM_TYPE>::remove ()
+{
+ CIAO_TRACE ("DDS_Write_T<DDS_TYPE, CCM_TYPE>::remove");
+ try
+ {
+ //this->rti_writer_.delete_contained_entities ();
+ this->rti_writer_.set_impl (0);
+ }
+ catch (...)
+ {
+ CIAO_ERROR (1, (LM_EMERGENCY, "DDS_Write_T::remove: Caught unknown c++ exception.\n"));
+ throw CORBA::INTERNAL ();
+ }
+}
+
template <typename DDS_TYPE, typename CCM_TYPE>
typename CCM_TYPE::writer_type::_ptr_type
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h
index d2c4abce0b7..18ca4ddf057 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Write_T.h
@@ -28,19 +28,25 @@ public:
::DDS::CCM_DataWriter_ptr get_dds_entity (void);
//@}
- void init (
+ void configuration_complete (
::DDS::Topic_ptr topic,
::DDS::Publisher_ptr publisher,
const char* library_name,
const char* profile_name);
+ void activate (void);
+
+ void passivate (void);
+
+ void remove (void);
+
private:
/**
* DDS_Write
*/
//@{
- ::DDS::CCM_DataWriter_var writer_;
- ::DDS::DataWriterListener_var writer_listener_;
+ ::DDS::CCM_DataWriter_var data_writer_;
+ ::DDS::DataWriterListener_var data_listener_;
::CIAO::DDS4CCM::RTI::Writer_T<DDS_TYPE, CCM_TYPE> writer_t_;
::CIAO::DDS4CCM::RTI::RTI_DataWriter_i rti_writer_;
//@}