00001
00002
00003
00004 #ifndef _COS_NOTIFY_FILTER_IDL_
00005 #define _COS_NOTIFY_FILTER_IDL_
00006
00007
00008
00009 #pragma prefix "omg.org"
00010
00011 #include <CosNotifyComm.idl>
00012
00013 module CosNotifyFilter {
00014
00015 typedef long ConstraintID;
00016
00017 struct ConstraintExp {
00018 CosNotification::EventTypeSeq event_types;
00019 string constraint_expr;
00020 };
00021
00022 typedef sequence<ConstraintID> ConstraintIDSeq;
00023 typedef sequence<ConstraintExp> ConstraintExpSeq;
00024
00025 struct ConstraintInfo {
00026 ConstraintExp constraint_expression;
00027 ConstraintID constraint_id;
00028 };
00029
00030 typedef sequence<ConstraintInfo> ConstraintInfoSeq;
00031
00032 struct MappingConstraintPair {
00033 ConstraintExp constraint_expression;
00034 any result_to_set;
00035 };
00036
00037 typedef sequence<MappingConstraintPair> MappingConstraintPairSeq;
00038
00039 struct MappingConstraintInfo {
00040 ConstraintExp constraint_expression;
00041 ConstraintID constraint_id;
00042 any value;
00043 };
00044
00045 typedef sequence<MappingConstraintInfo> MappingConstraintInfoSeq;
00046
00047 typedef long CallbackID;
00048 typedef sequence<CallbackID> CallbackIDSeq;
00049
00050 exception UnsupportedFilterableData {};
00051 exception InvalidGrammar {};
00052 exception InvalidConstraint {ConstraintExp constr;};
00053 exception DuplicateConstraintID {ConstraintID id;};
00054
00055 exception ConstraintNotFound {ConstraintID id;};
00056 exception CallbackNotFound {};
00057
00058 exception InvalidValue {ConstraintExp constr; any value;};
00059
00060 interface Filter {
00061
00062 readonly attribute string constraint_grammar;
00063
00064 ConstraintInfoSeq add_constraints (
00065 in ConstraintExpSeq constraint_list)
00066 raises (InvalidConstraint);
00067
00068 void modify_constraints (
00069 in ConstraintIDSeq del_list,
00070 in ConstraintInfoSeq modify_list)
00071 raises (InvalidConstraint, ConstraintNotFound);
00072
00073 ConstraintInfoSeq get_constraints(
00074 in ConstraintIDSeq id_list)
00075 raises (ConstraintNotFound);
00076
00077 ConstraintInfoSeq get_all_constraints();
00078
00079 void remove_all_constraints();
00080
00081 void destroy();
00082
00083 boolean match ( in any filterable_data )
00084 raises (UnsupportedFilterableData);
00085
00086 boolean match_structured (
00087 in CosNotification::StructuredEvent filterable_data )
00088 raises (UnsupportedFilterableData);
00089
00090 boolean match_typed (
00091 in CosNotification::PropertySeq filterable_data )
00092 raises (UnsupportedFilterableData);
00093
00094 CallbackID attach_callback (
00095 in CosNotifyComm::NotifySubscribe callback);
00096
00097 void detach_callback ( in CallbackID callback)
00098 raises ( CallbackNotFound );
00099
00100 CallbackIDSeq get_callbacks();
00101
00102 };
00103
00104 interface MappingFilter {
00105
00106 readonly attribute string constraint_grammar;
00107
00108 readonly attribute CORBA::TypeCode value_type;
00109
00110 readonly attribute any default_value;
00111
00112 MappingConstraintInfoSeq add_mapping_constraints (
00113 in MappingConstraintPairSeq pair_list)
00114 raises (InvalidConstraint, InvalidValue);
00115
00116 void modify_mapping_constraints (
00117 in ConstraintIDSeq del_list,
00118 in MappingConstraintInfoSeq modify_list)
00119 raises (InvalidConstraint, InvalidValue,
00120 ConstraintNotFound);
00121
00122 MappingConstraintInfoSeq get_mapping_constraints (
00123 in ConstraintIDSeq id_list)
00124 raises (ConstraintNotFound);
00125
00126 MappingConstraintInfoSeq get_all_mapping_constraints();
00127
00128 void remove_all_mapping_constraints();
00129
00130 void destroy();
00131
00132 boolean match ( in any filterable_data,
00133 out any result_to_set )
00134 raises (UnsupportedFilterableData);
00135
00136 boolean match_structured (
00137 in CosNotification::StructuredEvent filterable_data,
00138 out any result_to_set)
00139 raises (UnsupportedFilterableData);
00140
00141 boolean match_typed (
00142 in CosNotification::PropertySeq filterable_data,
00143 out any result_to_set)
00144 raises (UnsupportedFilterableData);
00145
00146 };
00147
00148 interface FilterFactory {
00149
00150 Filter create_filter (
00151 in string constraint_grammar)
00152 raises (InvalidGrammar);
00153
00154 MappingFilter create_mapping_filter (
00155 in string constraint_grammar,
00156 in any default_value)
00157 raises(InvalidGrammar);
00158
00159 };
00160
00161 typedef long FilterID;
00162 typedef sequence<FilterID> FilterIDSeq;
00163
00164 exception FilterNotFound {};
00165
00166 interface FilterAdmin {
00167
00168 FilterID add_filter ( in Filter new_filter );
00169
00170 void remove_filter ( in FilterID filter )
00171 raises ( FilterNotFound );
00172
00173 Filter get_filter ( in FilterID filter )
00174 raises ( FilterNotFound );
00175
00176 FilterIDSeq get_all_filters();
00177
00178 void remove_all_filters();
00179
00180 };
00181
00182 };
00183
00184 #endif