package org.jacorb.demo.events;
/**
* @authors Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose 1997
*
* A simple demo for using the event channel as a push supplier of events.
*
*/
import org.omg.CosEventChannelAdmin.*;
import org.omg.CosEventComm.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.Any;
class PushSupplierDemo extends PushSupplierPOA
{
public PushSupplierDemo( String[] args )
{
org.omg.CosEventChannelAdmin.EventChannel e = null;
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
try
{
org.omg.PortableServer.POA poa =
org.omg.PortableServer.POAHelper.narrow
(orb.resolve_initial_references ("RootPOA"));
poa.the_POAManager().activate();
NamingContextExt nc =
NamingContextExtHelper.narrow(
orb.resolve_initial_references("NameService"));
e = EventChannelHelper.narrow(nc.resolve(
nc.to_name("eventchannel.example")));
}
catch(Exception ex)
{
ex.printStackTrace();
}
SupplierAdmin supplierAdmin = e.for_suppliers();
ProxyPushConsumer proxyPushConsumer = supplierAdmin.obtain_push_consumer();
try
{
proxyPushConsumer.connect_push_supplier( _this(orb) );
}
catch (org.omg.CosEventChannelAdmin.AlreadyConnected ex)
{
ex.printStackTrace();
}
for(int i=0; i < 30; i++)
{
try
{
Any any = orb.create_any();
any.insert_string("Test the channel!" + i);
System.out.println("Pushing event # " + (i) );
proxyPushConsumer.push( any );
}
catch(Disconnected d)
{
d.printStackTrace();
}
}
proxyPushConsumer.disconnect_push_consumer();
}
public void disconnect_push_supplier ()
{
System.out.println ("Supplier disconnected");
}
public static void main(String[] args)
{
PushSupplierDemo demo = new PushSupplierDemo( args );
}
}