summaryrefslogtreecommitdiff
path: root/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp')
-rw-r--r--CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp57
1 files changed, 27 insertions, 30 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp
index df1a32cdf5c..3d3bf2119d1 100644
--- a/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp
+++ b/CIAO/connectors/dds4ccm/impl/DataReaderStateListener_T.cpp
@@ -11,12 +11,12 @@ template <typename DDS_TYPE, typename CCM_TYPE, DDS4CCM_Vendor VENDOR_TYPE>
CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::DataReaderStateListener_T (
typename CCM_TYPE::statelistener_type::_ptr_type listener,
::CCM_DDS::PortStatusListener_ptr port_status_listener,
- ::CCM_DDS::StateListenerControl_ptr control,
+ StateListenerControl_type& control,
ACE_Reactor* reactor,
- ConditionManager_type * condition_manager)
+ ConditionManager_type& condition_manager)
: PortStatusListener_T <DDS_TYPE, CCM_TYPE, VENDOR_TYPE> (port_status_listener, reactor) ,
listener_ (CCM_TYPE::statelistener_type::_duplicate (listener)),
- control_ (::CCM_DDS::StateListenerControl::_duplicate (control)),
+ control_ (control),
condition_manager_ (condition_manager)
{
DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::DataReaderStateListener_T");
@@ -35,27 +35,25 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da
::DDS::DataReader_ptr rdr)
{
DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available");
- if (::CORBA::is_nil (this->control_.in ()) ||
- this->control_->mode () == ::CCM_DDS::NOT_ENABLED ||
- ::CORBA::is_nil (rdr))
+ if (!::CORBA::is_nil (rdr) &&
+ this->control_.mode () != ::CCM_DDS::NOT_ENABLED)
{
- return;
- }
- if (this->reactor_)
- {
- DataReaderStateHandler_type* rh = 0;
- ACE_NEW (rh, DataReaderStateHandler_type (this, rdr));
- ACE_Event_Handler_var safe_handler (rh);
- if (this->reactor_->notify (rh) != 0)
+ if (this->reactor_)
{
- DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO
- ACE_TEXT ("DataReaderStateHandler_T::")
- ACE_TEXT ("failed to use reactor.\n")));
+ DataReaderStateHandler_type* rh = 0;
+ ACE_NEW (rh, DataReaderStateHandler_type (this, rdr));
+ ACE_Event_Handler_var safe_handler (rh);
+ if (this->reactor_->notify (rh) != 0)
+ {
+ DDS4CCM_ERROR (DDS4CCM_LOG_LEVEL_ERROR, (LM_ERROR, CLINFO
+ ACE_TEXT ("DataReaderStateHandler_T::")
+ ACE_TEXT ("failed to use reactor.\n")));
+ }
+ }
+ else
+ {
+ this->on_data_available_i (rdr);
}
- }
- else
- {
- this->on_data_available_i (rdr);
}
}
@@ -66,9 +64,8 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da
{
DDS4CCM_TRACE ("CIAO::DDS4CCM::DataReaderStateListener_T::on_data_available_i");
- if (::CORBA::is_nil (this->control_.in ()) ||
- this->control_->mode () == ::CCM_DDS::NOT_ENABLED ||
- ::CORBA::is_nil (rdr))
+ if (::CORBA::is_nil (rdr) ||
+ this->control_.mode () == ::CCM_DDS::NOT_ENABLED)
{
return;
}
@@ -91,17 +88,17 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da
::DDS_SampleInfoSeq sample_info;
::DDS_Long max_samples = 0;
- this->control_->mode () == ::CCM_DDS::ONE_BY_ONE
+ this->control_.mode () == ::CCM_DDS::ONE_BY_ONE
? max_samples = DDS_LENGTH_UNLIMITED
- : this->control_->max_delivered_data() == 0
+ : this->control_.max_delivered_data() == 0
? max_samples = DDS_LENGTH_UNLIMITED
- : max_samples = this->control_->max_delivered_data ();
+ : max_samples = this->control_.max_delivered_data ();
::DDS::ReturnCode_t const result = reader->take (
data,
sample_info,
max_samples,
- this->condition_manager_->get_querycondition_listener ());
+ this->condition_manager_.get_querycondition_listener ());
if (result == DDS_RETCODE_NO_DATA)
{
return;
@@ -112,7 +109,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da
ACE_TEXT ("Unable to take data from data reader, ")
ACE_TEXT ("error %d.\n"), result));
}
- if (this->control_->mode () == ::CCM_DDS::ONE_BY_ONE)
+ if (this->control_.mode () == ::CCM_DDS::ONE_BY_ONE)
{
for (::DDS_Long i = 0; i < data.length (); ++i)
{
@@ -143,7 +140,7 @@ CIAO::DDS4CCM::DataReaderStateListener_T<DDS_TYPE, CCM_TYPE, VENDOR_TYPE>::on_da
}
}
}
- else if (this->control_->mode () == ::CCM_DDS::MANY_BY_MANY)
+ else if (this->control_.mode () == ::CCM_DDS::MANY_BY_MANY)
{
typedef std::vector<DDS_Long> Updates;
Updates updates;