org.openorb.notify.impl

Class ProxyPushSupplierImpl

public class ProxyPushSupplierImpl extends ProxyPushSupplierPOA implements EventDispatcher, ConsumerProxyManagement, PersistenceManagement

The FilterFactory interface defines operations for creating filter objects. This filter objects will be persistent if the connection reliability is set to persistent.

Author: Olivier Modica

Constructor Summary
ProxyPushSupplierImpl(ConsumerAdminImpl consumerAdmin, int pushSupplierId, int adminId, Property[] qosProperties, Logger logger)
Default constructor
ProxyPushSupplierImpl(ConsumerAdminImpl consumerAdmin, ProxySupplier pssProxySupplier, Logger logger)
Constructor -- used for recovery only
Method Summary
intadd_filter(Filter new_filter)
The add_filter operation accepts as input the reference to an object supporting the Filter interface.
voidconnect_any_push_consumer(PushConsumer push_consumer)
The connect_any_push_consumer operation accepts as an input parameter the reference to an object supporting the PushConsumer interface defined within the CosEventComm module.
voiddisconnect_push_supplier()
The disconnect_push_supplier operation is invoked to terminate a connection between the target PushSupplier, and its associated consumer.
voiddispatchEvent(Object event)
New event available
StringgetId()
Get the ID ( ChannelID + ConsumerAdminID + ProxySupplierID ) of the proxy
byte[]getPid()
Returns the pid of the persistent/transient object
int[]get_all_filters()
The get_all_filters operation accepts no input parameters, and returns the list of unique identifiers which correspond to all of the filters currently associated with the target object.
Filterget_filter(int filter)
The get_filter operation accepts as input a numeric identifier that is intended to correspond to one of the filter objects currently associated with the target object.
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).
MappingFilterlifetime_filter()
The lifetime_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module.
voidlifetime_filter(MappingFilter value)
The lifetime_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module.
ConsumerAdminMyAdmin()
The MyAdmin attribute is a readonly attribute that should be set upon creation of each proxy supplier instance to maintain the reference of the instance supporting the ConsumerAdmin interface that created it.
ProxyTypeMyType()
The MyType attribute is a readonly attribute that should be set upon creation of each proxy supplier instance to indicate the specific type of proxy supplier the instance represents.Enumerations are possible to distinguish the type of proxy supplier among the following possibilities: ProxyPushSupplier, ProxyPullSupplier, StructuredProxyPushSupplier, StructuredProxyPullSupplier, SequenceProxyPushSupplier, SequenceProxyPullSupplier.
EventType[]obtain_offered_types(ObtainInfoMode mode)
The obtain_offered_types operation returns a list of event type names.
MappingFilterpriority_filter()
The priority_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module.
voidpriority_filter(MappingFilter value)
The priority_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module.
voidremove_all_filters()
The remove_all_filters operation accepts no input parameters, and removes all filter objects from the list of those currently associated with the target object.
voidremove_filter(int filter)
The remove_filter operation accepts as input a numeric value that is intended to be the unique identifier of a filter object that is currently associated with the target object.
voidreportClientDisconnection()
This method is invoked when the client returns an unexpected Disconnected exception.
voidreportEventDelivery(int eventPid)
An event has been delivered or discarded
voidresume_connection()
The resume_connection operation causes the target object supporting the StructuredProxyPushSupplier interface to resume sending events to the StructuredPushConsumer instance connected to it.
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.
voidsubscription_change(EventType[] added, EventType[] removed)
The subscription_change operation takes as input two sequences of event type names: the first specifying those event types which the associated Consumer wants to add to its subscription list, and the second specifying those event types which the associated consumer wants to remove from its subscription list.
voidsuspend_connection()
The suspend_connection operation causes the target object supporting the StructuredProxyPushSupplier interface to stop sending events to the StructuredPushConsumer instance connected to it.
voidvalidate_event_qos(Property[] required_qos, NamedPropertyRangeSeqHolder available_qos)
The validate_event_qos operation accepts as input a sequence of QoS property name-value pairs which specify a set of QoS settings that a client is interested in setting on a per-event basis.
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

ProxyPushSupplierImpl

public ProxyPushSupplierImpl(ConsumerAdminImpl consumerAdmin, int pushSupplierId, int adminId, Property[] qosProperties, Logger logger)
Default constructor

ProxyPushSupplierImpl

