org.openorb.notify.impl

Class EventChannelImpl

public class EventChannelImpl extends EventChannelPOA implements EventReceiver, PersistenceManagement, ChannelManagement

The EventChannel interface encapsulates the behaviors supported by a Notification Service event channel. This interface inherits from the EventChannel interface defined within the CosEventChannelAdmin module of the OMG Event Service, making an instance of the Notification Service EventChannel interface fully backward compatible with an OMG Event Service style untyped event channel. Inheritance of the EventChannel interface defined within the CosEventChannelAdmin module enables an instance of the EventChannel interface defined within the CosNotifyChannelAdmin module to create event service style ConsumerAdmin and SupplierAdmin instances. These instances can subsequently be used to create pure event service style proxy interfaces, which support connections to pure event service style suppliers and consumers. Note that while Notification Service style proxies and admin objects have unique identifiers associated with them, enabling their references to be obtained by invoking operations on the Notification Service style admin and event channel interfaces, Event Service style proxies and admin objects do not have associated unique identifiers, and thus cannot be returned by invoking an operation on the Notification Service style admin or event channel interfaces. The EventChannel interface defined within the CosNotifyChannelAdmin module also inherits from the QoSAdmin and the AdminPropertiesAdmin interfaces defined within the CosNotification module. Inheritance of these interfaces enables a Notification Service style event channel to manage lists of associated QoS and administrative properties, respectively. Locally, the EventChannel interface supports a readonly attribute which maintains a reference to the EventChannelFactory instance that created it. In addition, each instance of the EventChannel interface has an associated default ConsumerAdmin and an associated default SupplierAdmin instance, both of which exist upon creation of the channel and which have the unique identifier of zero (note that admin object identifiers only need to be unique among a given type of admin, implying that the identifiers assigned to ConsumerAdmin objects can overlap those assigned to SupplierAdmin objects). The EventChannel interface supports readonly attributes which maintain references to these default admin objects. The EventChannel interface supports operations which create new ConsumerAdmin and SupplierAdmin instances. In addition, the EventChannel interface supports operations which can return references to the ConsumerAdmin and SupplierAdmin instances associated with a given EventChannel instance, given the unique identifier of an admin object as input. Finally, the EventChannel interface supports operations which return the sequence of unique identifiers of all ConsumerAdmin and SupplierAdmin instances associated with a given EventChannel instance.

Author: Olivier Modica

