org.openorb.notify.impl
Class StructuredProxyPullSupplierImpl
public
class
StructuredProxyPullSupplierImpl
extends StructuredProxyPullSupplierPOA
implements EventDispatcher, ConsumerProxyManagement, PersistenceManagement
Method Summary |
int | add_filter(Filter new_filter)
The add_filter operation accepts as input the reference to an object supporting the
Filter interface. |
void | connect_structured_pull_consumer(StructuredPullConsumer pull_consumer)
The connect_structured_pull_consumer operation accepts as an input parameter the
reference to an object supporting the StructuredPullConsumer interface defined
within the CosNotifyComm module. |
void | disconnect_structured_pull_supplier()
The disconnect_structured_pull_supplier operation is invoked to terminate a
connection between the target StructuredPullSupplier, and its associated consumer.
|
void | dispatchEvent(Object event)
New event available |
String | getId()
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.
|
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.
|
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).
|
MappingFilter | lifetime_filter()
The lifetime_filter attribute contains a reference to an object supporting the
MappingFilter interface defined in the CosNotifyFilter module. |
void | lifetime_filter(MappingFilter value)
The lifetime_filter attribute contains a reference to an object supporting the
MappingFilter interface defined in the CosNotifyFilter module. |
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.
|
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. |
EventType[] | obtain_offered_types(ObtainInfoMode mode)
The obtain_offered_types operation returns a list of event type names. |
MappingFilter | priority_filter()
The priority_filter attribute contains a reference to an object supporting the
MappingFilter interface defined in the CosNotifyFilter module. |
void | priority_filter(MappingFilter value)
The priority_filter attribute contains a reference to an object supporting the
MappingFilter interface defined in the CosNotifyFilter module. |
StructuredEvent | pull_structured_event()
The pull_structured_event operation takes no input parameters, and returns a value of
type Structured Event as defined in the CosNotification module. |
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.
|
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. |
void | reportClientDisconnection()
This method is invoked when the client returns
an unexpected Disconnected exception. |
void | reportEventDelivery(int eventPid)
An event has been delivered or discarded |
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. |
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. |
StructuredEvent | try_pull_structured_event(BooleanHolder has_event)
The try_pull_structured_event operation takes no input parameters, and returns a value
of type StructuredEvent as defined in the CosNotification module. |
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. |
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. |
Default constructor
Constructor -- used for recovery only
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
The connect_structured_pull_consumer operation accepts as an input parameter the
reference to an object supporting the StructuredPullConsumer interface defined
within the CosNotifyComm module. This reference is that of a consumer which plans
to pull events from the channel to which the target object is associated in the form of
Structured Events. This operation is thus invoked in order to establish a connection
between a pull-style consumer of events in the form of Structured Events, and the
notification channel. Once established, the consumer can proceed to receive events
from the channel by invoking the pull_structured_event or try_pull_structured_event
operations supported by the target StructuredProxyPullSupplier instance. If the
target object of this operation is already connected to a pull consumer object, the
AlreadyConnected exception will be raised.
Parameters: pull_consumer Push consumer to connect to the proxy.
Throws: org.omg.CosEventChannelAdmin.AlreadyConnected The proxy is already connected.
public void disconnect_structured_pull_supplier()
The disconnect_structured_pull_supplier operation is invoked to terminate a
connection between the target StructuredPullSupplier, and its associated consumer.
This operation takes no input parameters and returns no values. The result of this
operation is that the target StructuredPullSupplier will release all resources it had
allocated to support the connection, and dispose its own object reference.
public void dispatchEvent(Object event)
New event available
public String getId()
Get the ID ( ChannelID + ConsumerAdminID + ProxySupplierID ) of the proxy
public byte[] getPid()
Returns the pid of the persistent/transient object
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
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
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
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
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).
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.
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.
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
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).
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).
The pull_structured_event operation takes no input parameters, and returns a value of
type Structured Event as defined in the CosNotification module. Upon invocation,
the operation will block until an event is available for transmission, at which time it
will return an instance of a Structured Event which contains the event being delivered
to its connected consumer. If invoked upon a StructuredPullSupplier that is not
currently connected to the consumer of the event, the Disconnected exception will be
raised.
In reality there are two types of objects that will support the StructuredPullSupplier
interface: an object representing an application which transmits Structured Events, and
a StructuredProxyPullSupplier (defined in the CosNotifyChannelAdmin module)
associated with an event channel which transmits events to a pull style consumer on
behalf of the channel. For the first type of object, the implementation of the
pull_structured_event operation is application specific, and is intended to be supplied
by application developers. The application specific implementation of this operation
should construct a structured event, and return it within a StructuredEvent data
structure. For the second type of object, the behavior of the operation is tightly linked
to the implementation of the event channel. Basically, it is responsible for forwarding
a structured event, within an StructuredEvent data structure, as the return value to the
consumer it is connected to upon the availability of an event which passes the filter(s)
associated with the StructuredProxyPullSupplier. Note that the operation will block
until such an event is available to return.
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.
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
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.
public void reportEventDelivery(int eventPid)
An event has been delivered or discarded
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
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.
The try_pull_structured_event operation takes no input parameters, and returns a value
of type StructuredEvent as defined in the CosNotification module. It also returns an
output parameter of type boolean which indicates whether or not the return value
actually contains an event. Upon invocation, the operation will return an instance of a
Structured Event which contains the event being delivered to its connected consumer,
if such an event is available for delivery at the time the operation was invoked. If an
event is available for delivery and thus returned as the result, the output parameter of
the operation will be set to TRUE. If no event is available to return upon invocation,
the operation will return immediately with the value of the output parameter set to
FALSE. In this case, the return value will not contain a valid event. If invoked upon a
StructuredPullSupplier that is not currently connected to the consumer of the event,
the Disconnected exception will be raised.
In reality there are two types of objects that will support the StructuredPullSupplier
interface: an object representing an application which transmits Structured Events, and
a StructuredProxyPullSupplier (defined within the CosNotifyChannelAdmin
module) associated with an event channel which transmits events to a PullConsumer
on behalf of the channel. For the first type of object, the implementation of the
try_pull_structured_event operation is application specific, and is intended to be
supplied by application developers. If an event is available to be returned upon
invocation of this operation, the application specific implementation of this operation
should construct a Structured Event, and return it within a StructuredEvent data
structure along with setting the value of the output parameter to TRUE. Otherwise, the
operation should return immediately after setting the value of the output parameter to
FALSE. For the second type of object, the behavior of the operation is tightly linked to
the implementation of the event channel. Basically, if an event is available to be
returned upon invocation of this operation, it is responsible for forwarding it, within a
StructuredEvent data structure, as the return value to the consumer it is connected to,
in addition to setting the output parameter to FALSE. If no event is available to return
to the consumer upon invocation of this operation, it will immediately return with the
output parameter to set to FALSE, and the return value not containing a valid event.
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
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