OpenDDS::Federator::UpdateListener< DataType, ReaderType > Class Template Reference

#include <UpdateListener_T.h>

Inheritance diagram for OpenDDS::Federator::UpdateListener< DataType, ReaderType >:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::Federator::UpdateListener< DataType, ReaderType >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 UpdateListener (UpdateProcessor< DataType > &processor)
virtual ~UpdateListener ()
virtual void on_requested_deadline_missed (DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus &status)
virtual void on_requested_incompatible_qos (DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus &status)
virtual void on_liveliness_changed (DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus &status)
virtual void on_subscription_matched (DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus &status)
virtual void on_sample_rejected (DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus &status)
virtual void on_data_available (DDS::DataReader_ptr reader)
virtual void on_sample_lost (DDS::DataReader_ptr reader, const DDS::SampleLostStatus &status)
void federationId (const TAO_DDS_DCPSFederationId &id)
 Access our Federation Id value.
const TAO_DDS_DCPSFederationIdfederationId () const
void stop ()
void join ()

Private Attributes

TAO_DDS_DCPSFederationId federationId_
 Our Federation Id value.
UpdateReceiver< DataType > receiver_
 Manager object to delegate sample processing to.

Detailed Description

template<class DataType, class ReaderType>
class OpenDDS::Federator::UpdateListener< DataType, ReaderType >

Definition at line 26 of file UpdateListener_T.h.


Constructor & Destructor Documentation

template<class DataType, class ReaderType >
OpenDDS::Federator::UpdateListener< DataType, ReaderType >::UpdateListener ( UpdateProcessor< DataType > &  processor  )  [inline]

Definition at line 18 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00019   : federationId_(NIL_REPOSITORY),
00020     receiver_(processor)
00021 {
00022   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00023     ACE_DEBUG((LM_DEBUG,
00024                ACE_TEXT("(%P|%t) UpdateListener::UpdateListener\n")));
00025   }
00026 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
OpenDDS::Federator::UpdateListener< DataType, ReaderType >::~UpdateListener (  )  [inline, virtual]

Definition at line 29 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00030 {
00031   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00032     ACE_DEBUG((LM_DEBUG,
00033                ACE_TEXT("(%P|%t) UpdateListener::~UpdateListener\n")));
00034   }
00035 }

Here is the call graph for this function:


Member Function Documentation

template<class DataType , class ReaderType >
const TAO_DDS_DCPSFederationId & OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId (  )  const [inline]

Definition at line 46 of file UpdateListener_T.cpp.

References OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId_.

00047 {
00048   return this->federationId_;
00049 }

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId ( const TAO_DDS_DCPSFederationId id  )  [inline]

Access our Federation Id value.

Definition at line 39 of file UpdateListener_T.cpp.

References OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId_.

Referenced by OpenDDS::Federator::ManagerImpl::initialize().

00040 {
00041   this->federationId_ = id;
00042 }

Here is the caller graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::join (  )  [inline]

Definition at line 186 of file UpdateListener_T.cpp.

References OpenDDS::Federator::UpdateListener< DataType, ReaderType >::receiver_.

Referenced by OpenDDS::Federator::ManagerImpl::finalize().

00187 {
00188   this->receiver_.wait();
00189 }

Here is the caller graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_data_available ( DDS::DataReader_ptr  reader  )  [inline, virtual]

Definition at line 53 of file UpdateListener_T.cpp.

References OpenDDS::DCPS::LocalObject< DDS::DataReaderListener >::_narrow(), CORBA::Exception::_tao_print_exception(), ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId_, TAO_DDS_DCPSFederationId::id(), CORBA::is_nil(), LM_DEBUG, LM_ERROR, OpenDDS::DCPS::move(), TAO_DDS_DCPSFederationId::overridden(), OpenDDS::Federator::UpdateListener< DataType, ReaderType >::receiver_, DDS::RETCODE_NO_DATA, DDS::RETCODE_OK, and status.

