00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_TRANSPORT_MONITOR_IMPL_H 00009 #define OPENDDS_DCPS_TRANSPORT_MONITOR_IMPL_H 00010 00011 #include "monitor_export.h" 00012 #include "dds/DCPS/MonitorFactory.h" 00013 #include "monitorTypeSupportImpl.h" 00014 #include "ace/Recursive_Thread_Mutex.h" 00015 #include <vector> 00016 00017 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00018 #pragma once 00019 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00020 00021 namespace OpenDDS { 00022 namespace DCPS { 00023 00024 class TransportMonitorImpl : public Monitor { 00025 public: 00026 TransportMonitorImpl(TransportImpl* transport, 00027 OpenDDS::DCPS::TransportReportDataWriter_ptr transport_writer); 00028 virtual ~TransportMonitorImpl(); 00029 virtual void report(); 00030 00031 private: 00032 OpenDDS::DCPS::TransportReportDataWriter_var transport_writer_; 00033 std::string hostname_; 00034 pid_t pid_; 00035 00036 typedef std::vector<TransportReport> TransportReportVec; 00037 static ACE_Recursive_Thread_Mutex queue_lock_; 00038 static TransportReportVec queue_; 00039 }; 00040 00041 } // namespace DCPS 00042 } // namespace OpenDDS 00043 00044 #endif /* OPENDDS_DCPS_TRANSPORT_MONITOR_IMPL_H */