blob: a7897002766b083511ea28d59d9d05a9bee70781 [file] [log] [blame]
/**
* This module is taken from the standard CORBA Notification Service
* 1.1, as described in:
*
* https://www.omg.org/spec/NOT/1.1/
*
* The idl was extracted from the following PDF:
* formal/04-10-13
*/
#ifndef _COS_NOTIFICATION_IDL_
#define _COS_NOTIFICATION_IDL_
#pragma prefix "omg.org"
module CosNotification {
typedef string Istring;
typedef Istring PropertyName;
typedef any PropertyValue;
struct Property {
PropertyName name;
PropertyValue value;
};
typedef sequence<Property> PropertySeq;
// The following are the same, but serve different purposes.
typedef PropertySeq OptionalHeaderFields;
typedef PropertySeq FilterableEventBody;
typedef PropertySeq QoSProperties;
typedef PropertySeq AdminProperties;
struct _EventType {
string domain_name;
string type_name;
};
typedef sequence<_EventType> EventTypeSeq;
struct PropertyRange {
PropertyValue low_val;
PropertyValue high_val;
};
struct NamedPropertyRange {
PropertyName name;
PropertyRange range;
};
typedef sequence<NamedPropertyRange> NamedPropertyRangeSeq;
enum QoSError_code {
UNSUPPORTED_PROPERTY,
UNAVAILABLE_PROPERTY,
UNSUPPORTED_VALUE,
UNAVAILABLE_VALUE,
BAD_PROPERTY,
BAD_TYPE,
BAD_VALUE
};
struct PropertyError {
QoSError_code code;
PropertyName name;
PropertyRange available_range;
};
typedef sequence<PropertyError> PropertyErrorSeq;
exception UnsupportedQoS { PropertyErrorSeq qos_err; };
exception UnsupportedAdmin { PropertyErrorSeq admin_err; };
// Define the Structured Event structure
struct FixedEventHeader {
_EventType event_type;
string event_name;
};
struct EventHeader {
FixedEventHeader fixed_header;
OptionalHeaderFields variable_header;
};
struct StructuredEvent {
EventHeader header;
FilterableEventBody filterable_data;
any remainder_of_body;
}; // StructuredEvent
typedef sequence<StructuredEvent> EventBatch;
// The following constant declarations define the standard
// QoS property names and the associated values each property
// can take on. The name/value pairs for each standard property
// are grouped, beginning with a string constant defined for the
// property name, followed by the values the property can take on.
const string EventReliability = "EventReliability";
const short BestEffort = 0;
const short Persistent = 1;
const string ConnectionReliability = "ConnectionReliability";
// Can take on the same values as EventReliability
const string Priority = "Priority";
const short LowestPriority = -32767;
const short HighestPriority = 32767;
const short DefaultPriority = 0;
const string StartTime = "StartTime";
// StartTime takes a value of type TimeBase::UtcT.
const string StopTime = "StopTime";
// StopTime takes a value of type TimeBase::UtcT.
const string Timeout = "Timeout";
// Timeout takes on a value of type TimeBase::TimeT
const string OrderPolicy = "OrderPolicy";
const short AnyOrder = 0;
const short FifoOrder = 1;
const short PriorityOrder = 2;
const short DeadlineOrder = 3;
const string DiscardPolicy = "DiscardPolicy";
// DiscardPolicy takes on the same values as OrderPolicy, plus
const short LifoOrder = 4;
const string MaximumBatchSize = "MaximumBatchSize";
// MaximumBatchSize takes on a value of type long
const string PacingInterval = "PacingInterval";
// PacingInterval takes on a value of type TimeBase::TimeT
const string StartTimeSupported = "StartTimeSupported";
// StartTimeSupported takes on a boolean value
const string StopTimeSupported = "StopTimeSupported";
// StopTimeSupported takes on a boolean value
const string MaxEventsPerConsumer = "MaxEventsPerConsumer";
// MaxEventsPerConsumer takes on a value of type long
interface QoSAdmin {
QoSProperties get_qos();
void set_qos ( in QoSProperties qos) raises ( UnsupportedQoS );
void validate_qos (
in QoSProperties required_qos,
out NamedPropertyRangeSeq available_qos ) raises ( UnsupportedQoS );
}; // QosAdmin
// Admin properties are defined in similar manner as QoS
// properties. The only difference is that these properties
// are related to channel administration policies, as opposed
// message quality of service
const string MaxQueueLength = "MaxQueueLength";
// MaxQueueLength takes on a value of type long
const string MaxConsumers = "MaxConsumers";
// MaxConsumers takes on a value of type long
const string MaxSuppliers = "MaxSuppliers";
// MaxSuppliers takes on a value of type long
const string RejectNewEvents = "RejectNewEvents";
// RejectNewEvents takes on a value of type Boolean
interface AdminPropertiesAdmin {
AdminProperties get_admin();
void set_admin (in AdminProperties admin) raises ( UnsupportedAdmin);
}; // AdminPropertiesAdmin
}; // CosNotification
#endif /* _COS_NOTIFICATION_IDL_ */