#include <SPMonitorImpl.h>
Public Member Functions | |
SPMonitorImpl (MonitorFactoryImpl *monitor_factory, Service_Participant *sp) | |
virtual | ~SPMonitorImpl () |
virtual void | report () |
Private Attributes | |
MonitorFactoryImpl * | monitor_factory_ |
OpenDDS::DCPS::ServiceParticipantReportDataWriter_var | sp_writer_ |
std::string | hostname_ |
pid_t | pid_ |
Definition at line 26 of file SPMonitorImpl.h.
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 }
OpenDDS::DCPS::SPMonitorImpl::~SPMonitorImpl | ( | ) | [virtual] |
Definition at line 32 of file SPMonitorImpl.cpp.
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 }
std::string OpenDDS::DCPS::SPMonitorImpl::hostname_ [private] |
Definition at line 36 of file SPMonitorImpl.h.
Referenced by report(), and SPMonitorImpl().
Definition at line 34 of file SPMonitorImpl.h.
Referenced by report().
pid_t OpenDDS::DCPS::SPMonitorImpl::pid_ [private] |
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().