# CosNotifyFilter_MappingFilter

### MODULE

CosNotifyFilter_MappingFilter

### MODULE SUMMARY

This module implements the OMG CosNotifyFilter::MappingFilter interface.

### DESCRIPTION

The main purpose of this module is to match events against associated constraints and return the value for the first constraint that returns true for the given event. If all constraints return false the default value will be returned.

To get access to the record definitions for the structures use:
`-include_lib("cosNotification/include/*.hrl").`

### EXPORTS

`_get_constraint_grammar(MappingFilter) -> Grammar`

Types:

`MappingFilter = #objref`
`Grammar = string()`

This operation returns which type of Grammar the MappingFilter uses. Currently, only `"EXTENDED_TCL"` is supported.

`_get_value_type(MappingFilter) -> CORBA::TypeCode`

Types:

`MappingFilter = #objref`

This readonly attribute maintains the `CORBA::TypeCode` of the default value associated with the target object.

`_get_default_value(MappingFilter) -> #any`

Types:

`MappingFilter = #objref`

This readonly attribute maintains the `#any{}` defualt value associated with the target object.

`add_mapping_constraints(MappingFilter, MappingConstraintPairSeq) -> Reply`

Types:

`MappingFilter = #objref`
`MappingConstraintPairSeq = [MappingConstraintPair]`
`MappingConstraintPair = #'CosNotifyFilter_MappingConstraintPair'{constraint_expression, result_to_set}`
`constraint_expression = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}`
`event_types = #'CosNotification_EventTypeSeq'{}`
`constraint_expr = string()`
`result_to_set = #any`
`Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}}`
`constr = ConstraintExp`
`ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}`
`event_types = #'CosNotification_EventTypeSeq'{}`
`constraint_expr = string()`
`MappingConstraintInfoSeq = [MappingConstraintInfo]`
`MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}`
`constraint_expression = ConstraintExp`
`constraint_id = long()`
`value = #any`

This operation add new mapping constraints, which will be used when trying to override Quality of Service settings defined in the given event. If a constraint return true the associated value will be returned, otherwise the default value.

`modify_constraints(MappingFilter, ConstraintIDSeq, MappingConstraintInfoSeq) -> Reply`

Types:

`MappingFilter = #objref`
`ConstraintIDSeq = [ConstraintID]`
`ConstraintID = long()`
`MappingConstraintInfoSeq = [MappingConstraintInfo]`
`MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}`
`constraint_expression = ConstraintExp`
`constraint_id = long()`
`value = #any`
`ConstraintInfoSeq = [ConstraintInfo]`
`ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}`
`constraint_expression = ConstraintExp`
`constraint_id = long()`
`Reply = ok | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}}`
`constr = ConstraintExp`
`id = long()`
`value = #any`
`ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}`
`event_types = #'CosNotification_EventTypeSeq'{}`
`constraint_expr = string()`

The `ConstraintIDSeq` supplied should relate to constraints the caller wishes to remove. If any of the supplied Id's are not found an exception will be raised. This operation also accepts a sequence of `MappingConstraintInfo` which will be added. If the target object cannot modify the constraints as requested an exception is raised describing which constraint, and why, could not be updated.

`get_mapping_constraints(MappingFilter, ConstraintIDSeq) -> Reply`

Types:

`MappingFilter = #objref`
`ConstraintIDSeq = [ConstraintID]`
`ConstraintID = long()`
`Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}}`
`MappingConstraintInfoSeq = [MappingConstraintInfo]`
`MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}`
`constraint_expression = ConstraintExp`
`ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}`
`event_types = #'CosNotification_EventTypeSeq'{}`
`constraint_expr = string()`
`constraint_id = id = long()`
`value = #any`

When adding a new constraint a unique Id is returned, which is accepted as input for this operation. The associated constraint is returned, but if no such Id exists an exception is raised.

`get_all_mapping_constraints(MappingFilter) -> MappingConstraintInfoSeq`

Types:

`MappingFilter = #objref`
`MappingConstraintInfoSeq = [MappingConstraintInfo]`
`MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}`
`constraint_expression = ConstraintExp`
`ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}`
`event_types = #'CosNotification_EventTypeSeq'{}`
`constraint_expr = string()`
`constraint_id = long()`
`value = #any`

This operation returns a sequence of all unique Id's associated with the target object. If no constraint have been added the sequence will be empty.

`remove_all_mapping_constraints(MappingFilter) -> ok`

Types:

`MappingFilter = #objref`

This operation removes all constraints associated with the target object.

`destroy(MappingFilter) -> ok`

Types:

`MappingFilter = #objref`

This operation terminates the target object. Remember to remove this Filter from the objects it have been associated with.

`match(MappingFilter, Event) -> Reply`

Types:

`MappingFilter = #objref`
`Event = #any`
`Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}`

This operation evaluates `Any` events with the Filter's constraints, and returns the value to use. The value is the default value if all constraints returns false and the value associated with the first constraint returning true.

`match_structured(MappingFilter, Event) -> Reply`

Types:

`MappingFilter = #objref`
`Event = #'CosNotification_StructuredEvent'{}`
`Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}`

Similar to `match/2` but accepts a structured event as input.

### AUTHORS

support - support@erlang.ericsson.se

cosNotification 1.1
Copyright © 1991-2003 Ericsson Utvecklings AB