// $Id: DsLogNotification.idl 81963 2008-06-16 10:20:06Z sma $

// ============================================================================
//
// = FILENAME
//    DsLogNotification.idl
//
// = DESCRIPTION
//    This module defines the Log Generated Events module
//    for the OMG's Telecom Event Log Service
//
// ============================================================================

#ifndef DS_LOG_NOTIFICATION_IDL
#define DS_LOG_NOTIFICATION_IDL

#include "DsLogAdmin.idl"
// CORBA Log Service

#pragma prefix "omg.org"

module DsLogNotification
{

  typedef DsLogAdmin::Log   Log;
  typedef DsLogAdmin::LogId   LogId;
  typedef DsLogAdmin::Threshold Threshold;
  typedef TimeBase::TimeT   TimeT;

  // definition of ThresholdAlarm, the event generated by Log when
  // Log reaches its capacity alarm threshold

  typedef unsigned short PerceivedSeverityType;

  const PerceivedSeverityType critical = 0;
  const PerceivedSeverityType minor = 1;
  const PerceivedSeverityType cleared = 2;

  struct ThresholdAlarm {
  Log     logref;
  LogId   id;
  TimeT   time;
  Threshold crossed_value; // the threshold level just being crossed
  Threshold observed_value; // the current percentage
  PerceivedSeverityType perceived_severity;
  };

  // the events generated by
  // Log when a Log object is created or deleted

  struct ObjectCreation {
  LogId   id;
  TimeT   time;
  };

  // NOTE: cannot say "typedef ObjectCreation ObjectDeletion because
  // type would be lost in current C++ mappings for Anys.

  struct ObjectDeletion {
  LogId   id;
  TimeT   time;
  };

  // definition of AttributeValueChange notification, the event generated by
  // Log when a Log's attribute has changed

  typedef unsigned short AttributeType;
  const AttributeType capacityAlarmThreshold  = 0;
  const AttributeType logFullAction       = 1;
  const AttributeType maxLogSize        = 2;
  const AttributeType startTime         = 3;
  const AttributeType stopTime          = 4;
  const AttributeType weekMask          = 5;
  const AttributeType filter          = 6;
  const AttributeType maxRecordLife       = 7;
  const AttributeType qualityOfService      = 8;

  struct AttributeValueChange {
  Log   logref;
  LogId id;
  TimeT time;
    AttributeType type;
    any old_value;
    any new_value;
  };

  // definition of StateChange notification, the event generated by
  // Log when a Log's state has changed

  typedef unsigned short StateType;
  const StateType administrativeState = 0;
  const StateType operationalState    = 1;
  const StateType forwardingState   = 2;

  struct StateChange {
  Log   logref;
  LogId id;
  TimeT time;
  StateType type;
  any new_value;
  };

  struct ProcessingErrorAlarm {
  // Event generated by a log when a problem occurs within the log.
  // The highest 20 bits or error_num are reserved for vender
  // specific Ids.
  long error_num;
  string error_string;
  };
};

#endif /* DS_LOG_NOTIFICATION_IDL */
