org.openorb.notify.impl
Class ProxyPullConsumerImpl
java.lang.Object
org.omg.PortableServer.Servant
org.omg.CosNotifyChannelAdmin.ProxyPullConsumerPOA
org.openorb.notify.impl.ProxyPullConsumerImpl
- All Implemented Interfaces:
- org.omg.CORBA.portable.InvokeHandler, PullConsumerOperations, QoSAdminOperations, ProxyConsumerOperations, ProxyPullConsumerOperations, NotifyPublishOperations, FilterAdminOperations, PersistenceManagement, SupplierProxyManagement
public class ProxyPullConsumerImpl
- extends ProxyPullConsumerPOA
- implements SupplierProxyManagement, PersistenceManagement
- Author:
- Olivier Modica
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_any_pull_supplier(PullSupplier pull_supplier)
The connect_any_pull_supplier operation accepts as an input parameter the reference
to an object supporting the PullSupplier interface defined within the CosEventComm
module. |
void |
disconnect_pull_consumer()
The disconnect_pull_consumer operation is invoked to terminate a
connection between the target SequencePullConsumer, and its associated supplier. |
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). |
java.lang.String |
getId()
Get the ID ( ChannelID + SupplierAdminID + ProxyConsumerID ) of the proxy |
byte[] |
getPid()
Returns the pid of the persistent/transient object |
SupplierAdmin |
MyAdmin()
The MyAdmin attribute is a readonly attribute that should be set upon creation of each
proxy consumer instance to maintain the reference of the instance supporting the
SupplierAdmin interface that created it. |
ProxyType |
MyType()
The MyType attribute is a readonly attribute that should be set upon creation of each
proxy consumer instance to indicate the specific type of proxy consumer the instance
represents.Enumerations are possible to distinguish the type of proxy consumer among
the following possibilities: ProxyPushConsumer, ProxyPullConsumer,
StructuredProxyPushConsumer, StructuredProxyPullConsumer,
SequenceProxyPushConsumer, and SequenceProxyPullConsumer. |
EventType[] |
obtain_subscription_types(ObtainInfoMode mode)
The obtain_subscription_types operation returns a list of event type names. |
void |
offer_change(EventType[] added,
EventType[] removed)
The offer_change operation takes as input two sequences of event type names: the first
specifying those event types which the client of the operation (an event supplier) is
informing the target consumer object that it is adding to the list of event types it plans
to supply, and the second specifying those event types which the client no longer plans
to supply. |
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 |
resume_connection()
The resume_connection operation causes the target object supporting the
StructuredProxyPullConsumer interface to resume attempting to pull events (using
pull or try_pull) from the StructuredPullSupplier instance connected to it. |
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 |
suspend_connection()
The suspend_connection operation causes the target object supporting the
StructuredProxyPullConsumer interface to stop attempting to pull events (using pull
or try_pull) from the StructuredPullSupplier instance connected to it. |
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. |
Methods inherited from class org.omg.PortableServer.Servant |
_default_POA, _get_delegate, _get_interface_def, _is_a, _non_existent, _object_id, _orb, _poa, _set_delegate, _this_object, _this_object |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ProxyPullConsumerImpl
public ProxyPullConsumerImpl(SupplierAdminImpl supplierAdmin,
int pullConsumerId,
int adminId,
Property[] qosProperties,
Logger logger)
- Default constructor
ProxyPullConsumerImpl
public ProxyPullConsumerImpl(SupplierAdminImpl supplierAdmin,
ProxyConsumer pssProxyConsumer,
Logger logger)
- Constructor -- used for recovery only
connect_any_pull_supplier
public void connect_any_pull_supplier(PullSupplier pull_supplier)
throws AlreadyConnected,
TypeError
- The connect_any_pull_supplier operation accepts as an input parameter the reference
to an object supporting the PullSupplier interface defined within the CosEventComm
module. This reference is that of a supplier which plans to make events available for
pulling to 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 pull-style
supplier of events in the form of Anys, and the notification channel. Once
established, the channel can proceed to receive events from the supplier by invoking
the pull or try_pull operations supported by the supplier (whether the channel will
invoke pull or try_pull, and the frequency with which it will perform such invocations,
is a detail which is specific to the implementation of the channel). If the target object
of this operation is already connected to a pull supplier object, the AlreadyConnected
exception will be raised. An implementation of the ProxyPullConsumer interface may
impose additional requirements on the interface supported by a pull supplier (e.g., it
may be designed to invoke some operation other than pull or try_pull in order to
receive events). If the pull supplier being connected does not meet those requirements,
this operation raises the TypeError exception.
Note that because the PullSupplier interface defined in the CosNotifyComm module
inherits from the PullSupplier 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 pull supplier. The only difference between the two are that the
latter also supports the NotifySubscribe interface, and thus can be the target of
subscription_change invocations. The implementation of the ProxyPullConsumer
interface should attempt to narrow the input parameter to
CosNotifyComm::PullSupplier in order to determine which style of pull supplier is
connecting to it.
- Specified by:
connect_any_pull_supplier
in interface ProxyPullConsumerOperations
- Parameters:
pull_supplier
- Push supplier to connect to the proxy.
- Throws:
AlreadyConnected
- When the proxy is
already connected.
TypeError
- ?
suspend_connection
public void suspend_connection()
throws ConnectionAlreadyInactive,
NotConnected
- The suspend_connection operation causes the target object supporting the
StructuredProxyPullConsumer interface to stop attempting to pull events (using pull
or try_pull) from the StructuredPullSupplier 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
StructuredPullSupplier has been connected to the target object when this operation is
invoked, the NotConnected exception is raised. Otherwise, the
StructuredProxyPullConsumer will not attempt to pull events from the
StructuredPullSupplier connected to it until resume_connection is subsequently
invoked.
- Specified by:
suspend_connection
in interface ProxyPullConsumerOperations
- Throws:
ConnectionAlreadyInactive
- Connection
is already suspended.
NotConnected
- Proxy isn't connected.
resume_connection
public void resume_connection()
throws ConnectionAlreadyActive,
NotConnected
- The resume_connection operation causes the target object supporting the
StructuredProxyPullConsumer interface to resume attempting to pull events (using
pull or try_pull) from the StructuredPullSupplier 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
StructuredPullSupplier has been connected to the target object when this operation is
invoked, the NotConnected exception is raised. Otherwise, the
StructuredProxyPullConsumer will resume attempting to pull events from the
StrucuturedPullSupplier connected to it.
- Specified by:
resume_connection
in interface ProxyPullConsumerOperations
- Throws:
ConnectionAlreadyActive
- Connection
is already active.
NotConnected
- Proxy isn't connected.
MyType
public ProxyType MyType()
- The MyType attribute is a readonly attribute that should be set upon creation of each
proxy consumer instance to indicate the specific type of proxy consumer the instance
represents.Enumerations are possible to distinguish the type of proxy consumer among
the following possibilities: ProxyPushConsumer, ProxyPullConsumer,
StructuredProxyPushConsumer, StructuredProxyPullConsumer,
SequenceProxyPushConsumer, and SequenceProxyPullConsumer.
- Specified by:
MyType
in interface ProxyConsumerOperations
MyAdmin
public SupplierAdmin MyAdmin()
- The MyAdmin attribute is a readonly attribute that should be set upon creation of each
proxy consumer instance to maintain the reference of the instance supporting the
SupplierAdmin interface that created it.
- Specified by:
MyAdmin
in interface ProxyConsumerOperations
obtain_subscription_types
public EventType[] obtain_subscription_types(ObtainInfoMode mode)
- The obtain_subscription_types operation returns a list of event type names. This
returned list represents the names of event types which consumers connected to the
channel are interested in receiving. Consumers express their interest in receiving
particular types of events by configuring filters associated with the proxy suppliers to
which they are connected to encapsulate constraints which express subscriptions to
specific event instances. Such subscriptions could be based on the types and/or
contents of events. The proxy suppliers extract the event type information from these
subscriptions, and share it with the proxy consumer objects connected to the same
channel. Supplier objects can thus obtain this information from the channel by
invoking the obtain_subscription_types operation on the proxy consumer object to
which they are connected. This information enables suppliers to suppress sending types
of events to the channel in which no consumer is currently interested.
Note that suppliers can also receive updates to subscription information automatically
by enabling the channel to invoke the subscription_change operation they support
through inheritence of the CosNotifyComm::NotifySubscribe interface each time a
new type of event is added or removed through modification of filters. The
obtain_subscription_types operation accepts as input a flag that enables
synchronization between the subscription information obtain through these automatic
updates, and that obtained through invocation of obtain_subscription_types. The table
below summarizes the possible values and associated meanings this flag can take on:
- Specified by:
obtain_subscription_types
in interface ProxyConsumerOperations
- Parameters:
mode
- Mode of recuperation
- Returns:
- All subscription types
validate_event_qos
public void validate_event_qos(Property[] required_qos,
NamedPropertyRangeSeqHolder available_qos)
throws UnsupportedQoS
- 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.
- Specified by:
validate_event_qos
in interface ProxyConsumerOperations
- Parameters:
required_qos
- available_qos
-
- Throws:
UnsupportedQoS
- Qos Property was not supported in this implementation
disconnect_pull_consumer
public void disconnect_pull_consumer()
- The disconnect_pull_consumer operation is invoked to terminate a
connection between the target SequencePullConsumer, and its associated supplier.
This operation takes no input parameters and returns no values. The result of this
operation is that the target SequencePullConsumer will release all resources it had
allocated to support the connection, and dispose its own object reference.
- Specified by:
disconnect_pull_consumer
in interface PullConsumerOperations
offer_change
public void offer_change(EventType[] added,
EventType[] removed)
throws InvalidEventType
- The offer_change operation takes as input two sequences of event type names: the first
specifying those event types which the client of the operation (an event supplier) is
informing the target consumer object that it is adding to the list of event types it plans
to supply, and the second specifying those event types which the client no longer plans
to supply. This operation raises the InvalidEventType exception if one of the event type
names supplied in either input parameter is syntactically invalid. In 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 if the specification
- Specified by:
offer_change
in interface NotifyPublishOperations
- Throws:
InvalidEventType
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).
- Specified by:
get_qos
in interface QoSAdminOperations
- Returns:
- Object QosProperties
set_qos
public void set_qos(Property[] qos)
throws UnsupportedQoS
- 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
- Specified by:
set_qos
in interface QoSAdminOperations
- Parameters:
qos
- QosProperties to assign to object
- Throws:
UnsupportedQoS
validate_qos
public void validate_qos(Property[] required_qos,
NamedPropertyRangeSeqHolder available_qos)
throws UnsupportedQoS
- 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.
- Specified by:
validate_qos
in interface QoSAdminOperations
- Parameters:
required_qos
- available_qos
-
- Throws:
UnsupportedQoS
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.
- Specified by:
add_filter
in interface FilterAdminOperations
- Parameters:
new_filter
- filter to add
- Returns:
- filter id
remove_filter
public void remove_filter(int filter)
throws FilterNotFound
- 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.
- Specified by:
remove_filter
in interface FilterAdminOperations
- Parameters:
filter
- Id of the filter
- Throws:
FilterNotFound
- Id doesn't match to any filter
get_filter
public Filter get_filter(int filter)
throws FilterNotFound
- 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.
- Specified by:
get_filter
in interface FilterAdminOperations
- Parameters:
filter
- Id of the filter to get
- Returns:
- The filter object
- Throws:
FilterNotFound
- Id doesn't match to any filter
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.
- Specified by:
get_all_filters
in interface FilterAdminOperations
- Returns:
- Array of all filters's id
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.
- Specified by:
remove_all_filters
in interface FilterAdminOperations
getPid
public byte[] getPid()
- Returns the pid of the persistent/transient object
- Specified by:
getPid
in interface PersistenceManagement
getId
public java.lang.String getId()
- Get the ID ( ChannelID + SupplierAdminID + ProxyConsumerID ) of the proxy
- Specified by:
getId
in interface SupplierProxyManagement
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.
- Specified by:
reportClientDisconnection
in interface SupplierProxyManagement