## Quality Of Service and Admin Properties

This chapter explains the allowed properties it is possible to set for this application.

### Quality Of Service

The cosEventDomain application supports the following QoS settings:

QoS Range Default
CycleDetection AuthorizeCycles/ForbidCycles ForbidCycles
DiamondDetection AuthorizeDiamonds/ForbidDiamonds ForbidDiamonds
Supported QoS settings

Comments on the table 'Supported QoS Settings':

`CycleDetection` If a cycle is created, the user must be aware of the fact that unless they set timeout on events, events that are not filtered will loop endlessly through the topology. `DiamondDetection` A Diamond in this context, means that the same event may reach a point in the graph by more than one route (i.e. transitive). Hence, it is possible that multiple copies are delivered.

### Setting Quality Of Service

Assume we have a Consumer Admin object which we want to change the current Quality of Service. Typical usage:

`QoS = [#'CosNotification_Property' {name='CosEventDomainAdmin':'DiamondDetection'(), value=any:create(orber_tc:short(), 'CosEventDomainAdmin':'AuthorizeDiamonds'())}, #'CosNotification_Property' {name='CosEventDomainAdmin':'CycleDetection'(), value=any:create(orber_tc:short(), 'CosEventDomainAdmin':'ForbidCycles'())}], 'CosEventDomainAdmin_EventDomain':set_qos(ED, QoS),`

If it is not possible to set the requested QoS the UnsupportedQoS exception is raised, which includes a sequence of PropertyError's describing which QoS, possible range and why is not allowed. The error codes are:

UNSUPPORTED_PROPERTY - QoS not supported for this type of target object. UNAVAILABLE_PROPERTY - due to current QoS settings the given property is not allowed. UNSUPPORTED_VALUE - property value out of range; valid range is returned. UNAVAILABLE_VALUE - due to current QoS settings the given value is not allowed; valid range is returned. BAD_PROPERTY - unrecognized property. BAD_TYPE - type of supplied property is incorrect. BAD_VALUE - illegal value.

The CosEventDomainAdmin_EventDomain interface also supports an operation called validate_qos/2. The purpose of this operations is to check if a QoS setting is supported by the target object and if so, the operation returns additional properties which could be optionally added as well.

### Admin Properties

The OMG specification do not contain any definitions of Admin Properties. Hence, the cosEventDomain application currently does not support any Admin Properties.