00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_MONITOR_FACTORY_IMPL_H 00009 #define OPENDDS_DCPS_MONITOR_FACTORY_IMPL_H 00010 00011 #include "monitor_export.h" 00012 #include "dds/DCPS/MonitorFactory.h" 00013 #include "monitorTypeSupportImpl.h" 00014 00015 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00016 #pragma once 00017 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00018 00019 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00020 00021 namespace OpenDDS { 00022 namespace DCPS { 00023 00024 class Monitor; 00025 /** 00026 * @class MonitorFactoryImpl 00027 * 00028 * @brief Full implementation of the MonitorFactoryImpl 00029 * 00030 * Full version of this library is implemented by the monitor lib. 00031 */ 00032 class OpenDDS_monitor_Export MonitorFactoryImpl 00033 : public MonitorFactory { 00034 public: 00035 MonitorFactoryImpl(); 00036 00037 virtual ~MonitorFactoryImpl(); 00038 00039 /// Factory function to create a service participant monitor object 00040 virtual Monitor* create_sp_monitor(Service_Participant* sp); 00041 00042 /// Factory function to create a domain participant monitor object 00043 virtual Monitor* create_dp_monitor(DomainParticipantImpl* dp); 00044 00045 /// Factory function to create a topic monitor object 00046 virtual Monitor* create_topic_monitor(TopicImpl* topic); 00047 00048 /// Factory function to create a publisher monitor object 00049 virtual Monitor* create_publisher_monitor(PublisherImpl* publisher); 00050 00051 /// Factory function to create a subscriber monitor object 00052 virtual Monitor* create_subscriber_monitor(SubscriberImpl* subscriber); 00053 00054 /// Factory function to create a data writer monitor object 00055 virtual Monitor* create_data_writer_monitor(DataWriterImpl* dw); 00056 00057 /// Factory function to create a data writer periodic monitor object 00058 virtual Monitor* create_data_writer_periodic_monitor(DataWriterImpl* dw); 00059 00060 /// Factory function to create a data reader monitor object 00061 virtual Monitor* create_data_reader_monitor(DataReaderImpl* dr); 00062 00063 /// Factory function to create a data reader periodic monitor object 00064 virtual Monitor* create_data_reader_periodic_monitor(DataReaderImpl* dr); 00065 00066 /// Factory function to create a transport monitor object 00067 virtual Monitor* create_transport_monitor(TransportImpl* transport); 00068 00069 virtual void initialize(); 00070 00071 ServiceParticipantReportDataWriter_ptr get_sp_writer(); 00072 00073 static int service_initialize(); 00074 00075 private: 00076 DDS::DataWriter_ptr create_data_writer(DDS::DomainParticipant_ptr participant, 00077 DDS::Publisher_ptr publisher, 00078 const char* type_name, 00079 const char* topic_name, 00080 const DDS::DataWriterQos& dw_qos); 00081 00082 ServiceParticipantReportDataWriter_var sp_writer_; 00083 DomainParticipantReportDataWriter_var dp_writer_; 00084 TopicReportDataWriter_var topic_writer_; 00085 PublisherReportDataWriter_var pub_writer_; 00086 SubscriberReportDataWriter_var sub_writer_; 00087 DataWriterReportDataWriter_var dw_writer_; 00088 DataWriterPeriodicReportDataWriter_var dw_per_writer_; 00089 DataReaderReportDataWriter_var dr_writer_; 00090 DataReaderPeriodicReportDataWriter_var dr_per_writer_; 00091 TransportReportDataWriter_var transport_writer_; 00092 }; 00093 00094 static int OpenDDS_Requires_MonitorFactoryImpl_Initializer = 00095 MonitorFactoryImpl::service_initialize(); 00096 00097 } // namespace DCPS 00098 } // namespace OpenDDS 00099 00100 00101 ACE_STATIC_SVC_DECLARE (MonitorFactoryImpl) 00102 ACE_FACTORY_DECLARE (OpenDDS_monitor, MonitorFactoryImpl) 00103 00104 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00105 00106 #endif /* OPENDDS_DCPS_MONITOR_FACTORY_IMPL_H */