Constructor Summary
EventChannelImpl(EventChannelFactoryImpl factory, ORB orb, POA poa, Property[] qosProperties, Property[] adminProperties, int channelId, Logger logger)
Default constructor
EventChannelImpl(EventChannelFactoryImpl factory, EventChannel pssEventChannel, POA poa, Logger logger)
Constructor -- used for recovery only
Method Summary
booleancanConnectConsumer()
Method invoked to check if the MaxConsumers admin property applies
booleancanConnectSupplier()
Method invoked to check if the MaxSuppliers admin property applies
booleancanDispatchNewEvent()
Method invoked to check if the MaxQueueLength admin property applies
voidconsumerAdminRecovered(int id, ConsumerAdminImpl consumerAdmin)
This method is invoked when a ConsumerAdmin was recovered
ConsumerAdmindefault_consumer_admin()
The default_consumer_admin attribute is a readonly attribute which maintains a reference to the default ConsumerAdmin instance associated with the target EventChannel instance.
FilterFactorydefault_filter_factory()
The default_filter_factory attribute is a readonly attribute which maintains an object reference to the default factory to be used by the EventChannel instance with which it's associated for creating filter objects.
SupplierAdmindefault_supplier_admin()
The default_supplier_admin attribute is a readonly attribute which maintains a reference to the default SupplierAdmin instance associated with the target EventChannel instance.
voiddestroy()
Operation destroy
ConsumerAdminfor_consumers()
Operation for_consumers
SupplierAdminfor_suppliers()
Operation for_suppliers
StringgetId()
Get the ID of the channel
ObjectgetNotifyProperty(String key)
Method invoked to get the value of a property defined in the notification module
byte[]getPid()
Returns the pid of the persistent/transient object
Property[]get_admin()
The get_admin operation takes no input parameters, and returns a sequence of name-value pairs which encapsulates the current administrative settings for the target channel.
int[]get_all_consumeradmins()
The get_all_consumeradmins operation takes no input parameters and returns a sequence of the unique identifiers assigned to all Notification Service style ConsumerAdmin instances which have been created by the target EventChannel instance.
int[]get_all_supplieradmins()
The get_all_supplieradmins operation takes no input parameters and returns a sequence of the unique identifiers assigned to all Notification Service style SupplierAdmin instances which have been created by the target EventChannel instance.
ConsumerAdminget_consumeradmin(int id)
The get_consumeradmin operation returns a reference to one of the ConsumerAdmin instances associated with the target EventChannel instance.
Property[]get_qos()
The get_qos operation takes no input parameters, and returns a sequence of name-value pairs which encapsulates the current quality of service settings for the target object (which could be an Event Channel, Admin, or Proxy object).
SupplierAdminget_supplieradmin(int id)
The get_supplieradmin operation returns a reference to one of the SupplierAdmin instances associated with the target EventChannel instance.
booleanisConsumerAdminMaxPerformance()
The methods returns true if the consumer admin threads should be configured as MaxPerformance
booleanisConsumerProxyMaxPerformance()
The methods returns true if the supplier proxy threads should be configured as MaxPerformance
booleanisEventQueueLogged()
TODO
booleanisFilterEvaluationLogged()
TODO
booleanisQueueMaxPerformance()
The methods returns true if the event queue should be configured as MaxPerformance
booleanisSupplierAdminMaxPerformance()
The methods returns true if the supplier admin threads should be configured as MaxPerformance
booleanisSupplierProxyMaxPerformance()
The methods returns true if the consumer proxy threads should be configured as MaxPerformance
EventChannelFactoryMyFactory()
The MyFactory attribute is a readonly attribute which maintains the object reference of the event channel factory that created a given Notification Service EventChannel instance.
ConsumerAdminnew_for_consumers(InterFilterGroupOperator op, IntHolder id)
The new_for_consumers operation is invoked to create a new Notification Service style ConsumerAdmin instance.
SupplierAdminnew_for_suppliers(InterFilterGroupOperator op, IntHolder id)
The new_for_suppliers operation is invoked to create a new Notification Service style SupplierAdmin instance.
voidreceiveEvent(Object event)
New event available
voidreportConsumerAdminDestruction(byte[] adminPid)
A consumer admin has been destroyed
voidreportConsumerConnection()
A proxy consumer has been created
voidreportConsumerDisconnection()
A proxy consumer has been destroyed
voidreportEventDelivery(int consumerAdminId, int eventPid)
An event has been delivered or discarded
voidreportEventTypesPublished(EventType[] published, EventType[] unpublished, Object source)
Method invoked when an EventType is being subscribed by a consumer.
voidreportEventTypesSubscribed(EventType[] subscribed, EventType[] unsubscribed, Object source)
Method invoked when an EventType is being subscribed by a consumer
voidreportSupplierAdminDestruction(byte[] adminPid)
A supplier admin has been destroyed
voidreportSupplierConnection()
A proxy supplier has been created
voidreportSupplierDisconnection()
A proxy supplier has been destroyed
voidset_admin(Property[] admin)
The set_admin operation takes as an input parameter a sequence of name-value pairs which encapsulates administrative property settings that a client is requesting that the target channel support.
voidset_qos(Property[] qos)
The set_qos operation takes as an input parameter a sequence of name-value pairs which encapsulates quality of service property settings that a client is requesting that the target object (which could be an Event Channel, Admin, or Proxy object) support as its default quality of service.
voidsupplierAdminRecovered(int id, SupplierAdminImpl supplierAdmin)
This method is invoked when a SupplierAdmin was recovered
voidvalidate_qos(Property[] required_qos, NamedPropertyRangeSeqHolder available_qos)
The validate_qos operation accepts as input a sequence of QoS property name-value pairs which specify a set of QoS settings that a client would like to know if the target object is capable of supporting.

Constructor Detail

EventChannelImpl

