summaryrefslogtreecommitdiff
path: root/trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2')
-rw-r--r--trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2179
1 files changed, 179 insertions, 0 deletions
diff --git a/trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2 b/trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2
new file mode 100644
index 00000000000..49a665569c3
--- /dev/null
+++ b/trunk/TAO/examples/Simulator/DOVEBrowser/PushConsumer.java.JDK1.2
@@ -0,0 +1,179 @@
+// $Id$
+//
+// ============================================================================
+//
+//
+// = FILENAME
+// PushConsumer.java
+//
+// = AUTHOR
+// Michael Kircher (mk1@cs.wustl.edu)
+//
+// = DESCRIPTION
+// This is a Push Consumer which takes the data field of the
+// event and updates with it a Data Handler.
+//
+//
+// ============================================================================
+
+
+public class PushConsumer extends RtecEventComm._PushConsumerImplBase
+{
+
+ public static final int ACE_ES_EVENT_ANY = 0;
+ public static final int ACE_ES_EVENT_SHUTDOWN = 1;
+ public static final int ACE_ES_EVENT_ACT = 2;
+ public static final int ACE_ES_EVENT_NOTIFICATION = 3;
+ public static final int ACE_ES_EVENT_TIMEOUT = 4;
+ public static final int ACE_ES_EVENT_INTERVAL_TIMEOUT = 5;
+ public static final int ACE_ES_EVENT_DEADLINE_TIMEOUT = 6;
+ public static final int ACE_ES_GLOBAL_DESIGNATOR = 7;
+ public static final int ACE_ES_CONJUNCTION_DESIGNATOR = 8;
+ public static final int ACE_ES_DISJUNCTION_DESIGNATOR = 9;
+ public static final int ACE_ES_EVENT_UNDEFINED = 16;
+ public static final int TOTAL_MESSAGES = 30;
+
+ // Store the number of received events
+ private int total_received_ = 0;
+ private org.omg.CORBA.ORB orb_;
+ private DataHandler dataHandler_;
+ private int rt_info_;
+ private RtecEventChannelAdmin.EventChannel channel_admin_;
+ private RtecEventChannelAdmin.ConsumerAdmin consumer_admin_;
+ private RtecEventChannelAdmin.ProxyPushSupplier suppliers_;
+
+ public PushConsumer (org.omg.CORBA.ORB orb, DataHandler dataHandler)
+ {
+ orb_ = orb;
+ dataHandler_ = dataHandler;
+ }
+
+
+ public void push (RtecEventComm.Event[] events)
+ {
+ if (total_received_ < 5)
+ System.out.println ("Demo Consumer: Received an event! ->Number: " + total_received_);
+ else if (total_received_ == 5)
+ System.out.println ("Demo Consumer: Everything is fine. Going to be mute.");
+
+
+ if (events.length == 0)
+ {
+ System.err.println ("No events");
+ }
+ else
+ {
+ total_received_++;
+
+ for (int i = 0; i < events.length; ++i)
+ {
+ if(events[i].type_ == ACE_ES_EVENT_NOTIFICATION)
+ {
+ try
+ {
+ dataHandler_.update (events[i].data_.any_value);
+ }
+ catch(org.omg.CORBA.SystemException e)
+ {
+ System.err.println(e);
+ }
+ }
+ }
+ }
+ }
+
+ public void disconnect_push_consumer()
+ {
+ System.out.println ("Demo Consumer: Have to disconnect!");
+ }
+
+ public void open_consumer (RtecEventChannelAdmin.EventChannel event_channel,
+ RtecScheduler.Scheduler scheduler,
+ String name)
+ {
+
+ try
+ {
+
+ // Define Real-time information
+
+ rt_info_ = scheduler.create (name);
+
+ scheduler.set (rt_info_,
+ RtecScheduler.Criticality.VERY_LOW_CRITICALITY,
+ new TimeBase.ulonglong (0,0),
+ new TimeBase.ulonglong (0,0),
+ new TimeBase.ulonglong (0,0),
+ 2500000, // period
+ RtecScheduler.Importance.VERY_LOW_IMPORTANCE,
+ new TimeBase.ulonglong (0,0),
+ 1,
+ RtecScheduler.Info_Type.OPERATION);
+
+ // Register for Notification and Shutdown events
+ RtecEventComm.Event notification_event =
+ new RtecEventComm.Event (ACE_ES_EVENT_NOTIFICATION, 0,
+ 1, // ttl
+ new TimeBase.ulonglong (0,0),
+ new TimeBase.ulonglong (0,0),
+ new TimeBase.ulonglong (0,0),
+ new RtecEventComm.EventData (orb_.create_any ()));
+
+ RtecEventChannelAdmin.Dependency dependencies[] = new RtecEventChannelAdmin.Dependency[1];
+ dependencies[0] = new RtecEventChannelAdmin.Dependency (notification_event, rt_info_);
+
+ RtecEventChannelAdmin.ConsumerQOS qos = new RtecEventChannelAdmin.ConsumerQOS (dependencies,
+ false);
+
+ // The channel administrator is the event channel we got from the invocation
+ // of this routine
+ channel_admin_ = event_channel;
+
+ // Connect as a consumer
+ consumer_admin_ = channel_admin_.for_consumers ();
+
+ // Obtain a reference to the proxy push supplier
+ suppliers_ = consumer_admin_.obtain_push_supplier ();
+
+ suppliers_.connect_push_consumer (this, qos);
+
+ System.out.println ("Registered the consumer successfully.");
+
+ }
+ catch (RtecEventChannelAdmin.TypeError e)
+ {
+ System.err.println ("Demo_Consumer.open_consumer: Type error");
+ System.err.println (e);
+ }
+ catch (RtecEventChannelAdmin.AlreadyConnected e)
+ {
+ System.err.println ("Demo_Consumer.open_consumer: Already connected");
+ System.err.println (e);
+ }
+
+ catch (RtecScheduler.UNKNOWN_TASK e)
+ {
+ System.err.println ("Demo_Consumer.open_consumer: Unknown task");
+ System.err.println (e);
+ }
+ catch (RtecScheduler.DUPLICATE_NAME e)
+ {
+ System.err.println ("Demo_Consumer.open_consumer: Duplicate names");
+ System.err.println (e);
+ }
+ catch(org.omg.CORBA.SystemException e)
+ {
+ System.err.println(e);
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+