package org.jacorb.test.notification; import org.junit.Assert; import org.omg.CORBA.Any; import org.omg.CORBA.ORB; import org.omg.CosEventChannelAdmin.AlreadyConnected; import org.omg.CosEventChannelAdmin.EventChannel; import org.omg.CosEventChannelAdmin.EventChannelHelper; import org.omg.CosEventChannelAdmin.ProxyPushConsumer; import org.omg.CosEventChannelAdmin.SupplierAdmin; import org.omg.CosEventComm.PushSupplierPOA; /** * @author Alphonse Bendt */ public class CosEventPushSender extends PushSupplierPOA implements TestClientOperations, Runnable { boolean connected_; boolean sent_; boolean error_; ProxyPushConsumer myConsumer_; Any event_; ORB orb_; public CosEventPushSender(ORB orb, Any event) { event_ = event; orb_ = orb; } public void disconnect_push_supplier() { connected_ = false; } public boolean isConnected() { return connected_; } public boolean isEventHandled() { return sent_; } public boolean isError() { return error_; } public void connect(org.omg.CosNotifyChannelAdmin.EventChannel channel, boolean useOrSemantic) throws AlreadyConnected { Assert.assertNotNull(channel); EventChannel _channel = EventChannelHelper.narrow(channel); Assert.assertNotNull(_channel); SupplierAdmin _admin = _channel.for_suppliers(); Assert.assertNotNull(_admin); myConsumer_ = _admin.obtain_push_consumer(); Assert.assertNotNull(myConsumer_); myConsumer_.connect_push_supplier(_this(orb_)); connected_ = true; } public void shutdown() { myConsumer_.disconnect_push_consumer(); } // Implementation of java.lang.Runnable /** * Describe <code>run</code> method here. * */ public void run() { try { myConsumer_.push(event_); event_ = null; sent_ = true; } catch (Throwable t) { error_ = true; } } }