From f4c9d3f8b78b9529e63cb505bc1dabb64c18cb42 Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Tue, 1 Dec 2009 09:43:35 +0000 Subject: Tue Dec 01 09:42:37 UTC 2009 Johnny Willemsen * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h * connectors/dds4ccm/impl/ndds/DataReaderListener.h * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h * 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/DDS_Event_Connector_T.h * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp * connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp * connectors/dds4ccm/impl/ndds/DomainParticipantListener.h * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp * connectors/dds4ccm/impl/ndds/PublisherListener_T.h * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h * connectors/dds4ccm/impl/ndds/TopicListener_T.cpp * connectors/dds4ccm/impl/ndds/TopicListener_T.h * connectors/dds4ccm/impl/ndds/Updater_T.cpp * connectors/dds4ccm/impl/ndds/Updater_T.h Implemented empty listeners for each dds entity and first part of DDS_State --- CIAO/ChangeLog | 32 +++- .../dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp | 25 +-- .../dds4ccm/impl/ndds/DDS_Base_Connector_T.h | 2 + .../dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp | 39 +++-- .../dds4ccm/impl/ndds/DDS_Event_Connector_T.h | 4 +- .../dds4ccm/impl/ndds/DDS_State_Connector_T.cpp | 183 ++++++++++++++++++++- .../dds4ccm/impl/ndds/DDS_State_Connector_T.h | 15 ++ .../impl/ndds/DDS_TopicBase_Connector_T.cpp | 5 +- .../dds4ccm/impl/ndds/DataReaderHandler_T.cpp | 5 +- .../dds4ccm/impl/ndds/DataReaderHandler_T.h | 14 +- .../dds4ccm/impl/ndds/DataReaderListener.h | 1 - .../dds4ccm/impl/ndds/DataReaderListener_T.cpp | 8 +- .../dds4ccm/impl/ndds/DataReaderListener_T.h | 7 +- .../impl/ndds/DomainParticipantListener.cpp | 40 +++++ .../dds4ccm/impl/ndds/DomainParticipantListener.h | 44 +++++ .../impl/ndds/DomainParticipantListener_T.cpp | 24 +++ .../impl/ndds/DomainParticipantListener_T.h | 39 +++++ .../dds4ccm/impl/ndds/PublisherListener_T.cpp | 24 +++ .../dds4ccm/impl/ndds/PublisherListener_T.h | 39 +++++ .../dds4ccm/impl/ndds/SubscriberListener_T.cpp | 24 +++ .../dds4ccm/impl/ndds/SubscriberListener_T.h | 39 +++++ .../dds4ccm/impl/ndds/TopicListener_T.cpp | 13 +- .../connectors/dds4ccm/impl/ndds/TopicListener_T.h | 5 +- CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp | 4 +- CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h | 4 +- 25 files changed, 576 insertions(+), 63 deletions(-) create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp create mode 100644 CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index df6ee51fda1..9441ad5b177 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,9 +1,37 @@ +Tue Dec 01 09:42:37 UTC 2009 Johnny Willemsen + + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h + * connectors/dds4ccm/impl/ndds/DataReaderListener.h + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp + * connectors/dds4ccm/impl/ndds/DataReaderListener_T.h + * 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/DDS_Event_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h + * connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener.h + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp + * connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h + * connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp + * connectors/dds4ccm/impl/ndds/PublisherListener_T.h + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp + * connectors/dds4ccm/impl/ndds/SubscriberListener_T.h + * connectors/dds4ccm/impl/ndds/TopicListener_T.cpp + * connectors/dds4ccm/impl/ndds/TopicListener_T.h + * connectors/dds4ccm/impl/ndds/Updater_T.cpp + * connectors/dds4ccm/impl/ndds/Updater_T.h + Implemented empty listeners for each dds entity and first + part of DDS_State + Tue Dec 01 08:33:37 UTC 2009 Marijke Hengstmengel * connectors/dds4ccm/tests/CSLDeadline/Receiver/CSL_DeadlineTest_Receiver.mpc Corrected mpc file for connector_stub - Mon Nov 30 13:00:37 UTC 2009 Marijke Hengstmengel * connectors/dds4ccm/tests/CSLDeadline/Connector/CSL_DeadlineTest_Connector_exec.cpp: @@ -12,7 +40,7 @@ Mon Nov 30 13:00:37 UTC 2009 Marijke Hengstmengel * connectors/dds4ccm/tests/CSLQoS/Connector/CSL_QoSTest_Connector_exec.cpp: * connectors/dds4ccm/tests/CSLQoS/Receiver/CSL_QoSTest_Receiver_exec.cpp: * connectors/dds4ccm/tests/CSLQoS/Sender/CSL_QoSTest_Sender_exec.cpp: - Corrected warnings for unused parameters + Corrected warnings for unused parameters Mon Nov 30 13:00:37 UTC 2009 Marijke Hengstmengel 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 7f6f11b8e20..adc1c5fde9e 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.cpp @@ -116,22 +116,27 @@ DDS_Base_Connector_T::configure_default_domain (void) } 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_factory_-> + set_default_participant_qos_with_profile ( + this->library_name_, + this->profile_name_); this->domain_participant_ = - this->domain_participant_factory_->create_participant_with_profile (this->domain_id_, - this->library_name_, - this->profile_name_, - 0, - DDS_STATUS_MASK_NONE); + this->domain_participant_factory_->create_participant_with_profile ( + this->domain_id_, + this->library_name_, + this->profile_name_, + 0, + DDS_STATUS_MASK_NONE); } else { ::DDS::DomainParticipantQos qos; this->domain_participant_ = - this->domain_participant_factory_->create_participant (this->domain_id_, - qos, - 0, - DDS_STATUS_MASK_NONE); + this->domain_participant_factory_->create_participant ( + this->domain_id_, + qos, + 0, + DDS_STATUS_MASK_NONE); } } catch (...) 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 6928dd24ff1..e4227bda683 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Base_Connector_T.h @@ -46,6 +46,8 @@ protected: ::DDS::DomainParticipant_var domain_participant_; typename CCM_TYPE::context_type::_var_type context_; + + ::CCM_DDS::ConnectorStatusListener_var error_listener_; }; #include "dds4ccm/impl/ndds/DDS_Base_Connector_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 66bf58a0ce3..011ca5c71ae 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.cpp @@ -4,9 +4,10 @@ #include "dds4ccm/impl/ndds/DataReaderListener_T.h" #include "dds4ccm/impl/ndds/DataWriterListener_T.h" #include "dds4ccm/impl/ndds/Writer_T.h" -#include "dds4ccm/impl/ndds/Updater_T.h" #include "dds4ccm/impl/ndds/Getter_T.h" #include "dds4ccm/impl/ndds/Reader_T.h" +#include "dds4ccm/impl/ndds/PublisherListener_T.h" +#include "dds4ccm/impl/ndds/SubscriberListener_T.h" #include "dds4ccm/impl/ndds/DataListenerControl.h" #include "ciao/Logger/Log_Macros.h" @@ -34,27 +35,33 @@ DDS_Event_Connector_T::configure_port_dds_write (void) { if (CORBA::is_nil (this->supplier_publisher_.in ())) { + this->publisher_listener_ = new ::CIAO::DDS4CCM::RTI::PublisherListener_T + ( + this->context_->get_connection_error_listener ()); + 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); + this->publisher_listener_.in (), + DDS_STATUS_MASK_NONE); } else { ::DDS::PublisherQos pqos; - this->supplier_publisher_ = this->domain_participant_->create_publisher (pqos, - 0, - 0); + this->supplier_publisher_ = this->domain_participant_-> + create_publisher ( + pqos, + this->publisher_listener_.in (), + DDS_STATUS_MASK_NONE); } } if (CORBA::is_nil (this->supplier_writer_.in ())) { - this->supplier_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T + this->datawriter_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T ( this->context_, this->listen_datalistener_mode_, @@ -67,7 +74,7 @@ DDS_Event_Connector_T::configure_port_dds_write (void) this->topic_.in (), this->library_name_, this->profile_name_, - this->supplier_listener_.in (), + this->datawriter_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); } @@ -78,7 +85,7 @@ DDS_Event_Connector_T::configure_port_dds_write (void) create_datawriter ( this->topic_.in (), dwqos, - this->supplier_listener_.in (), + this->datawriter_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); } @@ -101,22 +108,26 @@ DDS_Event_Connector_T::configure_port_dds_listen (void) { if (CORBA::is_nil (this->listen_subscriber_.in ())) { + this->subscriber_listener_ = new ::CIAO::DDS4CCM::RTI::SubscriberListener_T + ( + this->context_->get_connection_error_listener ()); + 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); + this->subscriber_listener_.in (), + DDS_STATUS_MASK_NONE); } else { ::DDS::SubscriberQos sqos; this->listen_subscriber_ = this->domain_participant_-> create_subscriber (sqos, - 0, - 0); + this->subscriber_listener_.in (), + DDS_STATUS_MASK_NONE); } } @@ -125,6 +136,8 @@ DDS_Event_Connector_T::configure_port_dds_listen (void) this->__listen_datareaderlistener = new ::CIAO::DDS4CCM::RTI::DataReaderListener_T ( this->context_, + this->context_->get_connection_push_consumer_data_listener (), + this->context_->get_connection_pull_consumer_status (), this->listen_datalistener_mode_, this->listen_datalistener_max_delivered_data_); } diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h index cbf1f7acb80..f6fb93f1b2e 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_Event_Connector_T.h @@ -63,7 +63,7 @@ private: void configure_port_dds_write (void); ::DDS::Publisher_var supplier_publisher_; ::DDS::CCM_DataWriter_var supplier_writer_; - ::DDS::DataWriterListener_var supplier_listener_; + ::DDS::DataWriterListener_var datawriter_listener_; // @from DDS_Listen void configure_port_dds_listen (void); @@ -72,6 +72,8 @@ private: ::DDS::Subscriber_var listen_subscriber_; ::DDS::DataReader_var push_consumer_data_; ::DDS::DataReaderListener_var __listen_datareaderlistener; + ::DDS::SubscriberListener_var subscriber_listener_; + ::DDS::PublisherListener_var publisher_listener_; // @from DDS_Getter ::DDS::DataReader_var pull_consumer_fresh_data_; 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 b833c64b4d4..86cfaca2845 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.cpp @@ -3,9 +3,7 @@ #include "dds4ccm/impl/ndds/DataReaderListener_T.h" #include "dds4ccm/impl/ndds/DataWriterListener_T.h" -#include "dds4ccm/impl/ndds/Writer_T.h" #include "dds4ccm/impl/ndds/Updater_T.h" -#include "dds4ccm/impl/ndds/Getter_T.h" #include "dds4ccm/impl/ndds/Reader_T.h" #include "dds4ccm/impl/ndds/DataListenerControl.h" @@ -13,7 +11,9 @@ template DDS_State_Connector_T::DDS_State_Connector_T (void) : - DDS_TopicBase_Connector_T() + DDS_TopicBase_Connector_T(), + listen_datalistener_mode_ ( ::CCM_DDS::NOT_ENABLED), + listen_datalistener_max_delivered_data_ (0) { } @@ -26,14 +26,15 @@ template typename CCM_TYPE::updater_type::_ptr_type DDS_State_Connector_T::get_observable_data (void) { - return 0; + return new CIAO::DDS4CCM::RTI::Updater_T + (this->observable_data_.in ()); } template ::DDS::CCM_DataWriter_ptr DDS_State_Connector_T::get_observable_dds_entity (void) { - return 0; + return this->observable_data_.in (); } template @@ -75,21 +76,24 @@ template typename CCM_TYPE::reader_type::_ptr_type DDS_State_Connector_T::get_push_observer_data (void) { - return 0; + return new CIAO::DDS4CCM::RTI::Reader_T ( + this->push_consumer_data_.in ()); } template ::CCM_DDS::CCM_DataListenerControl_ptr DDS_State_Connector_T::get_push_observer_data_control (void) { - return 0; + return new CCM_DDS_DataListenerControl_i ( + this->listen_datalistener_mode_, + this->listen_datalistener_max_delivered_data_); } template ::DDS::CCM_DataReader_ptr DDS_State_Connector_T::get_push_observer_dds_entity (void) { - return 0; + return ::DDS::CCM_DataReader::_nil (); } template @@ -140,3 +144,166 @@ DDS_State_Connector_T::ccm_remove (void) { DDS_Base_Connector_T::ccm_remove (); } + +template +void +DDS_State_Connector_T::configure_port_dds_update (void) +{ + this->configure_default_topic (); + + try + { + if (CORBA::is_nil (this->supplier_publisher_.in ())) + { + 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->observable_data_.in ())) + { + this->supplier_listener_ = new ::CIAO::DDS4CCM::DataWriterListener_T + ( + this->context_, + this->listen_datalistener_mode_, + this->listen_datalistener_max_delivered_data_); + + 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->observable_data_ = ::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->observable_data_ = ::DDS::CCM_DataWriter::_narrow (dwv_tmp); + } + } + } + catch (...) + { + CIAO_ERROR ((LM_ERROR, "Caught unknown C++ exception while configuring port info_in_\n")); + throw CORBA::INTERNAL (); + } +} + +template +void +DDS_State_Connector_T::configure_port_dds_listen (void) +{ + this->configure_default_topic (); + + try + { + if (CORBA::is_nil (this->listen_subscriber_.in ())) + { + 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 ())) + { + this->__listen_datareaderlistener = new ::CIAO::DDS4CCM::RTI::DataReaderListener_T + ( + this->context_, + this->context_->get_connection_push_observer_data_listener (), + this->context_->get_connection_pull_observer_status (), + this->listen_datalistener_mode_, + this->listen_datalistener_max_delivered_data_); + } + + if (CORBA::is_nil (this->push_consumer_data_.in ())) + { + 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 ())) + { + 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); + } + + } + } + catch (...) + { + CIAO_ERROR ((LM_EMERGENCY, "Caught unknown c++ exception while creating subscriber entities\n")); + throw CORBA::INTERNAL (); + } +} diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h index 5515ecf9e5c..639dfe9fb7f 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_State_Connector_T.h @@ -64,6 +64,21 @@ public: virtual void ccm_remove (void); private: + void configure_port_dds_update (void); + ::DDS::Publisher_var supplier_publisher_; + ::DDS::CCM_DataWriter_var observable_data_; + ::DDS::DataWriterListener_var supplier_listener_; + + // @from DDS_Listen + void configure_port_dds_listen (void); + ACE_Atomic_Op listen_datalistener_mode_; + ACE_Atomic_Op listen_datalistener_max_delivered_data_; + ::DDS::Subscriber_var listen_subscriber_; + ::DDS::DataReader_var push_consumer_data_; + ::DDS::DataReaderListener_var __listen_datareaderlistener; + + // @from DDS_Getter + ::DDS::DataReader_var pull_consumer_fresh_data_; }; #include "dds4ccm/impl/ndds/DDS_State_Connector_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp index fc49d85fcdb..7ee5f441b2d 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DDS_TopicBase_Connector_T.cpp @@ -103,14 +103,15 @@ DDS_TopicBase_Connector_T::configure_default_topic (void) try { CIAO::DDS4CCM::RTI::RTI_DomainParticipant_i *part = - dynamic_cast< CIAO::DDS4CCM::RTI::RTI_DomainParticipant_i * > (this->domain_participant_.in ()); + dynamic_cast< CIAO::DDS4CCM::RTI::RTI_DomainParticipant_i * > ( + this->domain_participant_.in ()); DDS_ReturnCode_t const retcode = DDS_TYPE::type_support::register_type( part->get_participant (), DDS_TYPE::type_support::get_type_name ()); if (retcode == DDS_RETCODE_OK) { this->topiclistener_ = new ::CIAO::DDS4CCM::TopicListener_T ( - this->context_); + this->context_->get_connection_error_listener ()); if (this->library_name_ && this->profile_name_) { diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp index 4113439e30d..ac65898a3ae 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp @@ -8,12 +8,11 @@ template CIAO::DDS4CCM::RTI::DataReaderHandler_T::DataReaderHandler_T ( - typename CCM_TYPE::context_type::_ptr_type context, + typename CCM_TYPE::listener_type::_ptr_type listener, typename DDS_TYPE::data_reader * reader) - : context_ (CCM_TYPE::context_type::_duplicate (context)), + : listener_ (CCM_TYPE::listener_type::_duplicate (listener)), reader_ (reader) { - listener_ = CCM_TYPE::listener_type::_duplicate (this->context_->get_connection_push_consumer_data_listener ()); } template diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h index 03eeab3a2c5..d4cfb988e54 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.h @@ -4,10 +4,13 @@ * * $Id$ * - * Eventhandler on orb thread, handling the + * Eventhandler on orb thread, handling the * received data from DDS. */ +#ifndef CIAO_RTI_DATAREADERHANDLER_T_H +#define CIAO_RTI_DATAREADERHANDLER_T_H + #include "dds4ccm/idl/dds_rtf2_dcpsC.h" #include "ace/Reactor.h" @@ -18,18 +21,17 @@ namespace CIAO namespace RTI { template - class DataReaderHandler_T : + class DataReaderHandler_T : public ACE_Event_Handler { public: DataReaderHandler_T ( - typename CCM_TYPE::context_type::_ptr_type context, + typename CCM_TYPE::listener_type::_ptr_type listener, typename DDS_TYPE::data_reader * reader); - ~DataReaderHandler_T (); + virtual ~DataReaderHandler_T (); virtual int handle_exception (ACE_HANDLE fc = ACE_INVALID_HANDLE); private: - typename CCM_TYPE::context_type::_var_type context_; typename DDS_TYPE::data_reader * reader_; typename CCM_TYPE::listener_type::_var_type listener_; }; @@ -38,3 +40,5 @@ namespace CIAO } #include "dds4ccm/impl/ndds/DataReaderHandler_T.cpp" + +#endif diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h index adf47e57b4e..373cd469f7a 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener.h @@ -1,5 +1,4 @@ /** - * @author William R. Otte * @author Johnny Willemsen * * $Id$ diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp index 31f55247eb5..177a8c0347d 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.cpp @@ -10,14 +10,18 @@ template CIAO::DDS4CCM::RTI::DataReaderListener_T::DataReaderListener_T ( typename CCM_TYPE::context_type::_ptr_type context, + typename CCM_TYPE::listener_type::_ptr_type listener, + ::CCM_DDS::PortStatusListener_ptr port_status_listener, ACE_Atomic_Op &mode, ACE_Atomic_Op &max_delivered_data) : context_ (CCM_TYPE::context_type::_duplicate (context)), + listener_ (CCM_TYPE::listener_type::_duplicate (listener)), mode_ (mode), max_delivered_data_ (max_delivered_data) { CIAO_TRACE ("CIAO::DDS4CCM::RTI::DataReaderListener_T::DataReaderListener_T"); - this->info_out_portstatus_ = this->context_->get_connection_pull_consumer_status (); + this->info_out_portstatus_ = + ::CCM_DDS::PortStatusListener::_duplicate (port_status_listener); this->info_out_connector_status_ = this->context_->get_connection_error_listener (); } @@ -56,7 +60,7 @@ CIAO::DDS4CCM::RTI::DataReaderListener_T::on_data_available( return; } ::CIAO::DDS4CCM::RTI::DataReaderHandler_T* rh = - new ::CIAO::DDS4CCM::RTI::DataReaderHandler_T(this->context_, reader); + new ::CIAO::DDS4CCM::RTI::DataReaderHandler_T(this->listener_.in (), reader); this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->notify (rh); } diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h index 50ea2bccbde..05b3f81529b 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderListener_T.h @@ -25,6 +25,8 @@ namespace CIAO /// Constructor DataReaderListener_T ( typename CCM_TYPE::context_type::_ptr_type context, + typename CCM_TYPE::listener_type::_ptr_type listener, + CCM_DDS::PortStatusListener_ptr port_status_listener, ACE_Atomic_Op &mode, ACE_Atomic_Op &max_delivered_data); @@ -45,8 +47,9 @@ namespace CIAO private: typename CCM_TYPE::context_type::_var_type context_; - CCM_DDS::ConnectorStatusListener_var info_out_connector_status_; - CCM_DDS::PortStatusListener_var info_out_portstatus_; + ::CCM_DDS::ConnectorStatusListener_var info_out_connector_status_; + ::CCM_DDS::PortStatusListener_var info_out_portstatus_; + typename CCM_TYPE::listener_type::_var_type listener_; ACE_Atomic_Op &mode_; ACE_Atomic_Op &max_delivered_data_; }; diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp new file mode 100644 index 00000000000..37a4c33fc7d --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.cpp @@ -0,0 +1,40 @@ +// $Id$ + +#include "DomainParticipantListener.h" +#include "DomainParticipant.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 + { + RTI_DomainParticipantListener_i::RTI_DomainParticipantListener_i ( + ::DDS::DomainParticipantListener_ptr p) + : impl_ (::DDS::DomainParticipantListener::_duplicate (p)) + { + } + + RTI_DomainParticipantListener_i::~RTI_DomainParticipantListener_i (void) + { + } + + ::DDS::DomainParticipantListener_ptr + RTI_DomainParticipantListener_i::get_domainparticipantlistener (void) + { + return ::DDS::DomainParticipantListener::_duplicate (this->impl_.in ()); + } + } + } +} + diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h new file mode 100644 index 00000000000..844390b322d --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener.h @@ -0,0 +1,44 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#ifndef CIAO_RTI_DOMAINPARTICIPANTLISTENER_H +#define CIAO_RTI_DOMAINPARTICIPANTLISTENER_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_DomainParticipantListener_i : + public virtual ::DDSDomainParticipantListener + { + public: + // Constructor + RTI_DomainParticipantListener_i (::DDS::DomainParticipantListener_ptr p); + + // Destructor + virtual ~RTI_DomainParticipantListener_i (void); + + ::DDS::DomainParticipantListener_ptr get_datareaderlistener (void); + private: + ::DDS::DomainParticipantListener_var impl_; + }; + } + } +} + +#endif diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp new file mode 100644 index 00000000000..57dc2ad4697 --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.cpp @@ -0,0 +1,24 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::DomainParticipantListener_T::DomainParticipantListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DomainParticipantListener_T::DomainParticipantListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::DomainParticipantListener_T::~DomainParticipantListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::DomainParticipantListener_T::~DomainParticipantListener_T"); +} + diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h new file mode 100644 index 00000000000..e9c3a0bc03f --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/DomainParticipantListener_T.h @@ -0,0 +1,39 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class DomainParticipantListener_T : + public ::DDS::DomainParticipantListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + DomainParticipantListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~DomainParticipantListener_T (void); + + private: + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/DomainParticipantListener_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp new file mode 100644 index 00000000000..5b80a0613ee --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.cpp @@ -0,0 +1,24 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::PublisherListener_T::PublisherListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PublisherListener_T::PublisherListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::PublisherListener_T::~PublisherListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::PublisherListener_T::~PublisherListener_T"); +} + diff --git a/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h new file mode 100644 index 00000000000..8e8e4bc9ab7 --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/PublisherListener_T.h @@ -0,0 +1,39 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class PublisherListener_T : + public ::DDS::PublisherListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + PublisherListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~PublisherListener_T (void); + + private: + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/PublisherListener_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp new file mode 100644 index 00000000000..2113e63cd3e --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.cpp @@ -0,0 +1,24 @@ +// $Id$ +#include "dds4ccm/impl/ndds/Utils.h" + +#include "dds4ccm/impl/ndds/DataReader.h" +#include "ciao/Logger/Log_Macros.h" +#include "dds4ccm/impl/ndds/DataReaderHandler_T.h" +#include "tao/ORB_Core.h" + +// Implementation skeleton constructor +template +CIAO::DDS4CCM::RTI::SubscriberListener_T::SubscriberListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) + : error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::SubscriberListener_T::SubscriberListener_T"); +} + +// Implementation skeleton destructor +template +CIAO::DDS4CCM::RTI::SubscriberListener_T::~SubscriberListener_T (void) +{ + CIAO_TRACE ("CIAO::DDS4CCM::RTI::SubscriberListener_T::~SubscriberListener_T"); +} + diff --git a/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h new file mode 100644 index 00000000000..96c02bf79a3 --- /dev/null +++ b/CIAO/connectors/dds4ccm/impl/ndds/SubscriberListener_T.h @@ -0,0 +1,39 @@ +/** + * @author William R. Otte + * @author Johnny Willemsen + * + * $Id$ + * + * Wrapper facade for NDDS. + */ + +#include "dds4ccm/idl/dds_rtf2_dcpsC.h" +#include "ace/Copy_Disabled.h" + +namespace CIAO +{ + namespace DDS4CCM + { + namespace RTI + { + template + class SubscriberListener_T : + public ::DDS::SubscriberListener, + private ACE_Copy_Disabled + { + public: + /// Constructor + SubscriberListener_T ( + ::CCM_DDS::ConnectorStatusListener_ptr error_listener); + + /// Destructor + virtual ~SubscriberListener_T (void); + + private: + ::CCM_DDS::ConnectorStatusListener_var error_listener_; + }; + } + } +} + +#include "dds4ccm/impl/ndds/SubscriberListener_T.cpp" diff --git a/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp index e6b4fe24803..8e84768bffd 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.cpp @@ -6,9 +6,8 @@ template CIAO::DDS4CCM::TopicListener_T::TopicListener_T ( - typename CCM_TYPE::context_type::_ptr_type context) - : context_ (CCM_TYPE::context_type::_duplicate (context)), - info_out_connector_status_ (CCM_DDS::ConnectorStatusListener::_duplicate (context->get_connection_error_listener ())) + ::CCM_DDS::ConnectorStatusListener_ptr error_listener) : + error_listener_ (::CCM_DDS::ConnectorStatusListener::_duplicate (error_listener)) { CIAO_TRACE ("CIAO::DDS4CCM::TopicListener_T::TopicListener_T"); } @@ -22,12 +21,12 @@ CIAO::DDS4CCM::TopicListener_T::~TopicListener_T (void) template void CIAO::DDS4CCM::TopicListener_T::on_inconsistent_topic ( - ::DDS::Topic_ptr the_topic, - const ::DDS::InconsistentTopicStatus & status) + ::DDS::Topic_ptr the_topic, + const ::DDS::InconsistentTopicStatus & status) { - if (!CORBA::is_nil (this->info_out_connector_status_)) + if (!CORBA::is_nil (this->error_listener_.in ())) { - this->info_out_connector_status_->on_inconsistent_topic (the_topic, status); + this->error_listener_->on_inconsistent_topic (the_topic, status); } } diff --git a/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h index ba9ecbd54e2..88b83b3fd0f 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/TopicListener_T.h @@ -20,7 +20,7 @@ namespace CIAO { public: /// Constructor - TopicListener_T (typename CCM_TYPE::context_type::_ptr_type context); + TopicListener_T (::CCM_DDS::ConnectorStatusListener_ptr error_listener); /// Destructor virtual ~TopicListener_T (void); @@ -30,8 +30,7 @@ namespace CIAO const ::DDS::InconsistentTopicStatus & status); private: - typename CCM_TYPE::context_type::_var_type context_; - CCM_DDS::ConnectorStatusListener_var info_out_connector_status_; + CCM_DDS::ConnectorStatusListener_var error_listener_; }; } } diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp index d21ebeeede3..daea040ca27 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.cpp @@ -22,7 +22,7 @@ CIAO::DDS4CCM::RTI::Updater_T::~Updater_T (void) template bool -CIAO::DDS4CCM::RTI::Updater_T::is_global_scope () const +CIAO::DDS4CCM::RTI::Updater_T::is_global_scope () { CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::is_global_scope"); return this->is_global_scope_; @@ -30,7 +30,7 @@ CIAO::DDS4CCM::RTI::Updater_T::is_global_scope () const template bool -CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write () const +CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write () { CIAO_TRACE ("CIAO::DDS4CCM::RTI::Updater_T::is_coherent_write"); return this->is_coherent_write_; diff --git a/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h b/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h index 2a793996251..e65f4a37937 100644 --- a/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h +++ b/CIAO/connectors/dds4ccm/impl/ndds/Updater_T.h @@ -47,9 +47,9 @@ namespace CIAO virtual void delete_many ( const typename CCM_TYPE::seq_type& data); - virtual bool is_global_scope () const; + virtual bool is_global_scope (); - virtual bool is_coherent_write () const; + virtual bool is_coherent_write (); virtual void is_coherent_write (bool value_); -- cgit v1.2.1