00055 {
00056   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00057     ACE_DEBUG((LM_DEBUG,
00058                ACE_TEXT("(%P|%t) UpdateListener::on_data_available\n")));
00059   }
00060 
00061   try {
00062     // Get the type specific reader.
00063     typename ReaderType::_var_type dataReader = ReaderType::_narrow(reader);
00064 
00065     if (CORBA::is_nil(dataReader.in())) {
00066       ACE_ERROR((LM_ERROR,
00067                  ACE_TEXT("(%P|%t) UpdateListener::on_data_available - _narrow failed.\n")));
00068       return;
00069     }
00070 
00071     // Process all available data.
00072     while (true) {
00073       using namespace OpenDDS::DCPS;
00074       unique_ptr<DataType> sample(new DataType);
00075       unique_ptr<DDS::SampleInfo>  info(new DDS::SampleInfo);
00076       DDS::ReturnCode_t status = dataReader->read_next_sample(*sample, *info);
00077 
00078       if (status == DDS::RETCODE_OK) {
00079         // Check if we should process the sample.
00080         if (this->federationId_.overridden() &&
00081             this->federationId_.id() != sample->sender) {
00082 
00083           // Delegate processing to the federation manager.
00084           this->receiver_.add(move(sample), move(info));
00085         }
00086 
00087       } else if (status == DDS::RETCODE_NO_DATA) {
00088         break;
00089 
00090       } else {
00091         ACE_ERROR((LM_ERROR,
00092                    ACE_TEXT("(%P|%t) ERROR: UpdateListener::on_data_available: read status==%d\n"),
00093                    status));
00094         break;
00095       }
00096     }
00097 
00098   } catch (const CORBA::Exception& ex) {
00099     ex._tao_print_exception("(%P|%t) UpdateListener::read - ");
00100   }
00101 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_liveliness_changed ( DDS::DataReader_ptr  reader,
const DDS::LivelinessChangedStatus status 
) [inline, virtual]

Definition at line 131 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00134 {
00135   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00136     ACE_DEBUG((LM_DEBUG,
00137                ACE_TEXT("(%P|%t) UpdateListener::on_liveliness_changed\n")));
00138   }
00139 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_requested_deadline_missed ( DDS::DataReader_ptr  reader,
const DDS::RequestedDeadlineMissedStatus status 
) [inline, virtual]

Definition at line 105 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00108 {
00109   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00110     ACE_DEBUG((LM_DEBUG,
00111                ACE_TEXT("(%P|%t) ")
00112                ACE_TEXT("Federatorer::on_requested_deadline_missed\n")));
00113   }
00114 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_requested_incompatible_qos ( DDS::DataReader_ptr  reader,
const DDS::RequestedIncompatibleQosStatus status 
) [inline, virtual]

Definition at line 118 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00121 {
00122   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00123     ACE_DEBUG((LM_DEBUG,
00124                ACE_TEXT("(%P|%t) UpdateListener::")
00125                ACE_TEXT("on_requested_incompatible_qos\n")));
00126   }
00127 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_sample_lost ( DDS::DataReader_ptr  reader,
const DDS::SampleLostStatus status 
) [inline, virtual]

Definition at line 167 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00170 {
00171   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00172     ACE_DEBUG((LM_DEBUG,
00173                ACE_TEXT("(%P|%t) UpdateListener::on_sample_lost\n")));
00174   }
00175 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_sample_rejected ( DDS::DataReader_ptr  reader,
const DDS::SampleRejectedStatus status 
) [inline, virtual]

Definition at line 155 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00158 {
00159   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00160     ACE_DEBUG((LM_DEBUG,
00161                ACE_TEXT("(%P|%t) UpdateListener::on_sample_rejected\n")));
00162   }
00163 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_subscription_matched ( DDS::DataReader_ptr  reader,
const DDS::SubscriptionMatchedStatus status 
) [inline, virtual]

Definition at line 143 of file UpdateListener_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, and LM_DEBUG.

00146 {
00147   if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00148     ACE_DEBUG((LM_DEBUG,
00149                ACE_TEXT("(%P|%t) UpdateListener::on_subscription_matched\n")));
00150   }
00151 }

Here is the call graph for this function:

template<class DataType , class ReaderType >
void OpenDDS::Federator::UpdateListener< DataType, ReaderType >::stop ( void   )  [inline]

Definition at line 179 of file UpdateListener_T.cpp.

References OpenDDS::Federator::UpdateListener< DataType, ReaderType >::receiver_.

Referenced by OpenDDS::Federator::ManagerImpl::finalize().

00180 {
00181   this->receiver_.stop();
00182 }

Here is the caller graph for this function:


Member Data Documentation

template<class DataType, class ReaderType>
TAO_DDS_DCPSFederationId OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId_ [private]
template<class DataType, class ReaderType>
UpdateReceiver<DataType> OpenDDS::Federator::UpdateListener< DataType, ReaderType >::receiver_ [private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1