public ProxyPushSupplierImpl(ConsumerAdminImpl consumerAdmin, ProxySupplier pssProxySupplier, Logger logger)
Constructor -- used for recovery only

Method Detail

add_filter

public int add_filter(Filter new_filter)
The add_filter operation accepts as input the reference to an object supporting the Filter interface. The affect of this operation is that the input filter object is appended to the list of filter objects associated with the target object upon which the operation was invoked. The operation associates with the newly added filter object a numeric identifier that is unique among all filter objects currently associated with the target, and returns that value as the result of the operation.

Parameters: new_filter filter to add

Returns: filter id

connect_any_push_consumer

public void connect_any_push_consumer(PushConsumer push_consumer)
The connect_any_push_consumer operation accepts as an input parameter the reference to an object supporting the PushConsumer interface defined within the CosEventComm module. This reference is that of a consumer which will receive events from the channel with which the target object is associated in the form of untyped Anys. This operation is thus invoked in order to establish a connection between a push-style consumer of events in the form of Anys, and the notification channel. Once established, the ProxyPushSupplier will proceed to send events destined for the consumer to it by invoking its push operation. If the target object of this operation is already connected to a push consumer object, the AlreadyConnected exception will be raised. An implementation of the ProxyPushSupplier interface may impose additional requirements on the interface supported by a push consumer (e.g., it may be designed to invoke some operation other than push in order to transmit events). If the push consumer being connected does not meet those requirements, this operation raises the TypeError exception. Note that because the PushConsumer interface defined in the CosNotifyComm module inherits from the PushConsumer interface defined in the CosEventComm module, the input parameter to this operation could be either a pure event service style, or a notification service style push consumer. The only difference between the two are that the latter also supports the NotifyPublish interface, and thus can be the target of offer_change invocations. The implementation of the ProxyPushSupplier interface should attempt to narrow the input parameter to CosNotifyComm::PushConsumer in order to determine which style of push consumer is connecting to it.

disconnect_push_supplier

public void disconnect_push_supplier()
The disconnect_push_supplier operation is invoked to terminate a connection between the target PushSupplier, and its associated consumer. This operation takes no input parameters and returns no values. The result of this operation is that the target PushSupplier will release all resources it had allocated to support the connection, and dispose its own object reference.

dispatchEvent

public void dispatchEvent(Object event)
New event available

getId

public String getId()
Get the ID ( ChannelID + ConsumerAdminID + ProxySupplierID ) of the proxy

getPid

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

get_all_filters

public int[] get_all_filters()
The get_all_filters operation accepts no input parameters, and returns the list of unique identifiers which correspond to all of the filters currently associated with the target object.

Returns: Array of all filters's id

get_filter

public Filter get_filter(int filter)
The get_filter operation accepts as input a numeric identifier that is intended to correspond to one of the filter objects currently associated with the target object. If this is the case, the object reference of the corresponding filter object is returned. Otherwise, the FilterNotFound exception is raised.

Parameters: filter Id of the filter to get

Returns: The filter object

Throws: org.omg.CosNotifyFilter.FilterNotFound Id doesn't match to any filter

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

lifetime_filter

public MappingFilter lifetime_filter()
The lifetime_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module. Such an object encapsulates a list of constraint-value pairs, where each constraint is a boolean expression based on the type and contents of an event, and the value is a possible lifetime setting for the event. Upon receipt of each event by a proxy supplier object whose lifetime_filter attribute contains a non-nil reference, the proxy supplier will invoke the appropriate variant of the match operation supported by the mapping filter object. The mapping filter object will proceed to apply its encapsulated constraints to the event, and return the one with the highest associated lifetime setting which evaluates to TRUE, or else its associated default_value if no constraints evaluate to TRUE. Upon return from the match operation, if the output parameter is TRUE, the proxy supplier treats the event with respect to its lifetime according to the return value, as opposed to a lifetime setting contained within the event. If the output parameter is FALSE, the proxy supplier will treat the event with respect to its lifetime according to the value set for the lifetime property in the event header if this property is present, otherwise it will use the output parameter returned from the match operation (i.e., the default value of the mapping filter object).

Returns: Lifetime_filter of the proxy

lifetime_filter

