00001
00002
00003
00004 #ifndef _COS_NOTIFICATION_IDL_
00005 #define _COS_NOTIFICATION_IDL_
00006
00007
00008
00009 #pragma prefix "omg.org"
00010
00011 module CosNotification {
00012
00013 typedef string Istring;
00014 typedef Istring PropertyName;
00015 typedef any PropertyValue;
00016
00017 struct Property {
00018 PropertyName name;
00019 PropertyValue value;
00020 };
00021 typedef sequence<Property> PropertySeq;
00022
00023
00024 typedef PropertySeq OptionalHeaderFields;
00025 typedef PropertySeq FilterableEventBody;
00026 typedef PropertySeq QoSProperties;
00027 typedef PropertySeq AdminProperties;
00028
00029 struct EventType {
00030 string domain_name;
00031 string type_name;
00032 };
00033 typedef sequence<EventType> EventTypeSeq;
00034
00035 struct PropertyRange {
00036 PropertyValue low_val;
00037 PropertyValue high_val;
00038 };
00039
00040 struct NamedPropertyRange {
00041 PropertyName name;
00042 PropertyRange range;
00043 };
00044 typedef sequence<NamedPropertyRange> NamedPropertyRangeSeq;
00045
00046 enum QoSError_code {
00047 UNSUPPORTED_PROPERTY,
00048 UNAVAILABLE_PROPERTY,
00049 UNSUPPORTED_VALUE,
00050 UNAVAILABLE_VALUE,
00051 BAD_PROPERTY,
00052 BAD_TYPE,
00053 BAD_VALUE
00054 };
00055
00056 struct PropertyError {
00057 QoSError_code code;
00058 PropertyName name;
00059 PropertyRange available_range;
00060 };
00061 typedef sequence<PropertyError> PropertyErrorSeq;
00062
00063 exception UnsupportedQoS { PropertyErrorSeq qos_err; };
00064 exception UnsupportedAdmin { PropertyErrorSeq admin_err; };
00065
00066
00067 struct FixedEventHeader {
00068 EventType event_type;
00069 string event_name;
00070 };
00071
00072 struct EventHeader {
00073 FixedEventHeader fixed_header;
00074 OptionalHeaderFields variable_header;
00075 };
00076
00077 struct StructuredEvent {
00078 EventHeader header;
00079 FilterableEventBody filterable_data;
00080 any remainder_of_body;
00081 };
00082 typedef sequence<StructuredEvent> EventBatch;
00083
00084
00085
00086
00087
00088
00089
00090 const string EventReliability = "EventReliability";
00091 const short BestEffort = 0;
00092 const short Persistent = 1;
00093
00094 const string ConnectionReliability = "ConnectionReliability";
00095
00096
00097 const string Priority = "Priority";
00098 const short LowestPriority = -32767;
00099 const short HighestPriority = 32767;
00100 const short DefaultPriority = 0;
00101
00102 const string StartTime = "StartTime";
00103
00104
00105 const string StopTime = "StopTime";
00106
00107
00108 const string Timeout = "Timeout";
00109
00110
00111 const string OrderPolicy = "OrderPolicy";
00112 const short AnyOrder = 0;
00113 const short FifoOrder = 1;
00114 const short PriorityOrder = 2;
00115 const short DeadlineOrder = 3;
00116
00117 const string DiscardPolicy = "DiscardPolicy";
00118
00119 const short LifoOrder = 4;
00120
00121 const string MaximumBatchSize = "MaximumBatchSize";
00122
00123
00124 const string PacingInterval = "PacingInterval";
00125
00126
00127 const string StartTimeSupported = "StartTimeSupported";
00128
00129
00130 const string StopTimeSupported = "StopTimeSupported";
00131
00132
00133 const string MaxEventsPerConsumer = "MaxEventsPerConsumer";
00134
00135
00136 interface QoSAdmin {
00137
00138 QoSProperties get_qos();
00139
00140 void set_qos ( in QoSProperties qos)
00141 raises ( UnsupportedQoS );
00142
00143 void validate_qos (
00144 in QoSProperties required_qos,
00145 out NamedPropertyRangeSeq available_qos )
00146 raises ( UnsupportedQoS );
00147
00148 };
00149
00150
00151
00152
00153
00154
00155 const string MaxQueueLength = "MaxQueueLength";
00156
00157
00158 const string MaxConsumers = "MaxConsumers";
00159
00160
00161 const string MaxSuppliers = "MaxSuppliers";
00162
00163
00164 const string RejectNewEvents = "RejectNewEvents";
00165
00166
00167 interface AdminPropertiesAdmin {
00168
00169 AdminProperties get_admin();
00170
00171 void set_admin (in AdminProperties admin)
00172 raises ( UnsupportedAdmin);
00173
00174 };
00175
00176 };
00177
00178 #endif