diff options
Diffstat (limited to 'ace/Metrics_Cache_T.h')
-rw-r--r-- | ace/Metrics_Cache_T.h | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/ace/Metrics_Cache_T.h b/ace/Metrics_Cache_T.h deleted file mode 100644 index 8d6c44acd13..00000000000 --- a/ace/Metrics_Cache_T.h +++ /dev/null @@ -1,243 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Metrics_Cache_T.h - * - * $Id$ - * - * @author Chris Gill <cdgill@cse.wustl.edu> - */ -//============================================================================= - - -#ifndef ACE_METRICS_CACHE_T_H -#define ACE_METRICS_CACHE_T_H - -#include "ace/config-all.h" - -// helpful macro definitions -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#if defined (ACE_COMPILE_TIMEPROBES) - -#include "ace/Timeprobe.h" -#include "ace/Timeprobe_T.h" - -// Defaults for initializing timeprobes and timeprobe arays. -#define METRICS_MIN_TIMEPROBE_TABLE_SIZE 256 * 4 -#define METRICS_MAX_TIMEPROBE_TABLE_SIZE 256 * 256 -#define METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE METRICS_MIN_TIMEPROBE_TABLE_SIZE -#define METRICS_DEFAULT_TIMEPROBE_COUNT 6 - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -/** - * @class ACE_Metrics_Timeprobe - * - * @brief This class implements a timeprobe for use in a Metrics framework. - * - * This class provides a probe for specific thread and method call - * metrics timing points. - */ -template <class ACE_LOCK, class ALLOCATOR> -class ACE_Metrics_Timeprobe : - public ACE_Timeprobe_Ex<ACE_LOCK, ALLOCATOR> - { -public: - - typedef ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> - ACE_METRICS_TIMEPROBE_TYPE; - - typedef ACE_timeprobe_t ACE_METRICS_TIMEPROBE_DATA_TYPE; - typedef ACE_METRICS_TIMEPROBE_TYPE* ACE_METRICS_TIMEPROBE_BASED_PTR_TYPE; - typedef char* ACE_METRICS_NAME_BASED_PTR_TYPE; - - // Enumerated timeprobe event types. - enum event_id - { - WORK_START = 0, - WORK_STOP = 1, - WORK_SUSPEND = 2, - WORK_RESUME = 3 - }; - - // Default constructor: plugs in the above event descriptions. - ACE_Metrics_Timeprobe (u_int id = 0, - const char *name = 0, - u_long size = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE); - - // Constructor with allocator: plugs in the above event descriptions. - ACE_Metrics_Timeprobe (ALLOCATOR *allocatorPtr, - u_int id = 0, - const char *name = 0, - u_long size = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE); - - // Destructor. - virtual ~ACE_Metrics_Timeprobe (); - - // Returns true if a timeprobe event matches the passed id. - int is_event (const ACE_METRICS_TIMEPROBE_DATA_TYPE &t, - ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR>::event_id id); - - // Accessor and mutator for probe name. - const char * probe_name (void); - void probe_name (char * name); - - // Accessor for probe id. - u_int probe_id (void); - - // Mutator for probe id. - void probe_id (u_int id); - - // Flush the ACE metrics timeprobe into shared memory. - void flush_ACE_Metrics_Timeprobe (); - -protected: - - // Identifier for the timeprobe. - u_int id_; - - // Name of the timeprobe. - char* name_; - -private: - - // Declare but do not define. - ACE_Metrics_Timeprobe (const ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> &); - void operator =(const ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> &); -}; - -/** - * @class ACE_Metrics_Cache - * - * @brief This class implements a cache for metrics timeprobe data. - * - * This class allows probes to be recorded into a single cache that - * monitors and other higher level metrics classes can query. - */ -template <class ACE_LOCK, class ALLOCATOR> -class ACE_Metrics_Cache -{ -public: - - typedef ACE_Metrics_Cache <ACE_LOCK, ALLOCATOR> ACE_METRICS_CACHE_TYPE; - - // Default constructor. - ACE_Metrics_Cache (u_long table_size - = METRICS_DEFAULT_TIMEPROBE_TABLE_SIZE, - u_long number_of_probes - = METRICS_DEFAULT_TIMEPROBE_COUNT, - ALLOCATOR * allocatorPtr = (ALLOCATOR*)ALLOCATOR::instance()); - - // Destructor. - ~ACE_Metrics_Cache (); - - // = Dispatching metrics. - - // Report start, stop, suspend, and resume times of a dispatch - // enqueue: stores data metrics on the supplier side. - void report_enqueue_start (u_long i); - void report_enqueue_stop (u_long i); - void report_enqueue_suspend (u_long i); - void report_enqueue_resume (u_long i); - - // Report start, stop, suspend, and resume times of a dispatch - // dequeue: stores data metrics on the supplier side.. - void report_dequeue_start (u_long i); - void report_dequeue_stop (u_long i); - void report_dequeue_suspend (u_long i); - void report_dequeue_resume (u_long i); - - // Reset the metrics data on the consumer side. - void reset_base_statistics (); - - // Flips the supplier and consumer sides. - void flip_supplier_and_consumer (); - - // Flush the ACE metrics cache into shared memory. - void flush_ACE_Metrics_Cache (); - - // Set the enable state for metrics collection. - void metrics_enabled(int enabled); - - // Return the enable state for metrics collection. - int metrics_enabled(void) const; - -protected: - - // Obtain an allocator pointer correctly thunked for the current - // address space. If there is no allocator stored in the instance, - // the singleton allocator in the current process is used. - ALLOCATOR * allocator (void); - - // = Implementation members. - - // Number of probes in each supplier/consumer set. - u_long probe_set_size_; - - // Probe data counts for each supplier/consumer set. - u_long * enqueue_count_ [2]; - u_long * dequeue_count_ [2]; - - // Probes for each supplier/consumer set. - ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> ** enqueue_probes_ [2]; - ACE_Metrics_Timeprobe<ACE_LOCK, ALLOCATOR> ** dequeue_probes_ [2]; - - // Names for the probes. - char ** enqueue_names_; - char ** dequeue_names_; - - // Index from which probe events are being consumed. - // for WSOA, it's the data being sent to the logger - int consumer_index_; - - // Index to which probe events are being supplied. - // for WSOA, it's the data being recorded from the probes - int supplier_index_; - - // Size of the timestamp table in each probe. - u_long table_size_; - - // Interval start and stop timestamps. - ACE_Time_Value interval_start_; - - // Interval start and stop timestamps. - ACE_Time_Value interval_end_; - - // Flag to indicate whether or not start time of interval has been - // initialized since the last reset. - int interval_initialized_; - - // Indicator of whether metrics is enabled. - int metrics_enabled_; - -private: - - // Allocation strategy object. - ALLOCATOR* allocator_; - - // Declare but do not define. - ACE_Metrics_Cache (const ACE_Metrics_Cache<ACE_LOCK, ALLOCATOR> &); - void operator = (const ACE_Metrics_Cache<ACE_LOCK, ALLOCATOR> &); -}; - -ACE_END_VERSIONED_NAMESPACE_DECL - -#if defined (__ACE_INLINE__) -#include "ace/Metrics_Cache_T.inl" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "ace/Metrics_Cache_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Metrics_Cache_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* defined (ACE_COMPILE_TIMEPROBES) */ - -#endif /* ACE_METRICS_CACHE_T_H */ |