diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h b/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h deleted file mode 100644 index 97d51de3248..00000000000 --- a/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h +++ /dev/null @@ -1,329 +0,0 @@ -// -*- C++ -*- - -// $Id$ - -#ifndef METRICS_LOCAL_CACHE_T_H -#define METRICS_LOCAL_CACHE_T_H - -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Hash_Map_Manager.h" -#include "ace/Metrics_Cache.h" -#include "ace/Metrics_Cache_T.h" - -#include "orbsvcs/Time_Utilities.h" -#include "orbsvcs/Scheduler_Factory.h" -#include "orbsvcs/MetricsC.h" -#include "orbsvcs/Metrics/Metrics_Utils.h" - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - -#if defined (ACE_HAS_METRICS_BASE_POINTERS) - typedef ACE_Based_Pointer<char> ACE_METRICS_STRING_TYPE; - typedef ACE_Based_Pointer<Metrics::TimeprobeParameter_Set> ACE_METRICS_PARAMETER_SET_TYPE; -#else - typedef char * ACE_METRICS_STRING_TYPE; - typedef Metrics::TimeprobeParameter_Set * ACE_METRICS_PARAMETER_SET_TYPE; -#endif - -//DCL:Commented out to remove Linux compile error -//#include "orbsvcs/Metrics/Metrics_LocalCache.h" - -template <typename ACE_LOCK, typename ALLOCATOR> -class TAO_Metrics_LocalTimeprobe - : public ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> -{ - // = TITLE - // Defines a class that implements a local timeprobe. - // - // = DESCRIPTION - // This class makes use of the <ACE_Metrics_Timeprobe> class to - // implement a timeprobe for use in a local metrics cache. -public: - - typedef TAO_Metrics_LocalTimeprobe<ACE_LOCK, ALLOCATOR> TAO_METRICS_TIMEPROBE_TYPE; - - TAO_Metrics_LocalTimeprobe (u_int id = 0, - const char *name = 0, - u_long size - = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE, - ALLOCATOR * alloc = (ALLOCATOR*)ALLOCATOR::instance()); - // Default constructor. - - void report_intervals (int report_full_interval_times = 0); - // Reports valid intervals between start and stop events. - - void install_data_set (Metrics::TimeprobeParameter_Set *data_set = 0); - // Installs or unistalls the data set into which probe will report. - - void mark_as_operation (void) {this->is_operation_ = 1;} - // Marks the probe as being for an operation. - - void set_hrt (int hrt) {this->is_hrt_ = hrt;} - // Marks the probe as being SRT/HRT. - - ACE_Time_Value last_recorded_timestamp (void); - // Returns the last timestamp that was recorded in the probe. - // If no stamps are recorded, returns zero. - - void flush_TAO_Metrics_LocalTimeprobe (); - // Flush the TAO metrics local timeprobe into shared memory. - -protected: - - int is_operation_; - // Indicates whether or not the probe is for an operation. - - int is_hrt_; - // Indicates whether or not the probe is Hard Real-Time. - - ACE_METRICS_PARAMETER_SET_TYPE data_set_; - // Points to a probe metrics data set. -}; - -template <class ACE_LOCK, class ALLOCATOR> -class TAO_Metrics_LocalCache - : public ACE_Metrics_Cache<ACE_LOCK, ALLOCATOR> -{ - // = TITLE - // Defines a class that implements a local metrics cache. - // - // = DESCRIPTION - // This class makes use of the <ACE_Metrics_Cache> class to - // implement a cache for local use. -public: - - typedef ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> - ACE_METRICS_TIMEPROBE_TYPE; - -#if defined (ACE_HAS_METRICS_BASE_POINTERS) - typedef ACE_Based_Pointer<ACE_METRICS_TIMEPROBE_TYPE> - ACE_METRICS_TIMEPROBE_BASED_PTR_TYPE; -#else - typedef ACE_METRICS_TIMEPROBE_TYPE * ACE_METRICS_TIMEPROBE_BASED_PTR_TYPE; -#endif - - typedef TAO_Metrics_LocalTimeprobe<ACE_LOCK, ALLOCATOR> TAO_METRICS_TIMEPROBE_TYPE; - - typedef TAO_Metrics_LocalCache<ACE_LOCK, ALLOCATOR> TAO_METRICS_CACHE_TYPE; - - struct TAO_Metrics_Cache_Data_Base - { - ACE_METRICS_STRING_TYPE probe_name; - TAO_Metrics_LocalTimeprobe<ACE_LOCK, ALLOCATOR> probe; - }; - - struct TAO_Metrics_Cache_Data : public TAO_Metrics_Cache_Data_Base - { - int is_hrt; - u_long missed_deadlines; - u_long made_deadlines; - u_long cancellations; - }; - -#if defined (ACE_HAS_METRICS_BASE_POINTERS) - typedef ACE_Based_Pointer<TAO_Metrics_Cache_Data_Base> ACE_METRICS_CACHE_DATA_BASE_TYPE; - typedef ACE_Based_Pointer<TAO_Metrics_Cache_Data> ACE_METRICS_CACHE_DATA_TYPE; -#else - typedef TAO_Metrics_Cache_Data_Base* ACE_METRICS_CACHE_DATA_BASE_TYPE; - typedef TAO_Metrics_Cache_Data* ACE_METRICS_CACHE_DATA_TYPE; -#endif - - typedef ACE_Hash_Map_Manager_Ex<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_BASE_TYPE, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_Null_Mutex> METRICS_BASE_MONITOR_MAP; - // Type of map used for O(1) lookup of monitored data for operations. - - typedef ACE_Hash_Map_Entry<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_BASE_TYPE > - METRICS_BASE_MONITOR_MAP_ENTRY; - // Type of entry in monitor map. - - typedef ACE_Hash_Map_Iterator_Ex<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_BASE_TYPE, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_Null_Mutex> - METRICS_BASE_MONITOR_MAP_ITERATOR; - // Type of iterator for monitor map. - - typedef ACE_Hash_Map_Manager_Ex<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_TYPE, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_Null_Mutex> METRICS_MONITOR_MAP; - // Type of map used for O(1) lookup of monitored data for operations. - - typedef ACE_Hash_Map_Entry<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_TYPE > - METRICS_MONITOR_MAP_ENTRY; - // Type of entry in monitor map. - - typedef ACE_Hash_Map_Iterator_Ex<RtecScheduler::handle_t, - ACE_METRICS_CACHE_DATA_TYPE, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_Null_Mutex> - METRICS_MONITOR_MAP_ITERATOR; - // Type of iterator for monitor map. - - TAO_Metrics_LocalCache (u_long table_size - = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE, - u_long number_of_probes - = METRICS_DEFAULT_TIMEPROBE_COUNT, - ALLOCATOR * alloc = (ALLOCATOR*)ALLOCATOR::instance()); - // Constructor. - - ~TAO_Metrics_LocalCache () {this->fini ();} - // Destructor. - - void reset_statistics (); - // Reset the collection of metrics data. - - int init (u_long number_of_probes); - // Factory method for constructing probes. - - void fini (); - // Method for destroying probes. - - void register_upcall_adapter (RtecScheduler::handle_t handle, - const char *name, - int is_hrt, - unsigned short incr_upcall_id = 1); - // Registers an upcall adapter, allocates monitoring data structures - // for it in hash maps if not already present. - - RtecScheduler::handle_t register_base_metrics (const char *name, - TAO_Metrics_Utils::Base_Metrics_Type bmt, - unsigned short incr_base_id = 1); - // Registers a base metrics probe, allocates monitoring data structures - // for it in hash maps, returns a handle to the metrics segment. - - void report_upcall_start (RtecScheduler::handle_t handle); - // Inline: Records start time of an upcall. - - int report_upcall_stop (RtecScheduler::handle_t handle, - const ACE_Time_Value & deadline); - // Inline: Records end time of an upcall, returns 0 if the deadline - // was made, 1 if the deadline was missed, or -1 if an error occurred. - // If the passed deadline is equal to ACE_Time_Value::zero, by definition - // the deadline is made, and the method returns 0. - - void report_upcall_cancellation (RtecScheduler::handle_t handle); - // Inline: Reports a cancelled upcall. - - void report_base_metrics_start (RtecScheduler::handle_t handle); - // Inline: Records start time of a base metrics segment. - - void report_base_metrics_stop (RtecScheduler::handle_t handle); - // Inline: Records stop time of a base metrics segment. - - void report_base_metrics_suspend (RtecScheduler::handle_t handle); - // Inline: Records start time of a base metrics segment. - - void report_base_metrics_resume (RtecScheduler::handle_t handle); - // Inline: Records stop time of a base metrics segment. - - void flush_TAO_Metrics_LocalCache (); - // Flush the TAO metrics local cache into shared memory. - -protected: - void increment_base_handle(TAO_Metrics_Utils::Base_Metrics_Type bmt); - // Used to increment the probe id counter for a particular metrics type - - void increment_upcall_handle(); - // Used to increment the probe id counter for a upcall probe type - - METRICS_BASE_MONITOR_MAP base_monitor_maps_ [2]; - // These map base metrics ids to base monitor data. - - METRICS_MONITOR_MAP monitor_maps_ [2]; - // These map operation handles to upcall monitor data. - - // Count of the number of registered sched probes. - u_long sched_count_; - - // Count of the number of registered quo probes. - u_long quo_count_; - - // Count of the number of registered tns probes. - u_long tns_count_; - - // Count of the number of registered teec probes. - u_long teec_count_; - - // Count of the number of registered rtarm probes. - u_long rtarm_count_; - - // Count of the number of registered upcall adapters. - u_long upcall_adapter_count_; - - // Holds the next base metrics probe handle to assign - RtecScheduler::handle_t next_base_metrics_handle_; - -}; - - - -template <class ACE_LOCK, class ALLOCATOR> -class TAO_Metrics_ReportingLocalCache - : public TAO_Metrics_LocalCache<ACE_LOCK, ALLOCATOR> -{ - // = TITLE - // Defines a class that adds metrics logger reporting to a local cache. - // - // = DESCRIPTION - // This class makes use of the <TAO_Metrics_LocalCache> as its - // a cache for local use, and adds reporting to the logger. -public: - - TAO_Metrics_ReportingLocalCache (u_long table_size - = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE, - u_long number_of_probes - = METRICS_DEFAULT_TIMEPROBE_COUNT, - ALLOCATOR * alloc = (ALLOCATOR*)ALLOCATOR::instance()); - // Constructor. - - ~TAO_Metrics_ReportingLocalCache () {this->fini ();} - // Destructor. - - void output_statistics (Metrics::QoSLogger_ptr logger); - // Output the statistics to the remote logger servant. - - void register_upcall_adapter (RtecScheduler::handle_t handle, - const char *name, - int is_hrt, - Metrics::QoSLogger_ptr logger); - // Registers an upcall adapter, allocates monitoring data structures - // for it in hash maps if not already present. - - RtecScheduler::handle_t register_base_metrics (const char *name, - TAO_Metrics_Utils::Base_Metrics_Type bmt, - Metrics::QoSLogger_ptr logger); - // Registers a base metrics probe, allocates monitoring data structures - // for it in hash maps, returns a handle to the metrics segment. - - int register_probes (Metrics::QoSLogger_ptr logger); - // Registers probes with the logger. - - void flush_TAO_Metrics_ReportingLocalCache (); - // Flush the TAO metrics local cache into shared memory. -}; - -TAO_END_VERSIONED_NAMESPACE_DECL - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "orbsvcs/Metrics/Metrics_LocalCache_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Metrics_LocalCache_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* METRICS_LOCAL_CACHE_T_H */ |