org.jacorb.events
Class ProxyPushSupplierImpl

java.lang.Object
  extended by org.omg.CosEventChannelAdmin.ProxyPushSupplierPOA
      extended by org.jacorb.events.ProxyPushSupplierImpl

public class ProxyPushSupplierImpl
extends org.omg.CosEventChannelAdmin.ProxyPushSupplierPOA

Implementation of COSEventChannelAdmin interface; ProxyPushSupplier. This defines connect_push_consumer() and disconnect_push_supplier(). Helper method will push a method to the registered consumer. 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: ProxyPushSupplierImpl.java,v 1.8 2004/05/06 12:39:58 nicolas Exp $
Author:
Jeff Carlson, Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose

Constructor Summary
protected ProxyPushSupplierImpl(EventChannelImpl ec, org.omg.CORBA.ORB orb, org.omg.PortableServer.POA poa)
          Constructor - to be called by EventChannel
 
Method Summary
 org.omg.PortableServer.POA _default_POA()
          Override this method from the Servant baseclass.
 void connect_push_consumer(PushConsumer pushConsumer)
          fuers ProxyPushSupplier Interface.
 void disconnect_push_supplier()
          fuers PushSupplier Interface See EventService v 1.1 specification section 2.1.2.
protected  void push_to_consumer(org.omg.CORBA.Any event)
          Methoden, die von unserem EventChannel aufgerufen werden
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProxyPushSupplierImpl

protected ProxyPushSupplierImpl(EventChannelImpl ec,
                                org.omg.CORBA.ORB orb,
                                org.omg.PortableServer.POA poa)
Constructor - to be called by EventChannel

Method Detail

connect_push_consumer

public void connect_push_consumer(PushConsumer pushConsumer)
                           throws org.omg.CosEventChannelAdmin.AlreadyConnected,
                                  org.omg.CORBA.BAD_PARAM
fuers ProxyPushSupplier Interface. As stated by the EventService specification 1.1 section 2.3.7: "If a ProxyPushSupplier is already connected to a PushConsumer, then the AlreadyConnected exception is raised." and "Implementations shall raise the CORBA standard BAD_PARAM exception if a nil object reference is passed to the connect_push_consumer."

Throws:
org.omg.CosEventChannelAdmin.AlreadyConnected
org.omg.CORBA.BAD_PARAM

disconnect_push_supplier

public void disconnect_push_supplier()
fuers PushSupplier Interface See EventService v 1.1 specification section 2.1.2. 'disconnect_push_supplier terminates the event communication; it releases resources used at the supplier to support event communication. Calling this causes the implementation to call disconnect_push_consumer 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_to_consumer

protected void push_to_consumer(org.omg.CORBA.Any event)
Methoden, die von unserem EventChannel aufgerufen werden


_default_POA

public org.omg.PortableServer.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.