summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstorri <storri@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-07-28 17:25:56 +0000
committerstorri <storri@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-07-28 17:25:56 +0000
commitc12ed3fd8a6bfd5794ab50267cb8a44ddb701a68 (patch)
treefe2c2c6979d6c7ce624212c26555531841870348
parentec8cc5a39d34fcbf4d0991fe6446dd509aeb1ab3 (diff)
downloadATCD-c12ed3fd8a6bfd5794ab50267cb8a44ddb701a68.tar.gz
*** empty log message ***
-rw-r--r--TAO/ChangeLog6
-rw-r--r--TAO/orbsvcs/orbsvcs/Metrics.idl331
2 files changed, 337 insertions, 0 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 4f3b8389bd9..92dd78ae083 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jul 28 13:25:00 2003 Stephen Torri <storri@cse.wustl.edu>
+
+ * orbsvcs/orbsvcs/Metrics.idl:
+
+ Added missing file.
+
Mon Jul 28 10:48:49 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/be/be_visitor_exception/any_op_cs.cpp:
diff --git a/TAO/orbsvcs/orbsvcs/Metrics.idl b/TAO/orbsvcs/orbsvcs/Metrics.idl
new file mode 100644
index 00000000000..00e87c7f87a
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Metrics.idl
@@ -0,0 +1,331 @@
+// $Id$
+
+#ifndef METRICS_IDL
+#define METRICS_IDL
+
+#include "TimeBase.idl"
+#include "RtecScheduler.idl"
+#pragma prefix ""
+
+module Metrics
+{
+ // Types
+
+ enum TIMEPROBE_EVENT_TYPE
+ {
+ WORK_START,
+ WORK_STOP,
+ WORK_SUSPEND,
+ WORK_RESUME
+ };
+
+ typedef TIMEPROBE_EVENT_TYPE TIMEPROBE_EVENT_TYPE_t;
+
+ typedef TimeBase::TimeT Time; // time type
+ typedef sequence<RtecScheduler::handle_t> Handle_Set_t; // handle sequence
+
+ struct QoSParameter_t
+ // = TITLE
+ // Describes the monitored QoS for an "RT_Operation".
+ //
+ // = DESCRIPTION
+ // The deadline success and failure counts for an operation.
+ {
+ RtecScheduler::handle_t handle;
+ // The handle of the operation for which the information is stored
+
+ string entry_point;
+ // The name of the operation for which the information is stored
+
+ unsigned long deadlines_made;
+ // The number of deadlines successfully met.
+
+ unsigned long deadlines_missed;
+ // The number of deadlines missed.
+
+ unsigned long operations_cancelled;
+ // The number of operations cancelled.
+
+ short is_hrt;
+ // Indicates whether or not the operation is hard real-time.
+ };
+
+ typedef sequence<QoSParameter_t> QoSParameter_Set;
+
+
+ struct QoSData
+ // = TITLE
+ // Describes the monitored QoS for the visualization browser.
+ //
+ // = DESCRIPTION
+ // Aggregate success, failure, and cancellation counts the operations.
+ {
+ long hrt_deadlines_made;
+ // The number of hard real-time deadlines successfully met.
+
+ long hrt_deadlines_missed;
+ // The number of hard real-time deadlines missed.
+
+ long hrt_operations_cancelled;
+ // The number of hard real-time operations that were cancelled.
+
+ long srt_deadlines_made;
+ // The number of soft real-time deadlines successfully met.
+
+ long srt_deadlines_missed;
+ // The number of soft real-time deadlines missed.
+
+ long srt_operations_cancelled;
+ // The number of soft real-time operations that were cancelled.
+ };
+
+ struct UtilData
+ // = TITLE
+ // Describes the monitored QoS for the visualization browser.
+ //
+ // = DESCRIPTION
+ // Aggregate success, failure, and cancellation counts the operations.
+ {
+ double hrt_op_utilization;
+ // The percentage of the time spent in hard real-time operations.
+
+ double srt_op_utilization;
+ // The percentage of the time spent in soft real-time operations.
+
+ double queue_utilization;
+ // The percentage of the time spent managing queues.
+ };
+
+ struct ProbeIdentity_t
+ // = TITLE
+ // Describes the identity of a timeprobe.
+ //
+ // = DESCRIPTION
+ // The name and identifier for a timeprobe.
+ {
+ unsigned long probe_id;
+ // The unique identifier for the timeprobe.
+
+ string probe_name;
+ // The name of the timeprobe.
+ };
+
+ typedef sequence<ProbeIdentity_t> ProbeIdentity_Set;
+
+ struct TimeprobeParameter_t
+ // = TITLE
+ // Describes the monitored data for a timeprobe.
+ //
+ // = DESCRIPTION
+ // The duration of an interval for a timeprobe.
+ {
+ unsigned long probe_id;
+ // The name of the timeprobe that collected the data.
+
+ short is_operation;
+ // Indicates whether or not the data are for an operation.
+
+ short is_hrt;
+ // Indicates whether or not an operation is hard real-time.
+
+ short is_full_interval;
+ // Indicates whether or not the time reported is for the entire
+ // interval measured by the time probe.
+
+ short cross_thread_probe;
+ // Indicates whether or not the time reported is for the entire
+ // interval measured by the time probe.
+
+ Time start_event_time;
+ // The start of the event for sorting purposes.
+
+ Time stop_event_time;
+ // The start of the event for sorting purposes.
+
+ Time interval;
+ // The elapsed time within the timeprobe.
+ };
+
+ typedef sequence<TimeprobeParameter_t> TimeprobeParameter_Set;
+
+
+ // Exceptions
+
+ exception SYNCHRONIZATION {};
+ // A synchronization error occurred in a method.
+
+ exception INTERNAL {};
+ // An error occurred in an internal data structure.
+
+ exception INTERNAL_0 {};
+ exception INTERNAL_1 {};
+ exception INTERNAL_2 {};
+ exception INTERNAL_3 {};
+ exception INTERNAL_4 {};
+ exception INTERNAL_5 {};
+ exception INTERNAL_6 {};
+ exception INTERNAL_7 {};
+ exception INTERNAL_8 {};
+ // These are to track down an infrequently reproducible
+ // error, and should be removed eventually.
+
+ exception NIL_LOGGER {};
+ // An operation was passed a nil logger pointer.
+
+ // Interfaces
+
+ interface QoSLogger
+ // = TITLE
+ // This interface provides access to a QoS logger.
+ //
+ // = DESCRIPTION
+ // This interface allows clients log monitored QoS information.
+ {
+ oneway void send_banner (in string banner);
+ // Sends a banner to the logger, which is recorded in the
+ // output log and communicated to the visualization browser.
+
+ oneway void log_aggregate_QoS (in Metrics::QoSParameter_Set qos_set,
+ in Time interval);
+ // Reports the aggregate QoS information for all operations
+ // to the passed QoS logger.
+
+ oneway void set_identities (in Metrics::ProbeIdentity_Set identity_set);
+ // Binds the names of various timeprobes to their identifiers so
+ // that ids alone can be used (for efficiency) in passing data.
+
+ oneway void set_identity (in Metrics::ProbeIdentity_t identity);
+ // Binds the names of various timeprobes to their identifiers so
+ // that ids alone can be used (for efficiency) in passing data.
+
+ oneway void log_timeprobe_data (in Metrics::TimeprobeParameter_Set data_set,
+ in Time interval);
+ // Reports timeprobe data collected since last run.
+ };
+
+
+ interface QoSMonitor
+ // = TITLE
+ // This interface provides access to a QoS data monitor.
+ //
+ // = DESCRIPTION
+ // This interface allows objects to store and query monitored
+ // QoS information.
+ {
+ void report_made_deadline (in RtecScheduler::handle_t handle)
+ raises (INTERNAL_0);
+ // Report a successful upcall.
+
+ void report_missed_deadline (in RtecScheduler::handle_t handle)
+ raises (INTERNAL_1);
+ // Report an unsuccessful upcall.
+
+ void reset_statistics (in RtecScheduler::handle_t handle)
+ raises (INTERNAL_7, INTERNAL_8);
+ // Resets the aggregate QoS information for the given
+ // operation handle.
+
+ void get_aggregate_QoS (in RtecScheduler::handle_t handle,
+ out Metrics::QoSParameter_t qos)
+ raises (INTERNAL_2, INTERNAL_3);
+ // Retrieves the aggregate QoS information for the given
+ // operation handle.
+
+ void get_aggregate_QoS_set (in Metrics::Handle_Set_t handle_set,
+ out Metrics::QoSParameter_Set qos_set)
+ raises (INTERNAL_4, INTERNAL_5);
+ // Retrieves the aggregate QoS information for all operations
+ // in the passed handle set.
+ };
+
+
+ interface ReportingQoSMonitor : QoSMonitor
+ // = TITLE
+ // This interface provides access to a QoS data monitor.
+ //
+ // = DESCRIPTION
+ // This interface allows objects to report monitored
+ // QoS information to a QoS logger.
+ {
+ void report_aggregate_QoS (in Metrics::QoSLogger logger,
+ in Metrics::Time interval)
+ raises (NIL_LOGGER, INTERNAL_6);
+ // Reports the aggregate QoS information for all operations
+ // to the passed QoS logger.
+ };
+
+ interface FrameManager
+ // = TITLE
+ // This interface provides access to a QoS data monitor.
+ //
+ // = DESCRIPTION
+ // This interface allows objects to query or report monitored
+ // QoS information that was collected by QoS monitoring adapters.
+ {
+ short register_period (in RtecScheduler::Period_t p)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Binds the period to the internal frame map, with a new frame data
+ // structure. Returns 0 if a new entry is bound successfully,
+ // returns 1 if an attempt is made to bind an existing entry, and
+ // returns -1 if failures occur.
+
+ short update_all_frames_with_time (in Time tv)
+ raises (SYNCHRONIZATION);
+ // Updates time frames, based on the passed time value.
+
+ short update_all_frames ()
+ raises (SYNCHRONIZATION);
+ // Updates time frames, based on the current time as of the call.
+
+ short update_frame_with_time (in RtecScheduler::Period_t p, in Time tv)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Updates the passed period's time frame, based on the passed time
+ // value.
+
+ short update_frame (in RtecScheduler::Period_t p)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Updates the passed period's time frame, based on the current time
+ // as of the call.
+
+ short reset_all_frames_with_time (in Time tv)
+ raises (SYNCHRONIZATION);
+ // Resets time frames, based on the passed time value.
+
+ short reset_all_frames ()
+ raises (SYNCHRONIZATION);
+ // Resets time frames, based on the current time as of the call.
+
+ short reset_frame_with_time (in RtecScheduler::Period_t p, in Time tv)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Resets the passed period's start-of-frame, based on the passed time
+ // value.
+
+ short reset_frame (in RtecScheduler::Period_t p)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Resets the passed period's start-of-frame, based on the current time
+ // as of the call.
+
+ short get_start_time (in RtecScheduler::Period_t p, out Time start)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Gets the start time for the period's current frame.
+
+ short get_end_time (in RtecScheduler::Period_t p, out Time end)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Gets the end time for the period's current frame.
+
+ short get_frame_id (in RtecScheduler::Period_t p, out unsigned long id)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Gets the locally unique identifier for the period's current frame.
+
+ short get_frame_data (in RtecScheduler::Period_t p, out Time start,
+ out Time end, out unsigned long id)
+ raises (INTERNAL, SYNCHRONIZATION);
+ // Gets the start time, end time, and id for the period's current frame.
+ };
+
+};
+
+#endif /* METRICS_IDL */
+
+
+