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 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00022 00023 namespace OpenDDS { 00024 namespace DCPS { 00025 00026 class TransportMonitorImpl : public Monitor { 00027 public: 00028 TransportMonitorImpl(TransportImpl* transport, 00029 OpenDDS::DCPS::TransportReportDataWriter_ptr transport_writer); 00030 virtual ~TransportMonitorImpl(); 00031 virtual void report(); 00032 00033 private: 00034 OpenDDS::DCPS::TransportReportDataWriter_var transport_writer_; 00035 std::string hostname_; 00036 pid_t pid_; 00037 00038 typedef std::vector<TransportReport> TransportReportVec; 00039 static ACE_Recursive_Thread_Mutex queue_lock_; 00040 static TransportReportVec queue_; 00041 }; 00042 00043 } // namespace DCPS 00044 } // namespace OpenDDS 00045 00046 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00047 00048 #endif /* OPENDDS_DCPS_TRANSPORT_MONITOR_IMPL_H */