#include <BitPubListenerImpl.h>
Public Member Functions | |
BitPubListenerImpl (DomainParticipantImpl *partipant) | |
virtual | ~BitPubListenerImpl () |
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) |
Private Attributes | |
DomainParticipantImpl * | partipant_ |
Definition at line 28 of file BitPubListenerImpl.h.
OpenDDS::DCPS::BitPubListenerImpl::BitPubListenerImpl | ( | DomainParticipantImpl * | partipant | ) |
Definition at line 25 of file BitPubListenerImpl.cpp.
00026 : partipant_ (partipant) 00027 { 00028 }
OpenDDS::DCPS::BitPubListenerImpl::~BitPubListenerImpl | ( | ) | [virtual] |
Definition at line 30 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_data_available | ( | DDS::DataReader_ptr | reader | ) | [virtual] |
Definition at line 34 of file BitPubListenerImpl.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_TEXT(), OpenDDS::DCPS::BUILT_IN_PUBLICATION_TOPIC, OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::DomainParticipantImpl::get_domain_id(), DDS::SampleInfo::instance_state, CORBA::is_nil(), LM_DEBUG, LM_ERROR, DDS::NOT_ALIVE_DISPOSED_INSTANCE_STATE, DDS::NOT_ALIVE_NO_WRITERS_INSTANCE_STATE, OPENDDS_STRING, partipant_, DDS::RETCODE_NO_DATA, DDS::RETCODE_OK, status, TheServiceParticipant, OpenDDS::DCPS::DomainParticipantImpl::update_ownership_strength(), and DDS::SampleInfo::valid_data.
00035 { 00036 try { 00037 ::DDS::PublicationBuiltinTopicDataDataReader_var bit_dr = 00038 ::DDS::PublicationBuiltinTopicDataDataReader::_narrow(reader); 00039 00040 if (CORBA::is_nil(bit_dr.in())) { 00041 ACE_ERROR((LM_ERROR, 00042 ACE_TEXT("(%P|%t) ERROR: BitPubListenerImpl::on_data_available ") 00043 ACE_TEXT("_narrow failed!\n"))); 00044 return; 00045 } 00046 00047 ::DDS::PublicationBuiltinTopicData data; 00048 DDS::SampleInfo si; 00049 DDS::ReturnCode_t status; 00050 00051 do { 00052 status = bit_dr->take_next_sample(data, si); 00053 00054 if (status == DDS::RETCODE_OK) { 00055 if (si.valid_data) { 00056 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 00057 Discovery_rch disc = 00058 TheServiceParticipant->get_discovery(partipant_->get_domain_id()); 00059 PublicationId pub_id = 00060 disc->bit_key_to_repo_id(partipant_, BUILT_IN_PUBLICATION_TOPIC, data.key); 00061 CORBA::Long const ownership_strength = data.ownership_strength.value; 00062 this->partipant_->update_ownership_strength(pub_id, ownership_strength); 00063 if (DCPS_debug_level > 4) { 00064 GuidConverter writer_converter(pub_id); 00065 ACE_DEBUG((LM_DEBUG, 00066 ACE_TEXT("(%P|%t) BitPubListenerImpl::on_data_available: %X ") 00067 ACE_TEXT("reset ownership strength %d for writer %C.\n"), 00068 this, ownership_strength, OPENDDS_STRING(writer_converter).c_str())); 00069 } 00070 #endif 00071 } 00072 else if (si.instance_state != DDS::NOT_ALIVE_DISPOSED_INSTANCE_STATE 00073 && si.instance_state != DDS::NOT_ALIVE_NO_WRITERS_INSTANCE_STATE) { 00074 ACE_ERROR((LM_ERROR, 00075 ACE_TEXT("(%P|%t) ERROR: BitPubListenerImpl::on_data_available:") 00076 ACE_TEXT(" unknown instance state: %d\n"), 00077 si.instance_state)); 00078 } 00079 } else if (status != DDS::RETCODE_NO_DATA) { 00080 ACE_ERROR((LM_ERROR, 00081 ACE_TEXT("(%P|%t) ERROR: BitPubListenerImpl::on_data_available:") 00082 ACE_TEXT(" unexpected status: %d\n"), 00083 status)); 00084 } 00085 } while (status == DDS::RETCODE_OK); 00086 00087 } catch (const CORBA::Exception& e) { 00088 e._tao_print_exception("Exception caught in BitPubListenerImpl::on_data_available():"); 00089 } 00090 }
void OpenDDS::DCPS::BitPubListenerImpl::on_liveliness_changed | ( | DDS::DataReader_ptr | reader, | |
const DDS::LivelinessChangedStatus & | status | |||
) | [virtual] |
Definition at line 104 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_requested_deadline_missed | ( | DDS::DataReader_ptr | reader, | |
const DDS::RequestedDeadlineMissedStatus & | status | |||
) | [virtual] |
Definition at line 92 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_requested_incompatible_qos | ( | DDS::DataReader_ptr | reader, | |
const DDS::RequestedIncompatibleQosStatus & | status | |||
) | [virtual] |
Definition at line 98 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_sample_lost | ( | DDS::DataReader_ptr | reader, | |
const DDS::SampleLostStatus & | status | |||
) | [virtual] |
Definition at line 122 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_sample_rejected | ( | DDS::DataReader_ptr | reader, | |
const DDS::SampleRejectedStatus & | status | |||
) | [virtual] |
Definition at line 116 of file BitPubListenerImpl.cpp.
void OpenDDS::DCPS::BitPubListenerImpl::on_subscription_matched | ( | DDS::DataReader_ptr | reader, | |
const DDS::SubscriptionMatchedStatus & | status | |||
) | [virtual] |
Definition at line 110 of file BitPubListenerImpl.cpp.
Definition at line 63 of file BitPubListenerImpl.h.
Referenced by on_data_available().