blob: 977cc3bd5314d182722ca7c6f6747c180b91b181 [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_NOTIFY_FILTER_IDL_
#define _COS_NOTIFY_FILTER_IDL_
#include "CosNotifyComm.idl"
#pragma prefix "omg.org"
module CosNotifyFilter {
typedef long ConstraintID;
struct ConstraintExp {
CosNotification::EventTypeSeq event_types;
string constraint_expr;
};
typedef sequence<ConstraintID> ConstraintIDSeq;
typedef sequence<ConstraintExp> ConstraintExpSeq;
struct ConstraintInfo {
ConstraintExp constraint_expression;
ConstraintID constraint_id;
};
typedef sequence<ConstraintInfo> ConstraintInfoSeq;
struct MappingConstraintPair {
ConstraintExp constraint_expression;
any result_to_set;
};
typedef sequence<MappingConstraintPair> MappingConstraintPairSeq;
struct MappingConstraintInfo {
ConstraintExp constraint_expression;
ConstraintID constraint_id;
any value;
};
typedef sequence<MappingConstraintInfo> MappingConstraintInfoSeq;
typedef long CallbackID;
typedef sequence<CallbackID> CallbackIDSeq;
exception UnsupportedFilterableData {};
exception InvalidGrammar {};
exception InvalidConstraint {ConstraintExp constr;};
exception DuplicateConstraintID {ConstraintID id;};
exception ConstraintNotFound {ConstraintID id;};
exception CallbackNotFound {};
exception InvalidValue {ConstraintExp constr; any value;};
interface Filter {
readonly attribute string constraint_grammar;
ConstraintInfoSeq add_constraints (
in ConstraintExpSeq constraint_list)
raises (InvalidConstraint);
void modify_constraints (
in ConstraintIDSeq del_list,
in ConstraintInfoSeq modify_list)
raises (InvalidConstraint, ConstraintNotFound);
ConstraintInfoSeq get_constraints(
in ConstraintIDSeq id_list)
raises (ConstraintNotFound);
ConstraintInfoSeq get_all_constraints();
void remove_all_constraints();
void destroy();
boolean match ( in any filterable_data )
raises (UnsupportedFilterableData);
boolean match_structured (
in CosNotification::StructuredEvent filterable_data )
raises (UnsupportedFilterableData);
boolean match_typed (
in CosNotification::PropertySeq filterable_data )
raises (UnsupportedFilterableData);
CallbackID attach_callback (
in CosNotifyComm::NotifySubscribe callback);
void detach_callback ( in CallbackID callback)
raises ( CallbackNotFound );
CallbackIDSeq get_callbacks();
}; // Filter
interface MappingFilter {
readonly attribute string constraint_grammar;
readonly attribute CORBA::TypeCode value_type;
readonly attribute any default_value;
MappingConstraintInfoSeq add_mapping_constraints (
in MappingConstraintPairSeq pair_list)
raises (InvalidConstraint, InvalidValue);
void modify_mapping_constraints (
in ConstraintIDSeq del_list,
in MappingConstraintInfoSeq modify_list)
raises (InvalidConstraint, InvalidValue,
ConstraintNotFound);
MappingConstraintInfoSeq get_mapping_constraints (
in ConstraintIDSeq id_list)
raises (ConstraintNotFound);
MappingConstraintInfoSeq get_all_mapping_constraints();
void remove_all_mapping_constraints();
void destroy();
boolean match (
in any filterable_data,
out any result_to_set )
raises (UnsupportedFilterableData);
boolean match_structured (
in CosNotification::StructuredEvent filterable_data,
out any result_to_set)
raises (UnsupportedFilterableData);
boolean match_typed (
in CosNotification::PropertySeq filterable_data,
out any result_to_set)
raises (UnsupportedFilterableData);
}; // MappingFilter
interface FilterFactory {
Filter create_filter ( in string constraint_grammar)
raises (InvalidGrammar);
MappingFilter create_mapping_filter (
in string constraint_grammar,
in any default_value)
raises(InvalidGrammar);
}; // FilterFactory
typedef long FilterID;
typedef sequence<FilterID> FilterIDSeq;
exception FilterNotFound {};
interface FilterAdmin {
FilterID add_filter ( in Filter new_filter );
void remove_filter ( in FilterID filter ) raises ( FilterNotFound );
Filter get_filter ( in FilterID filter ) raises ( FilterNotFound );
FilterIDSeq get_all_filters();
void remove_all_filters();
}; // FilterAdmin
}; // CosNotifyFilter
#endif /* _COS_NOTIFY_FILTER_IDL_ */