org.jacorb.events
Class ProxyPushConsumerImpl

java.lang.Object
  extended by org.omg.CosEventChannelAdmin.ProxyPushConsumerPOA
      extended by org.jacorb.events.ProxyPushConsumerImpl

public class ProxyPushConsumerImpl
extends org.omg.CosEventChannelAdmin.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.8 2004/05/06 12:39:58 nicolas Exp $
Author:
Jeff Carlson, Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose

Constructor Summary
protected ProxyPushConsumerImpl(EventChannelImpl ec, org.omg.CORBA.ORB orb, org.omg.PortableServer.POA poa)
          Konstruktor - wird von EventChannel aufgerufen
 
Method Summary
 org.omg.PortableServer.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." and "If a non-nil reference is passed to connect_push_supplier..." implying that a null reference is acceptable.
 void disconnect_push_consumer()
          fuers PushConsumer Interface: See EventService v 1.1 specification section 2.1.1.
 void push(org.omg.CORBA.Any event)
          Supplier sends data to the consumer (this object) using this call.
 
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,
                                org.omg.CORBA.ORB orb,
                                org.omg.PortableServer.POA poa)
Konstruktor - wird von EventChannel aufgerufen

Method Detail

connect_push_supplier

public void connect_push_supplier(PushSupplier pushSupplier)
                           throws org.omg.CosEventChannelAdmin.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:
org.omg.CosEventChannelAdmin.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(org.omg.CORBA.Any event)
          throws org.omg.CosEventComm.Disconnected
Supplier sends data to the consumer (this object) using this call.

Throws:
org.omg.CosEventComm.Disconnected

_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.