OpenDDS::DCPS::SPMonitorImpl Class Reference

#include <SPMonitorImpl.h>

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

List of all members.

Public Member Functions

 SPMonitorImpl (MonitorFactoryImpl *monitor_factory, Service_Participant *sp)
virtual ~SPMonitorImpl ()
virtual void report ()

Private Attributes

MonitorFactoryImplmonitor_factory_
OpenDDS::DCPS::ServiceParticipantReportDataWriter_var sp_writer_
std::string hostname_
pid_t pid_

Detailed Description

Definition at line 26 of file SPMonitorImpl.h.


Constructor & Destructor Documentation

OpenDDS::DCPS::SPMonitorImpl::SPMonitorImpl ( MonitorFactoryImpl monitor_factory,
Service_Participant sp 
)

Definition at line 22 of file SPMonitorImpl.cpp.

References ACE_OS::getpid(), ACE_OS::hostname(), hostname_, and pid_.

00024     : monitor_factory_(monitor_factory)
00025 {
00026   char host[256];
00027   ACE_OS::hostname(host, 256);
00028   hostname_ = host;
00029   pid_ = ACE_OS::getpid();
00030 }

Here is the call graph for this function:

OpenDDS::DCPS::SPMonitorImpl::~SPMonitorImpl (  )  [virtual]

Definition at line 32 of file SPMonitorImpl.cpp.

00033 {
00034 }


Member Function Documentation

void OpenDDS::DCPS::SPMonitorImpl::report ( void   )  [virtual]

Implements OpenDDS::DCPS::Monitor.

Definition at line 37 of file SPMonitorImpl.cpp.

References OpenDDS::DCPS::ServiceParticipantReport::domain_participants, OpenDDS::DCPS::MonitorFactoryImpl::get_sp_writer(), DDS::HANDLE_NIL, OpenDDS::DCPS::ServiceParticipantReport::host, hostname_, CORBA::is_nil(), monitor_factory_, OpenDDS::DCPS::ServiceParticipantReport::pid, pid_, sp_writer_, and TheParticipantFactory.

00038 {
00039   if (CORBA::is_nil(this->sp_writer_.in())) {
00040     this->sp_writer_ = this->monitor_factory_->get_sp_writer();
00041   }
00042 
00043   // If the SP writer is not available, it is too soon to report
00044   if (!CORBA::is_nil(this->sp_writer_.in())) {
00045     ServiceParticipantReport report;
00046     report.host = this->hostname_.c_str();
00047     report.pid  = this->pid_;
00048     DDS::DomainParticipantFactory_var pf = TheParticipantFactory;
00049     const DomainParticipantFactoryImpl::DPMap& participants =
00050       dynamic_cast<DomainParticipantFactoryImpl*>(pf.in())->participants();
00051     CORBA::ULong length = 0;
00052     for (DomainParticipantFactoryImpl::DPMap::const_iterator mapIter = participants.begin();
00053          mapIter != participants.end();
00054          ++mapIter) {
00055       for (DomainParticipantFactoryImpl::DPSet::const_iterator iter = mapIter->second.begin();
00056            iter != mapIter->second.end();
00057            ++iter) {
00058         report.domain_participants.length(length+1);
00059         report.domain_participants[length] = (*iter)->get_id();
00060         length++;
00061       }
00062     }
00063     length = 0;
00064     // TODO: Redo the transport-related monitor publishing here...
00065     //const TransportFactory::ImplMap& transports =
00066     //  TransportFactory::instance()->get_transport_impl_map();
00067     //report.transports.length(static_cast<CORBA::ULong>(transports.size()));
00068     //for (TransportFactory::ImplMap::const_iterator mapIter = transports.begin();
00069     //     mapIter != transports.end();
00070     //     ++mapIter) {
00071     //  report.transports[length++] = mapIter->first;
00072     //}
00073     this->sp_writer_->write(report, DDS::HANDLE_NIL);
00074   }
00075 }

Here is the call graph for this function:


Member Data Documentation

Definition at line 36 of file SPMonitorImpl.h.

Referenced by report(), and SPMonitorImpl().

Definition at line 34 of file SPMonitorImpl.h.

Referenced by report().

Definition at line 37 of file SPMonitorImpl.h.

Referenced by report(), and SPMonitorImpl().

OpenDDS::DCPS::ServiceParticipantReportDataWriter_var OpenDDS::DCPS::SPMonitorImpl::sp_writer_ [private]

Definition at line 35 of file SPMonitorImpl.h.

Referenced by report().


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