diff options
author | msmit <msmit@remedy.nl> | 2010-04-14 09:52:28 +0000 |
---|---|---|
committer | msmit <msmit@remedy.nl> | 2010-04-14 09:52:28 +0000 |
commit | 384ed3d2c88fb9d6031680046ccd071f748ff515 (patch) | |
tree | 204c805ea0154c15c9a81dfa3072ca643120cc8b | |
parent | 1ad21b83b9198a87de4dfe00cadc455c5dfdc209 (diff) | |
download | ATCD-384ed3d2c88fb9d6031680046ccd071f748ff515.tar.gz |
Wed Apr 14 09:49:12 UTC 2010 Marcel Smit <msmit@remedy.nl>
* connectors/dds4ccm/impl/dds/Getter_T.h:
* connectors/dds4ccm/impl/dds/Getter_T.cpp:
* connectors/dds4ccm/impl/dds/Reader_T.h:
* connectors/dds4ccm/impl/dds/Reader_T.cpp:
No narrow in the critical code path.
-rw-r--r-- | CIAO/ChangeLog | 8 | ||||
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp | 4 | ||||
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/dds/Getter_T.h | 2 | ||||
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp | 33 | ||||
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/dds/Reader_T.h | 1 |
5 files changed, 34 insertions, 14 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index bb1b436f702..89a0a013853 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,11 @@ +Wed Apr 14 09:49:12 UTC 2010 Marcel Smit <msmit@remedy.nl> + + * connectors/dds4ccm/impl/dds/Getter_T.h: + * connectors/dds4ccm/impl/dds/Getter_T.cpp: + * connectors/dds4ccm/impl/dds/Reader_T.h: + * connectors/dds4ccm/impl/dds/Reader_T.cpp: + No narrow in the critical code path. + Wed Apr 14 08:44:31 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl> * connectors/ami4ccm/tests/Exceptions/Receiver/ExceptionT_Receiver.mpc diff --git a/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp b/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp index 3debef97c3e..69508024614 100644 --- a/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/dds/Getter_T.cpp @@ -34,7 +34,7 @@ CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::impl (void) { if (this->reader_) { - return DDS_TYPE::data_reader::narrow (this->reader_->get_impl ()); + return this->reader_; } else { @@ -362,7 +362,7 @@ CIAO::DDS4CCM::DDS_CCM::Getter_Base_T<DDS_TYPE, CCM_TYPE>::set_impl ( } else { - this->reader_ = reader; + this->reader_ = DDS_TYPE::data_reader::narrow (reader->get_impl ());; this->create_conditions (); } } diff --git a/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h b/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h index dcea39a902b..e260f33c545 100644 --- a/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h +++ b/CIAO/connectors/dds4ccm/impl/dds/Getter_T.h @@ -84,7 +84,7 @@ namespace CIAO void set_queryparameters (const ::DDS_StringSeq & qp); protected: - CCM_DDS_DataReader_i * reader_; + typename DDS_TYPE::data_reader * reader_; DDSQueryCondition * condition_; ::DDS::Duration_t time_out_; ::CCM_DDS::DataNumber_t max_delivered_data_; diff --git a/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp b/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp index ecfc048b600..df0a22f3382 100644 --- a/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp +++ b/CIAO/connectors/dds4ccm/impl/dds/Reader_T.cpp @@ -14,6 +14,7 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::Reader_T (void) : reader_ (0), + impl_ (0), dds_get_ (0), library_name_ (""), profile_name_ ("") @@ -36,9 +37,9 @@ template <typename DDS_TYPE, typename CCM_TYPE, bool FIXED> typename DDS_TYPE::data_reader * CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::impl (void) { - if (this->reader_) + if (this->impl_) { - return DDS_TYPE::data_reader::narrow (this->reader_->get_impl ()); + return this->impl_; } else { @@ -411,7 +412,7 @@ CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::create_contentfilte throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1); } // Now, get the topic. - ::DDSTopicDescription * td = this->reader_->get_impl ()->get_topicdescription (); + ::DDSTopicDescription * td = this->impl ()->get_topicdescription (); if (!td) { DDS4CCM_ERROR (1, (LM_ERROR, CLINFO "CIAO::DDS4CCM::DDS_CCM::Reader_T::create_contentfilteredtopic - " @@ -512,19 +513,21 @@ CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::create_filter ( "Error: Unable to create a new DataReader.\n")); throw CCM_DDS::InternalError (::DDS::RETCODE_ERROR, 1); } - // Inform the Getter that there's a new DataReader created + // Remove the DataReader if (this->dds_get_) { + //Remove conditions in order to prevent a PRECONDITION_NOT_MET-error. this->dds_get_->remove_conditions (); - this->delete_datareader (sub); - // Now we need to set the new created DataReader in our proxy classes. - this->reader_->set_impl (dr); - this->dds_get_->set_impl (this->reader_); } - else + + this->delete_datareader (sub); + // Now we need to set the new created DataReader in our proxy classes. + this->reader_->set_impl (dr); + this->impl_ = DDS_TYPE::data_reader::narrow (this->reader_->get_impl ()); + + if (this->dds_get_) { - this->delete_datareader (sub); - this->reader_->set_impl (dr); + this->dds_get_->set_impl (this->reader_); } } @@ -679,4 +682,12 @@ CIAO::DDS4CCM::DDS_CCM::Reader_T<DDS_TYPE, CCM_TYPE, FIXED>::set_impl ( { DDS4CCM_TRACE ("CIAO::DDS4CCM::DDS_CCM::Reader_T::set_impl"); this->reader_ = reader; + if (reader) + { + this->impl_ = DDS_TYPE::data_reader::narrow (reader->get_impl ()); + } + else + { + this->impl_ = 0; + } } diff --git a/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h b/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h index 20c6f49ef47..255b4de41d1 100644 --- a/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h +++ b/CIAO/connectors/dds4ccm/impl/dds/Reader_T.h @@ -72,6 +72,7 @@ namespace CIAO private: CCM_DDS_DataReader_i *reader_; + typename DDS_TYPE::data_reader * impl_; Getter_T<DDS_TYPE, CCM_TYPE, FIXED> * dds_get_; |