#include <UpdateListener_T.h>
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_DCPSFederationId & | federationId () 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. |
Definition at line 26 of file UpdateListener_T.h.
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
TAO_DDS_DCPSFederationId OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId_ [private] |
Our Federation Id value.
Definition at line 69 of file UpdateListener_T.h.
Referenced by OpenDDS::Federator::UpdateListener< DataType, ReaderType >::federationId(), and OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_data_available().
UpdateReceiver<DataType> OpenDDS::Federator::UpdateListener< DataType, ReaderType >::receiver_ [private] |
Manager object to delegate sample processing to.
Definition at line 72 of file UpdateListener_T.h.
Referenced by OpenDDS::Federator::UpdateListener< DataType, ReaderType >::join(), OpenDDS::Federator::UpdateListener< DataType, ReaderType >::on_data_available(), and OpenDDS::Federator::UpdateListener< DataType, ReaderType >::stop().