Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef MONITOR_CONTROL_UTILS_H
00014 #define MONITOR_CONTROL_UTILS_H
00015
00016 #include "ace/pre.h"
00017
00018 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00019 #pragma once
00020 #endif
00021
00022 #if defined (ACE_HAS_MONITOR_FRAMEWORK) && (ACE_HAS_MONITOR_FRAMEWORK == 1)
00023
00024 #include "ace/Service_Config.h"
00025 #include "ace/Dynamic_Service.h"
00026 #include "ace/Reactor.h"
00027
00028 #include "ace/Monitor_Control/Auto_Update_Starter.h"
00029
00030 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::CPU_Load_Monitor
00031 CPU_LOAD_MONITOR;
00032 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Memory_Usage_Monitor
00033 MEMORY_USAGE_MONITOR;
00034 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Num_Threads_Monitor
00035 NUM_THREADS_MONITOR;
00036 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Bytes_Sent_Monitor
00037 BYTES_SENT_MONITOR;
00038 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Packets_Sent_Monitor
00039 PACKETS_SENT_MONITOR;
00040 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Bytes_Received_Monitor
00041 BYTES_RECEIVED_MONITOR;
00042 typedef ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control::Packets_Received_Monitor
00043 PACKETS_RECEIVED_MONITOR;
00044
00045 using namespace ACE_VERSIONED_NAMESPACE_NAME::ACE::Monitor_Control;
00046
00047 template<typename OS_MP_TYPE>
00048 Monitor_Base*
00049 create_os_monitor (const char* name = 0,
00050 ACE_Time_Value period = ACE_Time_Value::zero)
00051 {
00052 Monitor_Base* retval = 0;
00053
00054 ACE_VERSIONED_NAMESPACE_NAME::MC_ADMINMANAGER *mgr =
00055 ACE_VERSIONED_NAMESPACE_NAME::ACE_Dynamic_Service<
00056 ACE_VERSIONED_NAMESPACE_NAME::MC_ADMINMANAGER>::instance (
00057 "MC_ADMINMANAGER");
00058
00059 const char* working_name =
00060 (name == 0 ? OS_MP_TYPE::default_name () : name);
00061
00062 retval = mgr->admin ().monitor_point (working_name);
00063
00064 if (retval == 0)
00065 {
00066 ACE_NEW_RETURN (retval, OS_MP_TYPE (working_name), 0);
00067 (void) mgr->admin ().monitor_point (retval, period);
00068 }
00069
00070 return retval;
00071 }
00072
00073 #define START_PERIODIC_MONITORS \
00074 ACE_VERSIONED_NAMESPACE_NAME::STARTER starter; \
00075 starter.activate ()
00076
00077 #define STOP_PERIODIC_MONITORS \
00078 ACE_VERSIONED_NAMESPACE_NAME::ACE_Dynamic_Service< \
00079 ACE_VERSIONED_NAMESPACE_NAME::MC_ADMINMANAGER>::instance ( \
00080 "MC_ADMINMANAGER")->admin ().reactor ()->end_reactor_event_loop (); \
00081 ACE_VERSIONED_NAMESPACE_NAME::ACE_Thread_Manager::instance ()->wait ()
00082
00083 #define ADD_PERIODIC_QUERY(HANDLER,QUERY,INTERVAL_SEC) \
00084 ACE_VERSIONED_NAMESPACE_NAME::ACE_Dynamic_Service< \
00085 ACE_VERSIONED_NAMESPACE_NAME::MC_ADMINMANAGER>::instance ( \
00086 "MC_ADMINMANAGER")->admin ().auto_query (HANDLER, QUERY, INTERVAL_SEC)
00087
00088 #endif
00089
00090 #include "ace/post.h"
00091
00092 #endif // MONITOR_CONTROL_UTILS_H