A.1 IDL specification (file name "PMIRPConstDefs.idl")
32.4133GPPPerformance Management (PM) Integration Reference Point (IRP): Common Object Request Broker Architecture (CORBA) Solution Set (SS)Telecommunication managementTS
//File: PMIRPConstDefs.idl
#ifndef _PM_IRP_CONST_DEFS_IDL_
#define _PM_IRP_CONST_DEFS_IDL_
#include <TimeBase.idl>
// This statement must appear after all include statements
#pragma prefix "3gppsa5.org"
/* ## Module: PMIRPConstDefs
This module contains commonly used definitions for PM IRP
===============================================================
*/
module PMIRPConstDefs
{
enum Result {OK, FAILURE};
typedef string MOClassName;
typedef string MOInstance;
typedef sequence<MOInstance> MOInstanceList;
typedef string MeasurementCategory;
typedef sequence<MeasurementCategory> MeasurementCategoryList;
typedef unsigned long GranularityPeriod; //The unit is minute.
typedef unsigned long ReportingPeriod; //The unit is minute.
typedef TimeBase::UtcT UTCTime;
union IRPTimeOpt switch(boolean)
{
case TRUE: UTCTime value;
};
struct Time24
{
unsigned short hour; // 0-23
unsigned short minute; // 0-59
};
struct IntervalOfDay
{
Time24 interval_start_time;
Time24 interval_stop_time;
};
typedef sequence<IntervalOfDay> DailyScheduling;
const short SUNDAY = 1;
const short MONDAY = 2;
const short TUESDAY = 4;
const short WEDNESDAY = 8;
const short THURSDAY = 16;
const short FRIDAY = 32;
const short SATURDAY = 64;
typedef short DaysOfWeek;
// Bit mask of week days,
// e.g. "SUNDAY(1) and WEDNESDAY(8)" is encoded as 9.
struct WeeklySchedulingElement
{
DaysOfWeek days;
DailyScheduling intervals_of_day;
};
typedef sequence<WeeklySchedulingElement> WeeklyScheduling;
enum ScheduleType { DAILY, WEEKLY };
union Schedule switch (ScheduleType)
{
case DAILY: DailyScheduling daily_scheduling;
case WEEKLY: WeeklyScheduling weekly_scheduling;
};
union ScheduleOpt switch(boolean)
{
case TRUE: Schedule value;
};
typedef unsigned long JobId;
typedef sequence<JobId> JobIdList;
struct JUnsupported
{
MOInstance mo_instance;
MeasurementCategory measurement_category;
string reason;
};
typedef sequence<JUnsupported> JUnsupportedList;
/**
* Defines the name of an attribute of a Managed Object
*/
typedef string MOAttributeName;
enum JobStatus {SCHEDULED, ACTIVE, SUSPENDED, STOPPED};
enum JobPriority {LOW, MEDIUM, HIGH};
union JobPriorityOpt switch (boolean)
{
case TRUE: JobPriority value;
};
struct JobInfo
{
JobId job_id;
MOClassName mo_class;
MOInstanceList mo_instance_list;
MeasurementCategoryList measurement_category_list;
GranularityPeriod granularity_period;
ReportingPeriod reporting_period;
IRPTimeOpt start_time;
IRPTimeOpt stop_time;
ScheduleOpt schedule;
JobStatus job_status;
JobPriorityOpt job_priority;
};
typedef sequence<JobInfo> JobInfoList;
typedef string MeasurementTypeName;
typedef string SubCounterName;
typedef short ProbableCause; //THRESHOLD_CROSSED = 351;
typedef string SpecificProblem;
typedef any ThresholdValue;
enum Severity {WARNING, MINOR, MAJOR, CRITICAL};
union Hysteresis switch(boolean)
{
case TRUE: long long_value;
case FALSE: float float_value;
};
enum Direction { INCREASING, DECREASING};
struct ThresholdPackElement
{
ThresholdValue threshold_value;
Severity severity_;
Hysteresis hysteresis_;
};
typedef sequence<ThresholdPackElement> ThresholdPack;
struct ThresholdInfo
{
MeasurementTypeName measurement_type_name;
SubCounterName sub_counter_name;
ProbableCause probable_cause;
SpecificProblem specific_problem;
Direction direction_;
ThresholdPack threshold_pack;
};
typedef sequence<ThresholdInfo> ThresholdInfoList;
typedef GranularityPeriod MonitorGranularityPeriod;// time period is based on 5 minutes.
typedef unsigned long MonitorId;
struct MUnsupported
{
MOInstance mo_instance;
MeasurementTypeName measurement_type_name;
SubCounterName sub_counter_name;
string reason;
};
typedef sequence<MUnsupported> MUnsupportedList;
enum MonitorStatus {M_SUSPENDED, M_ACTIVE};
typedef sequence<MonitorId> MonitorIdList;
typedef string _EventType; // The value is "Quality of Service Alarm"
struct MonitorInfo
{
MonitorId monitor_id;
MOClassName mo_class;
MOInstanceList mo_instance_list;
MonitorGranularityPeriod monitor_granularity_period;
ThresholdInfoList threshold_info_list;
MonitorStatus threshold_monitor_status;
_EventType event_type;
};
typedef sequence<MonitorInfo> MonitorInfoList;
/**
* This block identifies attributes which are included as part of the
* PMIRP. These attribute values should not
* clash with those defined for the attributes of notification
* header (see IDL of Notification IRP).
*/
interface AttributeNameValue
{
const string JOB_ID = "JOB_ID";
const string JOB_STATUS = "JOB_STATUS";
const string REASON = "REASON";
const string MONITOR_ID = "MONITOR_ID";
const string MONITOR_STATUS = "MONITOR_STATUS";
const string MONITOR_GRANULARITY_PERIOD = "MONITOR_GRANULARITY_PERIOD";
const string MONITOR_EVENT_TYPE = "MONITOR_EVENT_TYPE";
const string PROBABLE_CAUSE = "PROBABLE_CAUSE";
const string SPECIFIC_PROBLEM = "SPECIFIC_PROBLEM";
const string DIRECTION = "DIRECTION";
};
};
#endif // _PM_IRP_CONST_DEFS_IDL_