public EventChannelImpl(EventChannelFactoryImpl factory, ORB orb, POA poa, Property[] qosProperties, Property[] adminProperties, int channelId, Logger logger)
Default constructor

EventChannelImpl

public EventChannelImpl(EventChannelFactoryImpl factory, EventChannel pssEventChannel, POA poa, Logger logger)
Constructor -- used for recovery only

Method Detail

canConnectConsumer

public boolean canConnectConsumer()
Method invoked to check if the MaxConsumers admin property applies

canConnectSupplier

public boolean canConnectSupplier()
Method invoked to check if the MaxSuppliers admin property applies

canDispatchNewEvent

public boolean canDispatchNewEvent()
Method invoked to check if the MaxQueueLength admin property applies

consumerAdminRecovered

public void consumerAdminRecovered(int id, ConsumerAdminImpl consumerAdmin)
This method is invoked when a ConsumerAdmin was recovered

default_consumer_admin

public ConsumerAdmin default_consumer_admin()
The default_consumer_admin attribute is a readonly attribute which maintains a reference to the default ConsumerAdmin instance associated with the target EventChannel instance. Each EventChannel instance has an associated default ConsumerAdmin instance, which exists upon creation of the channel and is assigned the unique identifier of zero. Subsequently, clients can create additional Event Service style ConsumerAdmin instances by invoking the inherited for_consumers operation, and additional Notification Service style ConsumerAdmin instances by invoking the new_for_consumers operation defined by the EventChannel interface.

Returns: the default consumer admin

default_filter_factory

public FilterFactory default_filter_factory()
The default_filter_factory attribute is a readonly attribute which maintains an object reference to the default factory to be used by the EventChannel instance with which it's associated for creating filter objects. If the target channel does not support a default filter factory, the attribute will maintain the value of OBJECT_NIL.

Returns: the default filter factory

default_supplier_admin

public SupplierAdmin default_supplier_admin()
The default_supplier_admin attribute is a readonly attribute which maintains a reference to the default SupplierAdmin instance associated with the target EventChannel instance. Each EventChannel instance has an associated default SupplierAdmin instance, which exists upon creation of the channel and is assigned the unique identifier of zero. Subsequently, clients can create additional Event Service style SupplierAdmin instances by invoking the inherited for_suppliers operation, and additional Notification Service style SupplierAdmin instances by invoking the new_for_suppliers operation defined by the EventChannel interface.

Returns: the default supplier admin

destroy

public void destroy()
Operation destroy

for_consumers

public ConsumerAdmin for_consumers()
Operation for_consumers

for_suppliers

public SupplierAdmin for_suppliers()
Operation for_suppliers

getId

public String getId()
Get the ID of the channel

getNotifyProperty

public Object getNotifyProperty(String key)
Method invoked to get the value of a property defined in the notification module

getPid

public byte[] getPid()
Returns the pid of the persistent/transient object

get_admin

public Property[] get_admin()
The get_admin operation takes no input parameters, and returns a sequence of name-value pairs which encapsulates the current administrative settings for the target channel.

Returns: All Admin Properties

get_all_consumeradmins

public int[] get_all_consumeradmins()
The get_all_consumeradmins operation takes no input parameters and returns a sequence of the unique identifiers assigned to all Notification Service style ConsumerAdmin instances which have been created by the target EventChannel instance.

Returns: Array of all consumer admin ID

get_all_supplieradmins

public int[] get_all_supplieradmins()
The get_all_supplieradmins operation takes no input parameters and returns a sequence of the unique identifiers assigned to all Notification Service style SupplierAdmin instances which have been created by the target EventChannel instance.

Returns: Array of all supplier admin ID

get_consumeradmin

public ConsumerAdmin get_consumeradmin(int id)
The get_consumeradmin operation returns a reference to one of the ConsumerAdmin instances associated with the target EventChannel instance. The operation accepts as an input parameter a numeric value which is intended to be the unique identifier of one of the ConsumerAdmin instances associated with the target EventChannel instance. If this turns out to be the case, the object reference of the associated ConsumerAdmin instance is returned as the operation result. Otherwise, the AdminNotFound exception is raised. Note that while a Notification Service style event channel can support both Event Service and Notification Service style ConsumerAdmin instances, only Notification Service style ConsumerAdmin instances have associated unique identifiers.

