org.jacorb.events
Class ProxyPushConsumerImpl

java.lang.Object
  extended byorg.omg.PortableServer.Servant
      extended byorg.omg.CosEventChannelAdmin.ProxyPushConsumerPOA
          extended byorg.jacorb.events.ProxyPushConsumerImpl
All Implemented Interfaces:
InvokeHandler, ProxyPushConsumerOperations, PushConsumerOperations

public class ProxyPushConsumerImpl
extends ProxyPushConsumerPOA

Implementation of COSEventChannelAdmin interface; ProxyPushConsumer. This defines connect_push_supplier(), disconnect_push_consumer() and the all important push() method that the Supplier can call to actuall deliver a message. 2002/23/08 JFC OMG EventService Specification 1.1 page 2-7 states: "Registration is a two step process. An event-generating application first obtains a proxy consumer from a channel, then 'connects' to the proxy consumer by providing it with a supplier. ... The reason for the two step registration process..." Modifications to support the above have been made as well as to support section 2.1.5 "Disconnection Behavior" on page 2-4.

Version:
$Id: ProxyPushConsumerImpl.java,v 1.7 2002/12/20 18:29:03 nicolas Exp $
Author:
Jeff Carlson, Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose

Constructor Summary
protected ProxyPushConsumerImpl(EventChannelImpl ec, ORB orb, POA poa)
          Konstruktor - wird von EventChannel aufgerufen
 
Method Summary
 POA _default_POA()
          Override this method from the Servant baseclass.
 void connect_push_supplier(PushSupplier pushSupplier)
          fuers ProxyPushConsumer Interface: As stated by the EventService specification 1.1 section 2.3.4: "If a ProxyPushConsumer is already connected to a PushSupplier, then the AlreadyConnected exception is raised."
 void disconnect_push_consumer()
          fuers PushConsumer Interface: See EventService v 1.1 specification section 2.1.1.
 void push(Any event)
          Supplier sends data to the consumer (this object) using this call.
 
Methods inherited from class org.omg.CosEventChannelAdmin.ProxyPushConsumerPOA
_all_interfaces, _invoke, _this, _this
 
Methods inherited from class org.omg.PortableServer.Servant
_get_delegate, _get_interface_def, _get_interface, _is_a, _non_existent, _object_id, _orb, _poa, _set_delegate, _this_object, _this_object
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProxyPushConsumerImpl

protected ProxyPushConsumerImpl(EventChannelImpl ec,
                                ORB orb,
                                POA poa)
Konstruktor - wird von EventChannel aufgerufen

Method Detail

connect_push_supplier

public void connect_push_supplier(PushSupplier pushSupplier)
                           throws AlreadyConnected
fuers ProxyPushConsumer Interface: As stated by the EventService specification 1.1 section 2.3.4: "If a ProxyPushConsumer is already connected to a PushSupplier, then the AlreadyConnected exception is raised." and "If a non-nil reference is passed to connect_push_supplier..." implying that a null reference is acceptable.

Throws:
AlreadyConnected

disconnect_push_consumer

public void disconnect_push_consumer()
fuers PushConsumer Interface: See EventService v 1.1 specification section 2.1.1. 'disconnect_push_consumer terminates the event communication; it releases resources used at the consumer to support event communication. Calling this causes the implementation to call disconnect_push_supplier operation on the corresponding PushSupplier interface (if that iterface is known).' See EventService v 1.1 specification section 2.1.5. This method should adhere to the spec as it a) causes a call to the corresponding disconnect on the connected supplier, b) 'If a consumer or supplier has received a disconnect call and subsequently receives another disconnect call, it shall raise a CORBA::OBJECT_NOT_EXIST exception.


push

public void push(Any event)
          throws Disconnected
Supplier sends data to the consumer (this object) using this call.

Throws:
Disconnected

_default_POA

public POA _default_POA()
Override this method from the Servant baseclass. Fintan Bolton in his book "Pure CORBA" suggests that you override this method to avoid the risk that a servant object (like this one) could be activated by the wrong POA object.

Overrides:
_default_POA in class Servant