#include <DWMonitorImpl.h>
Public Member Functions | |
DWMonitorImpl (DataWriterImpl *dw, OpenDDS::DCPS::DataWriterReportDataWriter_ptr dw_writer) | |
virtual | ~DWMonitorImpl () |
virtual void | report () |
Private Attributes | |
DataWriterImpl * | dw_ |
OpenDDS::DCPS::DataWriterReportDataWriter_var | dw_writer_ |
Definition at line 24 of file DWMonitorImpl.h.
OpenDDS::DCPS::DWMonitorImpl::DWMonitorImpl | ( | DataWriterImpl * | dw, | |
OpenDDS::DCPS::DataWriterReportDataWriter_ptr | dw_writer | |||
) |
Definition at line 19 of file DWMonitorImpl.cpp.
References _duplicate().
00021 : dw_(dw), 00022 dw_writer_(DataWriterReportDataWriter::_duplicate(dw_writer)) 00023 { 00024 }
OpenDDS::DCPS::DWMonitorImpl::~DWMonitorImpl | ( | ) | [virtual] |
Definition at line 26 of file DWMonitorImpl.cpp.
void OpenDDS::DCPS::DWMonitorImpl::report | ( | void | ) | [virtual] |
Implements OpenDDS::DCPS::Monitor.
Definition at line 31 of file DWMonitorImpl.cpp.
References ACE_TEXT(), OpenDDS::DCPS::DataWriterReport::associations, OpenDDS::DCPS::DataWriterReport::dp_id, dw_, OpenDDS::DCPS::DataWriterReport::dw_id, dw_writer_, OpenDDS::DCPS::DataWriterImpl::get_dp_id(), OpenDDS::DCPS::TopicImpl::get_id(), OpenDDS::DCPS::DataWriterImpl::get_instance_handles(), OpenDDS::DCPS::DataWriterImpl::get_publication_id(), OpenDDS::DCPS::DataWriterImpl::get_publisher(), OpenDDS::DCPS::DataWriterImpl::get_readers(), OpenDDS::DCPS::DataWriterImpl::get_topic(), DDS::HANDLE_NIL, OpenDDS::DCPS::DataWriterReport::instances, CORBA::is_nil(), LM_ERROR, OpenDDS::DCPS::DataWriterReport::pub_handle, and OpenDDS::DCPS::DataWriterReport::topic_id.
00031 { 00032 if (!CORBA::is_nil(this->dw_writer_.in())) { 00033 DataWriterReport report; 00034 report.dp_id = this->dw_->get_dp_id(); 00035 DDS::Publisher_var pub = this->dw_->get_publisher(); 00036 report.pub_handle = pub->get_instance_handle(); 00037 report.dw_id = this->dw_->get_publication_id(); 00038 DDS::Topic_var topic = this->dw_->get_topic(); 00039 OpenDDS::DCPS::TopicImpl* ti = dynamic_cast<TopicImpl*>(topic.in()); 00040 if (!ti) { 00041 ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) DWMonitorImpl::report():") 00042 ACE_TEXT(" failed to obtain TopicImpl.\n"))); 00043 return; 00044 } 00045 report.topic_id = ti->get_id(); 00046 DataWriterImpl::InstanceHandleVec instances; 00047 this->dw_->get_instance_handles(instances); 00048 CORBA::ULong length = 0; 00049 report.instances.length(static_cast<CORBA::ULong>(instances.size())); 00050 for (DataWriterImpl::InstanceHandleVec::iterator iter = instances.begin(); 00051 iter != instances.end(); 00052 ++iter) { 00053 report.instances[length++] = *iter; 00054 } 00055 DCPS::RepoIdSet readers; 00056 this->dw_->get_readers(readers); 00057 length = 0; 00058 report.associations.length(static_cast<CORBA::ULong>(readers.size())); 00059 for (DCPS::RepoIdSet::iterator iter = readers.begin(); 00060 iter != readers.end(); 00061 ++iter) { 00062 report.associations[length].dr_id = *iter; 00063 length++; 00064 } 00065 this->dw_writer_->write(report, DDS::HANDLE_NIL); 00066 } 00067 }
DataWriterImpl* OpenDDS::DCPS::DWMonitorImpl::dw_ [private] |
Definition at line 32 of file DWMonitorImpl.h.
Referenced by report().
OpenDDS::DCPS::DataWriterReportDataWriter_var OpenDDS::DCPS::DWMonitorImpl::dw_writer_ [private] |
Definition at line 33 of file DWMonitorImpl.h.
Referenced by report().