Parameters: id Id of consumer admin to retreive

Returns: The requested consumer admin

Throws: org.omg.CosNotifyChannelAdmin.AdminNotFound Id doesn't correspond to any consumer admin

get_qos

public Property[] get_qos()
The get_qos operation takes no input parameters, and returns a sequence of name-value pairs which encapsulates the current quality of service settings for the target object (which could be an Event Channel, Admin, or Proxy object).

Returns: Object QosProperties

get_supplieradmin

public SupplierAdmin get_supplieradmin(int id)
The get_supplieradmin operation returns a reference to one of the SupplierAdmin instances associated with the target EventChannel instance. The operation accepts as an input parameter a numeric value which is intended to be the unique identifier of one of the SupplierAdmin instances associated with the target EventChannel instance. If this turns out to be the case, the object reference of the associated SupplierAdmin instance is returned as the operation result. Otherwise, the AdminNotFound exception is raised. Note that while a Notification Service style event channel can support both Event Service and Notification Service style SupplierAdmin instances, only Notification Service style SupplierAdmin instances have associated unique identifiers.

Parameters: id Id of supplier admin to retreive

Returns: The requested supplier admin

Throws: org.omg.CosNotifyChannelAdmin.AdminNotFound Id doesn't correspond to any supplier admin

isConsumerAdminMaxPerformance

public boolean isConsumerAdminMaxPerformance()
The methods returns true if the consumer admin threads should be configured as MaxPerformance

isConsumerProxyMaxPerformance

public boolean isConsumerProxyMaxPerformance()
The methods returns true if the supplier proxy threads should be configured as MaxPerformance

isEventQueueLogged

public boolean isEventQueueLogged()
TODO

isFilterEvaluationLogged

public boolean isFilterEvaluationLogged()
TODO

isQueueMaxPerformance

public boolean isQueueMaxPerformance()
The methods returns true if the event queue should be configured as MaxPerformance

isSupplierAdminMaxPerformance

public boolean isSupplierAdminMaxPerformance()
The methods returns true if the supplier admin threads should be configured as MaxPerformance

isSupplierProxyMaxPerformance

public boolean isSupplierProxyMaxPerformance()
The methods returns true if the consumer proxy threads should be configured as MaxPerformance

MyFactory

public EventChannelFactory MyFactory()
The MyFactory attribute is a readonly attribute which maintains the object reference of the event channel factory that created a given Notification Service EventChannel instance.

Returns: Channel's factory

new_for_consumers

public ConsumerAdmin new_for_consumers(InterFilterGroupOperator op, IntHolder id)
The new_for_consumers operation is invoked to create a new Notification Service style ConsumerAdmin instance. The operation accepts as an input parameter a boolean flag which indicates whether AND or OR semantics will be used when combining the filter objects associated with the newly created ConsumerAdmin instance with those associated with a supplier proxy which was created by the ConsumerAdmin during the evaluation of each event against a set of filter objects. The new instance is assigned a unique identifier by the target EventChannel instance that is unique among all ConsumerAdmin instances currently associated with the channel. Upon completion, the operation returns the reference to the new ConsumerAdmin instance as the result of the operation, and the unique identifier assigned to the new ConsumerAdmin instance as the output parameter.

Parameters: op Operator of Filters' composition (between consumer filters and proxies filters) id Id of the new consumer admin

Returns: The new consumer Admin

new_for_suppliers

public SupplierAdmin new_for_suppliers(InterFilterGroupOperator op, IntHolder id)
The new_for_suppliers operation is invoked to create a new Notification Service style SupplierAdmin instance. The operation accepts as an input parameter a boolean flag which indicates whether AND or OR semantics will be used when combining the filter objects associated with the newly created SupplierAdmin instance with those associated with a consumer proxy which was created by the SupplierAdmin during the evaluation of each event against a set of filter objects. The new instance is assigned a unique identifier by the target EventChannel instance that is unique among all SupplierAdmin instances currently associated with the channel. Upon completion, the operation returns the reference to the new SupplierAdmin instance as the result of the operation, and the unique identifier assigned to the new SupplierAdmin instance as the output parameter.

