summaryrefslogtreecommitdiff
path: root/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp')
-rw-r--r--CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp31
1 files changed, 5 insertions, 26 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp
index a068e675c94..20a20abc9e4 100644
--- a/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/ndds/DataReaderHandler_T.cpp
@@ -8,10 +8,10 @@
template <typename DDS_TYPE, typename CCM_TYPE>
CIAO::DDS4CCM::RTI::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::DataReaderHandler_T (
- typename CCM_TYPE::listener_type::_ptr_type listener,
- typename DDS_TYPE::data_reader * reader)
- : reader_ (reader),
- listener_ (CCM_TYPE::listener_type::_duplicate (listener))
+ typename CIAO::DDS4CCM::RTI::DataReaderListener_T<DDS_TYPE, CCM_TYPE>* drl,
+ ::DDS::DataReader_ptr dr)
+ : drl_ (drl),
+ dr_ (::DDS::DataReader::_duplicate (dr))
{
}
@@ -26,28 +26,7 @@ CIAO::DDS4CCM::RTI::DataReaderHandler_T<DDS_TYPE, CCM_TYPE>::handle_exception (A
{
try
{
- // Loop until there are messages available in the queue
- for(;;)
- {
- typename DDS_TYPE::value_type instance;
- ::DDS_SampleInfo sampleinfo;
- ::DDS::ReturnCode_t const result = this->reader_->take_next_sample(instance,
- sampleinfo);
- if (result == DDS_RETCODE_NO_DATA)
- break;
- else if (result != DDS_RETCODE_OK)
- {
- CIAO_ERROR (1, (LM_ERROR, ACE_TEXT ("Unable to take data from data reader, error %d.\n"), result));
- return 1;
- }
- if (sampleinfo.valid_data)
- {
- CIAO_DEBUG (6, (LM_DEBUG, ACE_TEXT ("DataReaderHandler_T : found valid data\n")));
- ::CCM_DDS::ReadInfo readinfo;
- readinfo <<= sampleinfo;
- listener_->on_one_data (instance, readinfo);
- }
- }
+ drl_->on_data_available_i (dr_.in ());
}
catch (...)
{