public void lifetime_filter(MappingFilter value)
The lifetime_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module. Such an object encapsulates a list of constraint-value pairs, where each constraint is a boolean expression based on the type and contents of an event, and the value is a possible lifetime setting for the event. Upon receipt of each event by a proxy supplier object whose lifetime_filter attribute contains a non-nil reference, the proxy supplier will invoke the appropriate variant of the match operation supported by the mapping filter object. The mapping filter object will proceed to apply its encapsulated constraints to the event, and return the one with the highest associated lifetime setting which evaluates to TRUE, or else its associated default_value if no constraints evaluate to TRUE. Upon return from the match operation, if the output parameter is TRUE, the proxy supplier treats the event with respect to its lifetime according to the return value, as opposed to a lifetime setting contained within the event. If the output parameter is FALSE, the proxy supplier will treat the event with respect to its lifetime according to the value set for the lifetime property in the event header if this property is present, otherwise it will use the output parameter returned from the match operation (i.e., the default value of the mapping filter object).

MyAdmin

public ConsumerAdmin MyAdmin()
The MyAdmin attribute is a readonly attribute that should be set upon creation of each proxy supplier instance to maintain the reference of the instance supporting the ConsumerAdmin interface that created it.

MyType

public ProxyType MyType()
The MyType attribute is a readonly attribute that should be set upon creation of each proxy supplier instance to indicate the specific type of proxy supplier the instance represents.Enumerations are possible to distinguish the type of proxy supplier among the following possibilities: ProxyPushSupplier, ProxyPullSupplier, StructuredProxyPushSupplier, StructuredProxyPullSupplier, SequenceProxyPushSupplier, SequenceProxyPullSupplier.

obtain_offered_types

public EventType[] obtain_offered_types(ObtainInfoMode mode)
The obtain_offered_types operation returns a list of event type names. Each element of the returned list names a type of event that the target proxy supplier object could potentially forward to its associated consumer. Note that through inheritance, all proxy consumer objects will support the NotifyPublish interface defined in the CosNotifyComm module. This interface supports the offer_change operation, which can be invoked by suppliers each time there is a change to the list of event types they plan to supply to their associated consumer. Thus, this mechanism relies on event suppliers keeping the channel informed of the types of events they plan to supply by invoking the offer_change operation on their associated proxy consumer object. Internally to the channel, the proxy consumers will share the information about event types that will be supplied to the channel with the proxy supplier objects associated with the channel. This enables consumers to discover the types of events that could by supplied to them by the channel by invoking the obtain_offered_types operation on their associated proxy supplier. Note that as mentioned above, consumers can also receive updates to offer information automatically by enabling the channel to invoke the offer_change operation they support through inheritence of the CosNotifyComm::NotifyPublish interface each time a supplier informs the channel of a change to the types of events they plan to supply. The obtain_offered_types operation accepts as input a flag that enables synchronization between the offer information obtain through these automatic updates, and that obtained through invocation of obtain_offered_types. The possible values and associated meanings this flag can take on are similar to those summarized in Table 3-5, except that the information being shared is offer information instead of subscription information.

Parameters: mode Mode of recuperation

Returns: All offer types

priority_filter

public MappingFilter priority_filter()
The priority_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module. Such an object encapsulates a list of constraint-value pairs, where each constraint is a boolean expression based on the type and contents of an event, and the value is a possible priority setting for the event. Upon receipt of each event by a proxy supplier object whose priority_filter attribute contains a non-nil reference, the proxy supplier will invoke the appropriate variant of the match operation supported by the mapping filter object. The mapping filter object will proceed to apply its encapsulated constraints to the event, and return the one with the highest associated priority setting which evaluates to TRUE, or else its associated default_value if no constraints evaluate to TRUE. Upon return from the match operation, if the output parameter is TRUE, the proxy supplier treats the event with respect to its priority according to the return value, as opposed to a priority setting contained within the event. If the output parameter is FALSE, the proxy supplier will treat the event with respect to its priority according to the value set for the priority property in the event header if this property is present, otherwise it will use the output parameter returned from the match operation (i.e., the default value of the mapping filter object).

priority_filter

public void priority_filter(MappingFilter value)
The priority_filter attribute contains a reference to an object supporting the MappingFilter interface defined in the CosNotifyFilter module. Such an object encapsulates a list of constraint-value pairs, where each constraint is a boolean expression based on the type and contents of an event, and the value is a possible priority setting for the event. Upon receipt of each event by a proxy supplier object whose priority_filter attribute contains a non-nil reference, the proxy supplier will invoke the appropriate variant of the match operation supported by the mapping filter object. The mapping filter object will proceed to apply its encapsulated constraints to the event, and return the one with the highest associated priority setting which evaluates to TRUE, or else its associated default_value if no constraints evaluate to TRUE. Upon return from the match operation, if the output parameter is TRUE, the proxy supplier treats the event with respect to its priority according to the return value, as opposed to a priority setting contained within the event. If the output parameter is FALSE, the proxy supplier will treat the event with respect to its priority according to the value set for the priority property in the event header if this property is present, otherwise it will use the output parameter returned from the match operation (i.e., the default value of the mapping filter object).

