package org.jacorb.demo.events; /** * @authors Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose 1997 * * A simple demo for using the event channel as a pull consumer * of events * */ import org.omg.CosNaming.*; import org.omg.CosEventChannelAdmin.*; import org.omg.CosEventComm.*; import org.omg.CORBA.Any; public class PullConsumerDemo extends PullConsumerPOA { public PullConsumerDemo(org.omg.CORBA.ORB orb) { _this_object( orb ); } public void disconnect_pull_consumer() { System.out.println ("Consumer disconnected"); } static public void main (String argv[]) { EventChannel ecs = null; ConsumerAdmin ca; ProxyPullSupplier pps; PullConsumer pullConsumer; Any received = null; org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(argv, null); // binding the event channel reference 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")); ecs = EventChannelHelper.narrow(nc.resolve(nc.to_name("eventchannel.example"))); } catch( Exception e ) { e.printStackTrace(); } // registering ourselves pullConsumer = (org.omg.CosEventComm.PullConsumer)(new PullConsumerDemo(orb))._this(); ca = ecs.for_consumers(); pps = ca.obtain_pull_supplier(); try { pps.connect_pull_consumer( (PullConsumer) pullConsumer ); } catch( Exception e ) { e.printStackTrace(); } System.out.println("TestPullConsumer registered."); // pulling events int i=0; while( i<10 ) { System.out.println("pulling event " + i); org.omg.CORBA.BooleanHolder bh = new org.omg.CORBA.BooleanHolder(); try { received = pps.try_pull(bh); // received = pps.pull(); if( bh.value ) { System.out.println("received " + (i++) + " : " + received.extract_string() ); } else { // we did not get any real any, so we continue // polling after a short nap Thread.currentThread().sleep(2000); } } catch( Exception e ) { e.printStackTrace(); } } pps.disconnect_pull_supplier(); } }