OpenDDS::DCPS::BitPubListenerImpl Class Reference

#include <BitPubListenerImpl.h>

Inheritance diagram for OpenDDS::DCPS::BitPubListenerImpl:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::BitPubListenerImpl:
Collaboration graph
[legend]

List of all members.

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

DomainParticipantImplpartipant_

Detailed Description

Definition at line 28 of file BitPubListenerImpl.h.


Constructor & Destructor Documentation

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.

00031 {
00032 }


Member Function Documentation

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 }

Here is the call graph for this function:

void OpenDDS::DCPS::BitPubListenerImpl::on_liveliness_changed ( DDS::DataReader_ptr  reader,
const DDS::LivelinessChangedStatus status 
) [virtual]

Definition at line 104 of file BitPubListenerImpl.cpp.

00107 {
00108 }

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.

00095 {
00096 }

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.

00101 {
00102 }

void OpenDDS::DCPS::BitPubListenerImpl::on_sample_lost ( DDS::DataReader_ptr  reader,
const DDS::SampleLostStatus status 
) [virtual]

Definition at line 122 of file BitPubListenerImpl.cpp.

00125 {
00126 }

void OpenDDS::DCPS::BitPubListenerImpl::on_sample_rejected ( DDS::DataReader_ptr  reader,
const DDS::SampleRejectedStatus status 
) [virtual]

Definition at line 116 of file BitPubListenerImpl.cpp.

00119 {
00120 }

void OpenDDS::DCPS::BitPubListenerImpl::on_subscription_matched ( DDS::DataReader_ptr  reader,
const DDS::SubscriptionMatchedStatus status 
) [virtual]

Definition at line 110 of file BitPubListenerImpl.cpp.

00113 {
00114 }


Member Data Documentation

Definition at line 63 of file BitPubListenerImpl.h.

Referenced by on_data_available().


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