// DsLogNotification.idl,v 1.3 2002/10/03 00:26:48 ossama Exp

// ============================================================================
//
// = 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 */
