KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > events > PullSupplierDemo


1 package demo.events;
2
3 /**
4  * @authors Joerg v. Frantzius, Rainer Lischetzki, Gerald Brose 1997
5  *
6  * A simple demo for using the event channel as a push supplier of events.
7  *
8  */

9
10 import org.omg.CosNaming.*;
11 import org.omg.CosEventChannelAdmin.*;
12 import org.omg.CosEventComm.*;
13 import org.omg.CORBA.Any JavaDoc;
14
15
16 class PullSupplierDemo extends Thread JavaDoc implements PullSupplierOperations
17 {
18   Any JavaDoc event = null;
19
20   public PullSupplierDemo()
21   {
22     start();
23   }
24
25   public void disconnect_pull_supplier()
26   {
27     System.out.println("Bye.");
28   }
29
30   static public void main (String JavaDoc argv[])
31   {
32     org.omg.CosEventChannelAdmin.EventChannel e = null;
33     org.omg.CORBA.ORB JavaDoc orb = org.omg.CORBA.ORB.init(argv, null);
34
35     try
36     {
37       NamingContextExt nc =
38               NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
39       e = EventChannelHelper.narrow(nc.resolve(nc.to_name("eventchannel.example")));
40     }
41     catch( Exception JavaDoc ex )
42     {
43       ex.printStackTrace();
44     }
45
46     SupplierAdmin supplierAdmin = e.for_suppliers();
47     ProxyPullConsumer proxyPullConsumer =
48             supplierAdmin.obtain_pull_consumer();
49
50     try
51     {
52       org.omg.PortableServer.POA JavaDoc poa =
53               org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
54
55       PullSupplierPOATie pt = new PullSupplierPOATie( new PullSupplierDemo());
56       pt._this_object(orb);
57       org.omg.CORBA.Object JavaDoc o = poa.servant_to_reference( pt );
58
59       poa.the_POAManager().activate();
60
61       proxyPullConsumer.connect_pull_supplier( PullSupplierHelper.narrow(o) );
62     }
63     catch( Exception JavaDoc ex )
64     {
65       ex.printStackTrace();
66     }
67   }
68
69   public Any JavaDoc pull() throws Disconnected
70   {
71     System.out.println("I m being pulled.");
72     event = org.omg.CORBA.ORB.init().create_any();
73     event.insert_string("Pull.");
74     return event;
75   }
76
77   public void run()
78   {
79     // do something
80
while( true )
81     {
82       try
83       {
84         synchronized( this )
85         {
86           wait();
87         }
88       }
89       catch( Exception JavaDoc e )
90       {
91         disconnect_pull_supplier();
92       }
93     }
94   }
95
96
97   public Any JavaDoc try_pull( org.omg.CORBA.BooleanHolder JavaDoc has_event)
98       throws Disconnected
99   {
100     System.out.println("I m being try_pulled.");
101     event = org.omg.CORBA.ORB.init().create_any();
102     event.insert_string("TryPull.");
103     has_event.value = true;
104     return event;
105   }
106 }
107
108
109
Popular Tags