Parameters: op Operator of Filters' composition (between supplier filters and proxies filters) id Id of the new consumer admin

Returns: The new supplier Admin

receiveEvent

public void receiveEvent(Object event)
New event available

reportConsumerAdminDestruction

public void reportConsumerAdminDestruction(byte[] adminPid)
A consumer admin has been destroyed

reportConsumerConnection

public void reportConsumerConnection()
A proxy consumer has been created

reportConsumerDisconnection

public void reportConsumerDisconnection()
A proxy consumer has been destroyed

reportEventDelivery

public void reportEventDelivery(int consumerAdminId, int eventPid)
An event has been delivered or discarded

reportEventTypesPublished

public void reportEventTypesPublished(EventType[] published, EventType[] unpublished, Object source)
Method invoked when an EventType is being subscribed by a consumer. At this point, published and unpublished lists should not have the same event types.

reportEventTypesSubscribed

public void reportEventTypesSubscribed(EventType[] subscribed, EventType[] unsubscribed, Object source)
Method invoked when an EventType is being subscribed by a consumer

reportSupplierAdminDestruction

public void reportSupplierAdminDestruction(byte[] adminPid)
A supplier admin has been destroyed

reportSupplierConnection

public void reportSupplierConnection()
A proxy supplier has been created

reportSupplierDisconnection

public void reportSupplierDisconnection()
A proxy supplier has been destroyed

set_admin

public void set_admin(Property[] admin)
The set_admin operation takes as an input parameter a sequence of name-value pairs which encapsulates administrative property settings that a client is requesting that the target channel support. If the implementation of the target object is not capable of supporting any of the requested administrative property settings, the UnsupportedAdmin exception is raised. This exception has associated with it a list of name-value pairs of which each name identifies an administrative property whose requested setting could not be satisfied, and each associated value the closest setting for that property which could be satisfied.

Parameters: admin Array of admin property

Throws: org.omg.CosNotification.UnsupportedAdmin If implementation doesn't support a property

set_qos

public void set_qos(Property[] qos)
The set_qos operation takes as an input parameter a sequence of name-value pairs which encapsulates quality of service property settings that a client is requesting that the target object (which could be an Event Channel, Admin, or Proxy object) support as its default quality of service. If the implementation of the target object is not capable of supporting any of the requested quality of service settings, or if any of the requested settings would be in conflict with a QoS property defined at a higher level of the object hierarchy with respect to QoS , the UnsupportedQoS exception is raised. This exception contains as data a sequence of data structures, each of which identifies the name of a QoS property in the input list whose requested setting could not be satisfied, along with an error code and a range of settings for the property which could be satisfied. The meanings of the error codes which might be returned are described in Table 2-5 of CosNotification Service specification

Parameters: qos QosProperties to assign to object

Throws: org.omg.CosNotification.UnsupportedQoS

supplierAdminRecovered

public void supplierAdminRecovered(int id, SupplierAdminImpl supplierAdmin)
This method is invoked when a SupplierAdmin was recovered

validate_qos

public void validate_qos(Property[] required_qos, NamedPropertyRangeSeqHolder available_qos)
The validate_qos operation accepts as input a sequence of QoS property name-value pairs which specify a set of QoS settings that a client would like to know if the target object is capable of supporting. If the any of the requested settings could not be satisfied by the target object, the operation raises the UnsupportedQoS exception. This exception contains as data a sequence of data structures, each of which identifies the name of a QoS property in the input list whose requested setting could not be satisfied, along with an error code and a range of settings for the property which could be satisfied. The meanings of the error codes which might be returned are described in Table 2-5. If all requested QoS property value settings could be satisfied by the target object, the operation returns successfully (without actually setting the QoS properties on the target object) with an output parameter that contains a sequence of PropertyRange data structures. Each element in this sequence includes the name of a an additional QoS property supported by the target object which could have been included on the input list and resulted in a successful return from the operation., along with the range of values that would have been acceptable for each such property.

Parameters: required_qos available_qos

Throws: org.omg.CosNotification.UnsupportedQoS