remove_all_filters

public void remove_all_filters()
The remove_all_filters operation accepts no input parameters, and removes all filter objects from the list of those currently associated with the target object.

remove_filter

public void remove_filter(int filter)
The remove_filter operation accepts as input a numeric value that is intended to be the unique identifier of a filter object that is currently associated with the target object. If identifier supplied does correspond to a filter object currently associated with the target object, then the corresponding filter object will be removed from the list of filters associated with the target object. Otherwise, the FilterNotFound exception will be raised.

Parameters: filter Id of the filter

Throws: org.omg.CosNotifyFilter.FilterNotFound Id doesn't match to any filter

reportClientDisconnection

public void reportClientDisconnection()
This method is invoked when the client returns an unexpected Disconnected exception. Then the proxy should invoke disconnect on itself and release all resources.

reportEventDelivery

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

resume_connection

public void resume_connection()
The resume_connection operation causes the target object supporting the StructuredProxyPushSupplier interface to resume sending events to the StructuredPushConsumer instance connected to it. This operation takes no input parameters and returns no values. If the connection has not been previously suspended using this operation by invoking suspend_connection (described above), the ConnectionAlreadyActive exception is raised. If no StructuredPushConsumer has been connected to the target object when this operation is invoked, the NotConnected exception is raised. Oatherwise, the StructuredProxyPushSupplier will resume forwarding events to the StructuredPushConsumer connected to it, including those which have been queued during the time the connection was suspended, and have not yet timed out.

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

subscription_change

public void subscription_change(EventType[] added, EventType[] removed)
The subscription_change operation takes as input two sequences of event type names: the first specifying those event types which the associated Consumer wants to add to its subscription list, and the second specifying those event types which the associated consumer wants to remove from its subscription list. This operation raises the InvalidEventType exception if one of the event type names supplied in either input parameter is syntactically invalid. If this case, the invalid name is returned in the type field of the exception. Note that each event type name is comprised of two components: the name of the domain in which the event type has meaning, and the name of the actual event type. Also note that either component of a type name may specify a complete domain/event type name, a domain/event type name containing the wildcard ?? character, or the special event type name %ALL described in section 2.6.5.

suspend_connection

public void suspend_connection()
The suspend_connection operation causes the target object supporting the StructuredProxyPushSupplier interface to stop sending events to the StructuredPushConsumer instance connected to it. This operation takes no input parameters and returns no values. If the connection has been previously suspended using this operation and not resumed by invoking resume_connection (described below), the ConnectionAlreadyInactive exception is raised. If no StructuredPushConsumer has been connected to the target object when this operation is invoked, the NotConnected exception is raised. Otherwise, the StructuredProxyPushSupplier will not forward events to the StructuredPushConsumer connected to it until resume_connection is subsequently invoked. During this time, the StructuredProxyPushSupplier will continue to queue events destined for the StructuredPushConsumer, although events that time out prior to resumption of the connection will be discarded. Upon resumption of the connection, all queued events will be forwarded to the StructuredPushConsumer.

validate_event_qos

public void validate_event_qos(Property[] required_qos, NamedPropertyRangeSeqHolder available_qos)
The validate_event_qos operation accepts as input a sequence of QoS property name-value pairs which specify a set of QoS settings that a client is interested in setting on a per-event basis. Note that the QoS property settings contained in the optional header fields of a Structured Event may differ from those that are configured on a given proxy object. This operation is essentially a check to see if the target proxy object will honor the setting of a set of QoS properties on a per-event basis to values that may conflict with those set on the proxy itself. If any of the requested settings would not be honored by the target object on a per-event basis, 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 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 whose setting is supported by the target object on a per- event basis and which could have been included on the input list while still resulting in a successful return from the operation. Each element also includes the range of values that would have been acceptable for each such property.

Parameters: required_qos available_qos

Throws: org.omg.CosNotification.UnsupportedQoS A Qos Properties isn't supported in this implementation

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