summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-01-11 01:48:49 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-01-11 01:48:49 +0000
commit3692350c81ab489973852f5ad7d36a621396e22c (patch)
treedfeea1d9e7b76bdce6a8de4878da5f850df7892e
parentad1d0d9b8f8bc82db98b9a24d5102ea5b6417e9c (diff)
downloadATCD-3692350c81ab489973852f5ad7d36a621396e22c.tar.gz
ChangeLogTag:Thu Jan 10 17:43:22 2002 Carlos O'Ryan <coryan@uci.edu>
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a34
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.cpp105
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.h83
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.inl1
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.cpp278
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.h122
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.inl1
-rw-r--r--TAO/orbsvcs/orbsvcs/Makefile.RTCORBAEvent74
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.cpp115
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.h66
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Makefile957
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.cpp28
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.h36
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.inl13
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.cpp33
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.h39
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.cpp70
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.h56
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.cpp34
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.h65
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.inl77
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.cpp104
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.h59
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/driver.cpp319
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_null.conf2
-rw-r--r--TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_per_supplier.conf66
-rwxr-xr-xTAO/orbsvcs/performance-tests/EC_Colocated_Latency/run_supplier_filtering.sh10
27 files changed, 2847 insertions, 0 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index 1bb90f30299..934ba4e2f40 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,37 @@
+Thu Jan 10 17:43:22 2002 Carlos O'Ryan <coryan@uci.edu>
+
+ * orbsvcs/orbsvcs/Makefile.RTCORBAEvent:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.h:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.inl:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.cpp:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.h:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.inl:
+ * orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.cpp:
+ Add new dispatching strategy based on RT-CORBA. Still
+ work-in-progress.
+
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Makefile:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.inl:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.inl:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.h:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/driver.cpp:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_null.conf:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_per_supplier.conf:
+ * orbsvcs/performance-tests/EC_Colocated_Latency/run_supplier_filtering.sh:
+ Add new performance test to measure latency in the colocated
+ case.
+
Thu Jan 10 12:48:02 2002 Venkita Subramonian <venkita@cs.wustl.edu>
* tests/Two_Objects/worker.cpp:
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.cpp
new file mode 100644
index 00000000000..8599a2632bc
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.cpp
@@ -0,0 +1,105 @@
+// $Id$
+
+#include "EC_RTCORBA_Dispatching.h"
+#include "tao/RTCORBA/Priority_Mapping.h"
+
+#if ! defined (__ACE_INLINE__)
+#include "EC_RTCORBA_Dispatching.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID(Event, EC_RTCORBA_Dispatching, "$Id$")
+
+TAO_EC_RTCORBA_Dispatching::
+ TAO_EC_RTCORBA_Dispatching (const RTCORBA::ThreadpoolLanes &lanes,
+ RTCORBA::PriorityMapping *mapping,
+ RTCORBA::Current_ptr current)
+ : lanes_ (lanes)
+ , priority_mapping_ (mapping)
+ , current_ (RTCORBA::Current::_duplicate (current))
+{
+ ACE_NEW (this->tasks_, TAO_EC_Dispatching_Task[this->lanes_.length ()]);
+ for (CORBA::ULong i = 0; i != this->lanes_.length (); ++i)
+ this->tasks_->thr_mgr (&this->thread_manager_);
+}
+
+TAO_EC_RTCORBA_Dispatching::~TAO_EC_RTCORBA_Dispatching (void)
+{
+ delete[] this->tasks_;
+}
+
+void
+TAO_EC_RTCORBA_Dispatching::activate (void)
+{
+ for (CORBA::ULong i = 0; i != this->lanes_.length (); ++i)
+ {
+ CORBA::ULong nthreads = this->lanes_[i].static_threads;
+ if (nthreads == 0)
+ {
+ nthreads = 1;
+ }
+ RTCORBA::Priority corba_priority = this->lanes_[i].lane_priority;
+ RTCORBA::NativePriority native_priority;
+ if (this->priority_mapping_->to_native (corba_priority,
+ native_priority) != 0)
+ {
+ this->tasks_[i].activate (THR_NEW_LWP | THR_JOINABLE,
+ nthreads,
+ 0,
+ native_priority);
+ }
+ }
+}
+
+void
+TAO_EC_RTCORBA_Dispatching::shutdown (void)
+{
+ for (CORBA::ULong i = 0; i != this->lanes_.length (); ++i)
+ {
+ int nthreads =
+ this->thread_manager_.num_threads_in_task (&this->tasks_[i]);
+ if (nthreads <= 0)
+ continue;
+ for (int j = 0; j != nthreads; ++j)
+ {
+ this->tasks_[i].putq (new TAO_EC_Shutdown_Task_Command);
+ }
+ }
+ this->thread_manager_.wait ();
+}
+
+void
+TAO_EC_RTCORBA_Dispatching::push (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
+ const RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ TAO_ENV_ARG_DECL)
+{
+ RtecEventComm::EventSet event_copy = event;
+ this->push_nocopy (proxy, consumer, event_copy, qos_info TAO_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_EC_RTCORBA_Dispatching::push_nocopy (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
+ RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info&
+ TAO_ENV_ARG_DECL)
+{
+ RTCORBA::Priority current_priority =
+ this->current_->the_priority (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ for (CORBA::ULong i = 0; i != this->lanes_.length (); ++i)
+ {
+ if (this->lanes_[i].lane_priority != current_priority)
+ continue;
+
+ // @@ If there were no threads available we may need to create
+ // some...
+
+ this->tasks_[i].push (proxy, consumer, event
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ break;
+ }
+}
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.h b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.h
new file mode 100644
index 00000000000..ab75cb13e33
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.h
@@ -0,0 +1,83 @@
+/* -*- C++ -*- */
+/**
+ * @file EC_RTCORBA_Dispatching.h
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ *
+ * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and
+ * other members of the DOC group. More details can be found in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/index.html
+ */
+
+#ifndef TAO_EC_RTCORBA_DISPATCHING_H
+#define TAO_EC_RTCORBA_DISPATCHING_H
+#include "ace/pre.h"
+
+#include "EC_Dispatching.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "EC_Dispatching_Task.h"
+#include "tao/RTCORBA/RTCORBA.h"
+
+class TAO_EC_Event_Channel;
+
+/**
+ * @class TAO_EC_RTCORBA_Dispatching
+ *
+ * @brief RTCORBA-based dispatching strategy
+ *
+ */
+class TAO_RTEvent_Export TAO_EC_RTCORBA_Dispatching : public TAO_EC_Dispatching
+{
+public:
+ /// Constructor
+ TAO_EC_RTCORBA_Dispatching (const RTCORBA::ThreadpoolLanes &lanes,
+ RTCORBA::PriorityMapping *mapping,
+ RTCORBA::Current_ptr current);
+
+ /// Destructor
+ ~TAO_EC_RTCORBA_Dispatching (void);
+
+ // = The EC_Dispatching methods.
+ virtual void activate (void);
+ virtual void shutdown (void);
+ virtual void push (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
+ const RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ TAO_ENV_ARG_DECL);
+ virtual void push_nocopy (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
+ RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ TAO_ENV_ARG_DECL);
+
+private:
+ /// The thread pools...
+ RTCORBA::ThreadpoolLanes lanes_;
+
+ /// Used to map between CORBA and native priorities
+ RTCORBA::PriorityMapping *priority_mapping_;
+
+ /// Used to get the current RTCORBA priority
+ RTCORBA::Current_var current_;
+
+ /// Use our own thread manager.
+ ACE_Thread_Manager thread_manager_;
+
+ /// The dispatching task(s), one per lane
+ TAO_EC_Dispatching_Task *tasks_;
+};
+
+#if defined (__ACE_INLINE__)
+#include "EC_RTCORBA_Dispatching.inl"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif /* TAO_EC_RTCORBA_DISPATCHING_H */
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.inl b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.inl
new file mode 100644
index 00000000000..cfa1da318d3
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Dispatching.inl
@@ -0,0 +1 @@
+// $Id$
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.cpp
new file mode 100644
index 00000000000..ffeaf1d754f
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.cpp
@@ -0,0 +1,278 @@
+// $Id$
+
+#include "EC_RTCORBA_Factory.h"
+#include "EC_RTCORBA_Dispatching.h"
+
+#include "tao/RTCORBA/Priority_Mapping_Manager.h"
+
+#if ! defined (__ACE_INLINE__)
+#include "EC_RTCORBA_Factory.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID(Event, EC_RTCORBA_Factory, "$Id$")
+
+TAO_EC_RTCORBA_Factory::
+ TAO_EC_RTCORBA_Factory (TAO_EC_Factory *body,
+ const RTCORBA::ThreadpoolLanes &lanes)
+ : body_ (body)
+ , lanes_ (lanes)
+{
+}
+
+TAO_EC_RTCORBA_Factory::~TAO_EC_RTCORBA_Factory (void)
+{
+}
+
+
+int
+TAO_EC_RTCORBA_Factory::init (int argc, char* argv[])
+{
+ return this->body_->init (argc, argv);
+}
+
+int
+TAO_EC_RTCORBA_Factory::fini (void)
+{
+ return this->body_->fini ();
+}
+
+// ****************************************************************
+
+TAO_EC_Dispatching*
+TAO_EC_RTCORBA_Factory::create_dispatching (TAO_EC_Event_Channel *)
+{
+ TAO_EC_Dispatching *dispatching = 0;
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ // @@ The ORBId could be important!!!
+ int argc = 0;
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, 0, ""
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var obj =
+ orb->resolve_initial_references ("PriorityMappingManager"
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RTCORBA::PriorityMappingManager_var priority_mapping_manager =
+ RTCORBA::PriorityMappingManager::_narrow (obj.in ()
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RTCORBA::PriorityMapping *priority_mapping =
+ priority_mapping_manager->mapping ();
+
+ obj =
+ orb->resolve_initial_references ("RTCurrent"
+ TAO_ENV_ARG_PARAMETER);
+ RTCORBA::Current_var current =
+ RTCORBA::Current::_narrow (obj.in ()
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_NEW_RETURN (dispatching,
+ TAO_EC_RTCORBA_Dispatching (this->lanes_,
+ priority_mapping,
+ current.in ()),
+ 0);
+ }
+ ACE_CATCHANY
+ {
+ }
+ ACE_ENDTRY;
+
+ return dispatching;
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_dispatching (TAO_EC_Dispatching *x)
+{
+ return this->body_->destroy_dispatching (x);
+}
+
+TAO_EC_Filter_Builder*
+TAO_EC_RTCORBA_Factory::create_filter_builder (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_filter_builder (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_filter_builder (TAO_EC_Filter_Builder *x)
+{
+ return this->body_->destroy_filter_builder (x);
+}
+
+TAO_EC_Supplier_Filter_Builder*
+TAO_EC_RTCORBA_Factory::create_supplier_filter_builder (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_supplier_filter_builder (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_supplier_filter_builder (TAO_EC_Supplier_Filter_Builder *x)
+{
+ return this->body_->destroy_supplier_filter_builder (x);
+}
+
+TAO_EC_ConsumerAdmin*
+TAO_EC_RTCORBA_Factory::create_consumer_admin (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_consumer_admin (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_consumer_admin (TAO_EC_ConsumerAdmin *x)
+{
+ return this->body_->destroy_consumer_admin (x);
+}
+
+TAO_EC_SupplierAdmin*
+TAO_EC_RTCORBA_Factory::create_supplier_admin (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_supplier_admin (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_supplier_admin (TAO_EC_SupplierAdmin *x)
+{
+ return this->body_->destroy_supplier_admin (x);
+}
+
+TAO_EC_ProxyPushSupplier*
+TAO_EC_RTCORBA_Factory::create_proxy_push_supplier (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_proxy_push_supplier (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier *x)
+{
+ return this->body_->destroy_proxy_push_supplier (x);
+}
+
+TAO_EC_ProxyPushConsumer*
+TAO_EC_RTCORBA_Factory::create_proxy_push_consumer (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_proxy_push_consumer (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer *x)
+{
+ return this->body_->destroy_proxy_push_consumer (x);
+}
+
+TAO_EC_Timeout_Generator*
+TAO_EC_RTCORBA_Factory::create_timeout_generator (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_timeout_generator (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_timeout_generator (TAO_EC_Timeout_Generator *x)
+{
+ return this->body_->destroy_timeout_generator (x);
+}
+
+TAO_EC_ObserverStrategy*
+TAO_EC_RTCORBA_Factory::create_observer_strategy (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_observer_strategy (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_observer_strategy (TAO_EC_ObserverStrategy *x)
+{
+ return this->body_->destroy_observer_strategy (x);
+}
+
+TAO_EC_Scheduling_Strategy*
+TAO_EC_RTCORBA_Factory::create_scheduling_strategy (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_scheduling_strategy (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy* x)
+{
+ return this->body_->destroy_scheduling_strategy (x);
+}
+
+TAO_EC_ProxyPushConsumer_Collection*
+TAO_EC_RTCORBA_Factory::create_proxy_push_consumer_collection (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_proxy_push_consumer_collection (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection *x)
+{
+ return this->body_->destroy_proxy_push_consumer_collection (x);
+}
+
+TAO_EC_ProxyPushSupplier_Collection*
+TAO_EC_RTCORBA_Factory::create_proxy_push_supplier_collection (TAO_EC_Event_Channel *ec)
+{
+ return this->body_->create_proxy_push_supplier_collection (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection *x)
+{
+ return this->body_->destroy_proxy_push_supplier_collection (x);
+}
+
+ACE_Lock*
+TAO_EC_RTCORBA_Factory::create_consumer_lock (void)
+{
+ return this->body_->create_consumer_lock ();
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_consumer_lock (ACE_Lock* x)
+{
+ return this->body_->destroy_consumer_lock (x);
+}
+
+ACE_Lock*
+TAO_EC_RTCORBA_Factory::create_supplier_lock (void)
+{
+ return this->body_->create_supplier_lock ();
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_supplier_lock (ACE_Lock* x)
+{
+ return this->body_->destroy_supplier_lock (x);
+}
+
+TAO_EC_ConsumerControl*
+TAO_EC_RTCORBA_Factory::create_consumer_control (TAO_EC_Event_Channel* ec)
+{
+ return this->body_->create_consumer_control (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_consumer_control (TAO_EC_ConsumerControl* x)
+{
+ return this->body_->destroy_consumer_control (x);
+}
+
+TAO_EC_SupplierControl*
+TAO_EC_RTCORBA_Factory::create_supplier_control (TAO_EC_Event_Channel* ec)
+{
+ return this->body_->create_supplier_control (ec);
+}
+
+void
+TAO_EC_RTCORBA_Factory::destroy_supplier_control (TAO_EC_SupplierControl* x)
+{
+ return this->body_->destroy_supplier_control (x);
+}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.h b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.h
new file mode 100644
index 00000000000..6c79ca45cae
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.h
@@ -0,0 +1,122 @@
+/* -*- C++ -*- */
+/**
+ * @file EC_RTCORBA_Factory.h
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan (coryan@cs.wustl.edu)
+ *
+ * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and
+ * other members of the DOC group. More details can be found in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/index.html
+ */
+
+#ifndef TAO_EC_RTCORBA_FACTORY_H
+#define TAO_EC_RTCORBA_FACTORY_H
+#include "ace/pre.h"
+
+#include "EC_Factory.h"
+#include "tao/RTCORBA/RTCORBA.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class TAO_EC_RTCORBA_Factory
+ *
+ * @brief Decorate an EC_Factory to use the EC_RTCORBA_Dispatching
+ * module.
+ */
+class TAO_RTEvent_Export TAO_EC_RTCORBA_Factory : public TAO_EC_Factory
+{
+public:
+ /// Constructor
+ /**
+ * @param body The decorated factory.
+ */
+ TAO_EC_RTCORBA_Factory (TAO_EC_Factory *body,
+ const RTCORBA::ThreadpoolLanes &lanes);
+
+ /// destructor...
+ virtual ~TAO_EC_RTCORBA_Factory (void);
+
+ // Decorated methods...
+ virtual int init (int argc, char* argv[]);
+ virtual int fini (void);
+ virtual TAO_EC_Dispatching*
+ create_dispatching (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_dispatching (TAO_EC_Dispatching*) ;
+ virtual TAO_EC_Filter_Builder*
+ create_filter_builder (TAO_EC_Event_Channel*) ;
+ virtual void
+ destroy_filter_builder (TAO_EC_Filter_Builder*);
+ virtual TAO_EC_Supplier_Filter_Builder*
+ create_supplier_filter_builder (TAO_EC_Event_Channel*) ;
+ virtual void
+ destroy_supplier_filter_builder (TAO_EC_Supplier_Filter_Builder*);
+ virtual TAO_EC_ConsumerAdmin*
+ create_consumer_admin (TAO_EC_Event_Channel*) ;
+ virtual void
+ destroy_consumer_admin (TAO_EC_ConsumerAdmin*);
+ virtual TAO_EC_SupplierAdmin*
+ create_supplier_admin (TAO_EC_Event_Channel*) ;
+ virtual void
+ destroy_supplier_admin (TAO_EC_SupplierAdmin*);
+ virtual TAO_EC_ProxyPushSupplier*
+ create_proxy_push_supplier (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier*);
+ virtual TAO_EC_ProxyPushConsumer*
+ create_proxy_push_consumer (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer*);
+ virtual TAO_EC_Timeout_Generator*
+ create_timeout_generator (TAO_EC_Event_Channel*) ;
+ virtual void
+ destroy_timeout_generator (TAO_EC_Timeout_Generator*);
+ virtual TAO_EC_ObserverStrategy*
+ create_observer_strategy (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_observer_strategy (TAO_EC_ObserverStrategy*);
+ virtual TAO_EC_Scheduling_Strategy*
+ create_scheduling_strategy (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*);
+ virtual TAO_EC_ProxyPushConsumer_Collection*
+ create_proxy_push_consumer_collection (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*);
+ virtual TAO_EC_ProxyPushSupplier_Collection*
+ create_proxy_push_supplier_collection (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*);
+ virtual ACE_Lock* create_consumer_lock (void);
+ virtual void destroy_consumer_lock (ACE_Lock*);
+ virtual ACE_Lock* create_supplier_lock (void);
+ virtual void destroy_supplier_lock (ACE_Lock*);
+ virtual TAO_EC_ConsumerControl*
+ create_consumer_control (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_consumer_control (TAO_EC_ConsumerControl*);
+ virtual TAO_EC_SupplierControl*
+ create_supplier_control (TAO_EC_Event_Channel*);
+ virtual void
+ destroy_supplier_control (TAO_EC_SupplierControl*);
+
+protected:
+ /// The decorated factory
+ TAO_EC_Factory *body_;
+
+ /// Configure the thread pool lanes.
+ RTCORBA::ThreadpoolLanes lanes_;
+};
+
+#if defined (__ACE_INLINE__)
+#include "EC_RTCORBA_Factory.inl"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif /* TAO_EC_RTCORBA_FACTORY_H */
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.inl b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.inl
new file mode 100644
index 00000000000..cfa1da318d3
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_RTCORBA_Factory.inl
@@ -0,0 +1 @@
+// $Id$
diff --git a/TAO/orbsvcs/orbsvcs/Makefile.RTCORBAEvent b/TAO/orbsvcs/orbsvcs/Makefile.RTCORBAEvent
new file mode 100644
index 00000000000..f4ace227684
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Makefile.RTCORBAEvent
@@ -0,0 +1,74 @@
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+#----------------------------------------------------------------------------
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+MAKEFILE = Makefile.RTCORBAEvent
+LIBNAME = libTAO_RTCORBAEvent
+LIB = $(LIBNAME).a
+SHLIB = $(LIBNAME).$(SOEXT)
+
+VPATH=.:Event
+
+ACE_SHLIBS = -lTAO_RTEvent -lTAO_CosNaming -lTAO_Svc_Utils -lTAO_RTPortableServer -lTAO_PortableServer -lTAO_RTCORBA -lTAO -lACE
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+
+# On non-Windows environment, we should at least define
+# the export_include IDL flag.
+override TAO_IDLFLAGS +=
+
+IDL_FILES +=
+
+CPP_SRCS += \
+ Event/EC_RTCORBA_Dispatching \
+ Event/EC_RTCORBA_Factory \
+
+IDL_SRC = \
+ $(addsuffix S.cpp, $(IDL_FILES)) \
+ $(addsuffix C.cpp, $(IDL_FILES))
+FILES = $(CPP_SRCS)
+DEFS = $(addsuffix .h,$(FILES))
+LSRC = $(addsuffix .cpp,$(FILES)) $(IDL_SRC)
+
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+
+#----------------------------------------------------------------------------
+# Local targets (and local hacks)
+#----------------------------------------------------------------------------
+
+LDFLAGS += -L$(TAO_ROOT)/tao -L$(TAO_ROOT)/orbsvcs/orbsvcs
+CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs \
+ -I$(TAO_ROOT)/orbsvcs/orbsvcs/ESF
+
+#
+# Extra dependencies not caught by make depend.
+#
+
+.PRECIOUS: $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext))))
+
+realclean: clean
+ -$(RM) $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT), $(file)$(ext)))
+
+#----------------------------------------------------------------------------
+# Dependencies
+#----------------------------------------------------------------------------
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.cpp
new file mode 100644
index 00000000000..2110f1b4821
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.cpp
@@ -0,0 +1,115 @@
+/**
+ * @file Consumer.cpp
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#include "Consumer.h"
+#include "orbsvcs/Event_Service_Constants.h"
+
+ACE_RCSID(EC_Colocated_Latency, Consumer, "$Id$")
+
+ECCL_Consumer::ECCL_Consumer (int iterations)
+ : sample_history_ (iterations)
+{
+}
+
+void
+ECCL_Consumer::connect (RtecEventChannelAdmin::EventChannel_ptr ec,
+ int event_type
+ TAO_ENV_ARG_DECL)
+{
+ RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
+ ec->for_consumers (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (!CORBA::is_nil (this->proxy_supplier_.in ()))
+ return;
+
+ this->proxy_supplier_ =
+ consumer_admin->obtain_push_supplier (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ RtecEventComm::PushConsumer_var consumer =
+ this->_this (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ RtecEventChannelAdmin::ConsumerQOS consumer_qos;
+ consumer_qos.dependencies.length (2);
+ RtecEventComm::EventHeader& h0 =
+ consumer_qos.dependencies[0].event.header;
+ h0.type = ACE_ES_DISJUNCTION_DESIGNATOR;
+ h0.source = 1; // This time it means "number of disjunctions"
+
+ RtecEventComm::EventHeader& h1 =
+ consumer_qos.dependencies[1].event.header;
+ h1.type = event_type;
+ h1.source = ACE_ES_EVENT_SOURCE_ANY;
+
+ this->proxy_supplier_->connect_push_consumer (consumer.in (),
+ consumer_qos
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void
+ECCL_Consumer::disconnect (TAO_ENV_SINGLE_ARG_DECL)
+{
+ RtecEventChannelAdmin::ProxyPushSupplier_var proxy;
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (CORBA::is_nil (this->proxy_supplier_.in ()))
+ return;
+ proxy = this->proxy_supplier_._retn ();
+ }
+
+ ACE_TRY
+ {
+ proxy->disconnect_push_supplier (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY {} ACE_ENDTRY;
+
+ PortableServer::POA_var poa = this->_default_POA (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ PortableServer::ObjectId_var id = poa->servant_to_id (this
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ poa->deactivate_object (id.in () TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+ACE_Sample_History &
+ECCL_Consumer::sample_history (void)
+{
+ return this->sample_history_;
+}
+
+void
+ECCL_Consumer::push (const RtecEventComm::EventSet &events
+ TAO_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+
+ ACE_hrtime_t creation;
+ ORBSVCS_Time::TimeT_to_hrtime (creation,
+ events[0].header.creation_time);
+
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ this->sample_history_.sample (now - creation);
+}
+
+void
+ECCL_Consumer::disconnect_push_consumer (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ this->proxy_supplier_ =
+ RtecEventChannelAdmin::ProxyPushSupplier::_nil ();
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.h
new file mode 100644
index 00000000000..5fe9f00fce7
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Consumer.h
@@ -0,0 +1,66 @@
+/**
+ * @file Consumer.h
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ECCL_CONSUMER_H
+#define ECCL_CONSUMER_H
+
+#include "orbsvcs/RtecEventCommS.h"
+#include "orbsvcs/RtecEventChannelAdminC.h"
+#include "ace/Sample_History.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class ECCL_Consumer
+ *
+ * @brief Implement a simple consumer to keep track of the latency
+ *
+ */
+class ECCL_Consumer
+ : public virtual POA_RtecEventComm::PushConsumer
+ , public virtual PortableServer::RefCountServantBase
+
+{
+public:
+ /// Constructor
+ ECCL_Consumer (int iterations);
+
+ /// Connect to the event channel
+ void connect (RtecEventChannelAdmin::EventChannel_ptr ec,
+ int event_type
+ TAO_ENV_ARG_DECL);
+
+ /// Disconnect from the event channel
+ void disconnect (TAO_ENV_SINGLE_ARG_DECL);
+
+ /// Access the history of samples
+ ACE_Sample_History &sample_history (void);
+
+ //@{
+ /** @name The RtecEventComm::PushConsumer methods
+ */
+ virtual void push (const RtecEventComm::EventSet& events
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void disconnect_push_consumer (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ //@}
+
+private:
+ /// Synchronize access to the internal data
+ TAO_SYNCH_MUTEX mutex_;
+
+ /// The proxy this object is connected to
+ RtecEventChannelAdmin::ProxyPushSupplier_var proxy_supplier_;
+
+ /// The history of latency samples
+ ACE_Sample_History sample_history_;
+};
+
+#endif /* ECCL_CONSUMER_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Makefile b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Makefile
new file mode 100644
index 00000000000..11f31c42037
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Makefile
@@ -0,0 +1,957 @@
+#
+# $Id$
+#
+
+LDLIBS = -lTAO_RTEvent -lTAO_CosNaming -lTAO_Svc_Utils -lTAO_IORTable -lTAO_PortableServer -lTAO_Strategies -lTAO
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif
+
+CPPFLAGS += -I$(TAO_ROOT)/orbsvcs \
+ -I$(TAO_ROOT)
+
+BIN_UNCHECKED = driver
+
+driver_OBJS=$(addsuffix .o,driver Consumer Supplier Receive_Task Send_Task POA_Destroyer)
+SRC = $(driver_OBJS:.o=.cpp)
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+
+#### If the TAO orbsvcs library wasn't built with sufficient components,
+#### don't try to build here.
+TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
+ifeq (RTEvent,$(findstring RTEvent,$(TAO_ORBSVCS)))
+ ifeq ($(corba_messaging),1)
+ BIN=$(BIN_UNCHECKED)
+ endif # corba_messaging
+endif # RTEvent
+
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+
+driver: $(addprefix $(VDIR),$(driver_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+#----------------------------------------------------------------------------
+# Dependencies
+#----------------------------------------------------------------------------
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+
+.obj/driver.o .obj/driver.so .shobj/driver.o .shobj/driver.so: driver.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Default_Factory.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Factory.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/event_export.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ace_wchar.inl \
+ $(ACE_ROOT)/ace/OS_Errno.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Base.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/Default_Constants.h \
+ $(ACE_ROOT)/ace/Global_Macros.h \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Flag_Manip.h \
+ $(ACE_ROOT)/ace/Flag_Manip.i \
+ $(ACE_ROOT)/ace/Handle_Ops.h \
+ $(ACE_ROOT)/ace/Handle_Ops.i \
+ $(ACE_ROOT)/ace/Lib_Find.h \
+ $(ACE_ROOT)/ace/Lib_Find.i \
+ $(ACE_ROOT)/ace/Init_ACE.h \
+ $(ACE_ROOT)/ace/Init_ACE.i \
+ $(ACE_ROOT)/ace/Sock_Connect.h \
+ $(ACE_ROOT)/ace/Sock_Connect.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Malloc_Allocator.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Unbounded_Set.h \
+ $(ACE_ROOT)/ace/Node.h \
+ $(ACE_ROOT)/ace/Node.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.inl \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/TAO_Export.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/String_Base.h \
+ $(ACE_ROOT)/ace/String_Base_Const.h \
+ $(ACE_ROOT)/ace/String_Base.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/String_Base.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Queue.inl \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/OctetSeqC.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/CORBA_String.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/StringSeqC.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
+ $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.inl \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Defaults.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Test_and_Set.h \
+ $(ACE_ROOT)/ace/Test_and_Set.cpp \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Event_Channel.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServer.h \
+ $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \
+ $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \
+ $(TAO_ROOT)/tao/Abstract_Servant_Base.h \
+ $(ACE_ROOT)/ace/Atomic_Op.h \
+ $(ACE_ROOT)/ace/Atomic_Op.cpp \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \
+ $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \
+ $(TAO_ROOT)/tao/Messaging.h \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Array_Base.h \
+ $(ACE_ROOT)/ace/Array_Base.cpp \
+ $(ACE_ROOT)/ace/Array_Base.inl \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Sched_Params.h
+
+.obj/Consumer.o .obj/Consumer.so .shobj/Consumer.o .shobj/Consumer.so: Consumer.cpp Consumer.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Base.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ace_wchar.inl \
+ $(ACE_ROOT)/ace/OS_Errno.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/Default_Constants.h \
+ $(ACE_ROOT)/ace/Global_Macros.h \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Flag_Manip.h \
+ $(ACE_ROOT)/ace/Flag_Manip.i \
+ $(ACE_ROOT)/ace/Handle_Ops.h \
+ $(ACE_ROOT)/ace/Handle_Ops.i \
+ $(ACE_ROOT)/ace/Lib_Find.h \
+ $(ACE_ROOT)/ace/Lib_Find.i \
+ $(ACE_ROOT)/ace/Init_ACE.h \
+ $(ACE_ROOT)/ace/Init_ACE.i \
+ $(ACE_ROOT)/ace/Sock_Connect.h \
+ $(ACE_ROOT)/ace/Sock_Connect.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Malloc_Allocator.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Unbounded_Set.h \
+ $(ACE_ROOT)/ace/Node.h \
+ $(ACE_ROOT)/ace/Node.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.inl \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/TAO_Export.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/String_Base.h \
+ $(ACE_ROOT)/ace/String_Base_Const.h \
+ $(ACE_ROOT)/ace/String_Base.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/String_Base.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
+ $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.inl \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Queue.inl \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/OctetSeqC.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/CORBA_String.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/StringSeqC.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServer.h \
+ $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \
+ $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \
+ $(TAO_ROOT)/tao/Abstract_Servant_Base.h \
+ $(ACE_ROOT)/ace/Atomic_Op.h \
+ $(ACE_ROOT)/ace/Atomic_Op.cpp \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \
+ $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/event_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \
+ $(ACE_ROOT)/ace/Sample_History.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h
+
+.obj/Supplier.o .obj/Supplier.so .shobj/Supplier.o .shobj/Supplier.so: Supplier.cpp Supplier.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Base.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ace_wchar.inl \
+ $(ACE_ROOT)/ace/OS_Errno.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/Default_Constants.h \
+ $(ACE_ROOT)/ace/Global_Macros.h \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Flag_Manip.h \
+ $(ACE_ROOT)/ace/Flag_Manip.i \
+ $(ACE_ROOT)/ace/Handle_Ops.h \
+ $(ACE_ROOT)/ace/Handle_Ops.i \
+ $(ACE_ROOT)/ace/Lib_Find.h \
+ $(ACE_ROOT)/ace/Lib_Find.i \
+ $(ACE_ROOT)/ace/Init_ACE.h \
+ $(ACE_ROOT)/ace/Init_ACE.i \
+ $(ACE_ROOT)/ace/Sock_Connect.h \
+ $(ACE_ROOT)/ace/Sock_Connect.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Malloc_Allocator.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Unbounded_Set.h \
+ $(ACE_ROOT)/ace/Node.h \
+ $(ACE_ROOT)/ace/Node.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.inl \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/TAO_Export.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/String_Base.h \
+ $(ACE_ROOT)/ace/String_Base_Const.h \
+ $(ACE_ROOT)/ace/String_Base.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/String_Base.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
+ $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.inl \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Queue.inl \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/OctetSeqC.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/CORBA_String.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/StringSeqC.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServer.h \
+ $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \
+ $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \
+ $(TAO_ROOT)/tao/Abstract_Servant_Base.h \
+ $(ACE_ROOT)/ace/Atomic_Op.h \
+ $(ACE_ROOT)/ace/Atomic_Op.cpp \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \
+ $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/event_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h
+
+.obj/Receive_Task.o .obj/Receive_Task.so .shobj/Receive_Task.o .shobj/Receive_Task.so: Receive_Task.cpp Receive_Task.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Base.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ace_wchar.inl \
+ $(ACE_ROOT)/ace/OS_Errno.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/Default_Constants.h \
+ $(ACE_ROOT)/ace/Global_Macros.h \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Flag_Manip.h \
+ $(ACE_ROOT)/ace/Flag_Manip.i \
+ $(ACE_ROOT)/ace/Handle_Ops.h \
+ $(ACE_ROOT)/ace/Handle_Ops.i \
+ $(ACE_ROOT)/ace/Lib_Find.h \
+ $(ACE_ROOT)/ace/Lib_Find.i \
+ $(ACE_ROOT)/ace/Init_ACE.h \
+ $(ACE_ROOT)/ace/Init_ACE.i \
+ $(ACE_ROOT)/ace/Sock_Connect.h \
+ $(ACE_ROOT)/ace/Sock_Connect.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Malloc_Allocator.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Unbounded_Set.h \
+ $(ACE_ROOT)/ace/Node.h \
+ $(ACE_ROOT)/ace/Node.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.inl \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/TAO_Export.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/String_Base.h \
+ $(ACE_ROOT)/ace/String_Base_Const.h \
+ $(ACE_ROOT)/ace/String_Base.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/String_Base.i \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/CORBA_String.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Queue.inl \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Array_Base.h \
+ $(ACE_ROOT)/ace/Array_Base.cpp \
+ $(ACE_ROOT)/ace/Array_Base.inl \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Notification_Strategy.h \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Task_T.i
+
+.obj/Send_Task.o .obj/Send_Task.so .shobj/Send_Task.o .shobj/Send_Task.so: Send_Task.cpp Send_Task.h Servant_var.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ace_wchar.inl \
+ $(ACE_ROOT)/ace/OS_Errno.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ Servant_var.cpp \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Base.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/Default_Constants.h \
+ $(ACE_ROOT)/ace/Global_Macros.h \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Flag_Manip.h \
+ $(ACE_ROOT)/ace/Flag_Manip.i \
+ $(ACE_ROOT)/ace/Handle_Ops.h \
+ $(ACE_ROOT)/ace/Handle_Ops.i \
+ $(ACE_ROOT)/ace/Lib_Find.h \
+ $(ACE_ROOT)/ace/Lib_Find.i \
+ $(ACE_ROOT)/ace/Init_ACE.h \
+ $(ACE_ROOT)/ace/Init_ACE.i \
+ $(ACE_ROOT)/ace/Sock_Connect.h \
+ $(ACE_ROOT)/ace/Sock_Connect.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Malloc_Allocator.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Unbounded_Set.h \
+ $(ACE_ROOT)/ace/Node.h \
+ $(ACE_ROOT)/ace/Node.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Set.inl \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/TAO_Export.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/String_Base.h \
+ $(ACE_ROOT)/ace/String_Base_Const.h \
+ $(ACE_ROOT)/ace/String_Base.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/String_Base.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Broker.h \
+ $(TAO_ROOT)/tao/Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.h \
+ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \
+ $(ACE_ROOT)/ace/Unbounded_Queue.inl \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/OctetSeqC.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/CORBA_String.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/StringSeqC.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \
+ $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \
+ $(TAO_ROOT)/tao/TAO_Singleton.inl \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
+ Servant_var.inl Supplier.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServer.h \
+ $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \
+ $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \
+ $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \
+ $(TAO_ROOT)/tao/Abstract_Servant_Base.h \
+ $(ACE_ROOT)/ace/Atomic_Op.h \
+ $(ACE_ROOT)/ace/Atomic_Op.cpp \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \
+ $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/event_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Array_Base.h \
+ $(ACE_ROOT)/ace/Array_Base.cpp \
+ $(ACE_ROOT)/ace/Array_Base.inl \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Notification_Strategy.h \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.cpp
new file mode 100644
index 00000000000..dd1547a0ce2
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.cpp
@@ -0,0 +1,28 @@
+/**
+ * @file POA_Destroyer.cpp
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#include "POA_Destroyer.h"
+
+#if !defined(__ACE_INLINE__)
+#include "POA_Destroyer.inl"
+#endif /* __ACE_INLINE__ */
+
+POA_Destroyer::~POA_Destroyer ()
+{
+ if (CORBA::is_nil (this->poa_.in ()))
+ return;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY {
+ this->poa_->destroy (1, 1
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ } ACE_CATCHANY {
+ // @@ This event should be logged...
+ } ACE_ENDTRY;
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.h
new file mode 100644
index 00000000000..c19d3f87ea2
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.h
@@ -0,0 +1,36 @@
+/**
+ * @file poa_destroyer.h
+ *
+ * $Id$
+ *
+ * @author Jody Hagins <jody@atdesk.com>
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ *
+ */
+#ifndef CS_POA_DESTROYER_H
+#define CS_POA_DESTROYER_H
+
+#include "tao/PortableServer/PortableServer.h"
+
+class POA_Destroyer
+{
+public:
+ /// Constructor
+ ACE_EXPLICIT POA_Destroyer (PortableServer::POA_ptr poa);
+
+ /// Destructor
+ ~POA_Destroyer ();
+
+ /// Release the POA and do not destroy it.
+ void release ();
+
+private:
+ /// The owned object
+ PortableServer::POA_var poa_;
+};
+
+#if defined(__ACE_INLINE__)
+#include "POA_Destroyer.inl"
+#endif /* __ACE_INLINE__ */
+
+#endif /* CS_POA_DESTROYER_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.inl b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.inl
new file mode 100644
index 00000000000..43f761a9d38
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/POA_Destroyer.inl
@@ -0,0 +1,13 @@
+// $Id$
+
+ACE_INLINE
+POA_Destroyer::POA_Destroyer (PortableServer::POA_ptr poa)
+ : poa_ (PortableServer::POA::_duplicate (poa))
+{
+}
+
+ACE_INLINE void
+POA_Destroyer::release ()
+{
+ this->poa_ = PortableServer::POA::_nil ();
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.cpp
new file mode 100644
index 00000000000..c0debdfdeb0
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.cpp
@@ -0,0 +1,33 @@
+/**
+ * @file Receive_Task.cpp
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#include "Receive_Task.h"
+
+ACE_RCSID(EC_Colocated_Latency, Receive_Task, "$Id$")
+
+ECCL_Receive_Task::ECCL_Receive_Task (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+int
+ECCL_Receive_Task::svc (void)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ this->orb_->run (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ return -1;
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.h
new file mode 100644
index 00000000000..e6b0c58b648
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Receive_Task.h
@@ -0,0 +1,39 @@
+/**
+ * @file Receive_Task.h
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ECCL_RECEIVE_TASK_H
+#define ECCL_RECEIVE_TASK_H
+
+#include "tao/ORB.h"
+#include "ace/Task.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class ECCL_Receive_Task
+ *
+ * @brief Implement a simple ACE_Task to receive the events
+ *
+ */
+class ECCL_Receive_Task : public ACE_Task_Base
+{
+public:
+ /// Constructor
+ ECCL_Receive_Task (CORBA::ORB_ptr orb);
+
+ /// Run the experiment
+ int svc (void);
+
+private:
+ /// The consumer
+ CORBA::ORB_var orb_;
+};
+
+
+#endif /* ECCL_RECEIVE_TASK_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.cpp
new file mode 100644
index 00000000000..f0aeb55a35e
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.cpp
@@ -0,0 +1,70 @@
+/**
+ * @file Send_Task.cpp
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#include "Send_Task.h"
+#include "orbsvcs/Time_Utilities.h"
+
+ACE_RCSID(EC_Colocated_Latency, Send_Task, "$Id$")
+
+ECCL_Send_Task::ECCL_Send_Task (void)
+ : iterations_ (0)
+ , period_in_usecs_ (0)
+ , event_type_ (0)
+ , event_source_ (0)
+ , barrier_ (0)
+{
+}
+
+void
+ECCL_Send_Task::init (int iterations,
+ int period_in_usecs,
+ int event_type,
+ int event_source,
+ ECCL_Supplier *supplier,
+ ACE_Barrier *barrier)
+{
+ this->iterations_ = iterations;
+ this->period_in_usecs_ = period_in_usecs;
+ this->event_type_ = event_type;
+ this->event_source_ = event_source;
+ this->supplier_ = Servant_var<ECCL_Supplier> (supplier);
+ this->barrier_ = barrier;
+}
+
+int
+ECCL_Send_Task::svc (void)
+{
+ if (this->barrier_ == 0)
+ return -1;
+
+ this->barrier_->wait ();
+
+ RtecEventComm::EventSet event (1);
+ event.length (1);
+ event[0].header.type = this->event_type_;
+ event[0].header.source = this->event_source_;
+ event[0].header.ttl = 1;
+
+ ACE_Time_Value period (0, this->period_in_usecs_);
+
+ for (int i = 0; i != this->iterations_; ++i)
+ {
+ ACE_OS::sleep (period);
+ ACE_hrtime_t creation = ACE_OS::gethrtime ();
+ ORBSVCS_Time::hrtime_to_TimeT (event[0].header.creation_time,
+ creation);
+ // push one event...
+ this->supplier_->push (event TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ return 0;
+}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.h
new file mode 100644
index 00000000000..a14429ba490
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Send_Task.h
@@ -0,0 +1,56 @@
+/**
+ * @file Send_Task.h
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ECCL_SEND_TASK_H
+#define ECCL_SEND_TASK_H
+
+#include "Servant_var.h"
+#include "Supplier.h"
+#include "ace/Task.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class ECCL_Send_Task
+ *
+ * @brief Implement a simple ACE_Task to send the events
+ *
+ */
+class ECCL_Send_Task : public ACE_Task_Base
+{
+public:
+ /// Constructor
+ ECCL_Send_Task ();
+
+ void init (int iterations,
+ int period_in_usecs,
+ int event_type,
+ int event_source,
+ ECCL_Supplier *supplier,
+ ACE_Barrier *barrier);
+
+ /// Run the experiment
+ int svc (void);
+
+private:
+ int iterations_;
+
+ int period_in_usecs_;
+
+ int event_type_;
+
+ int event_source_;
+
+ Servant_var<ECCL_Supplier> supplier_;
+
+ ACE_Barrier *barrier_;
+};
+
+
+#endif /* ECCL_SEND_TASK_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.cpp
new file mode 100644
index 00000000000..3c561bbbcf6
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.cpp
@@ -0,0 +1,34 @@
+/**
+ * @file Servant_var.cpp
+ *
+ * $Id$
+ *
+ * @author Jody Hagins <jody@atdesk.com>
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+#ifndef CS_SERVANT_VAR_CPP
+#define CS_SERVANT_VAR_CPP
+
+#include "Servant_var.h"
+#include "tao/corba.h"
+
+#if !defined(__ACE_INLINE__)
+#include "Servant_var.inl"
+#endif /* __ACE_INLINE__ */
+
+template<class SERVANT>
+Servant_var<SERVANT>::~Servant_var ()
+{
+ if (this->ptr_ == 0)
+ return;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY {
+ this->ptr_->_remove_ref (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ } ACE_CATCHANY {
+ // @@ This event should be logged...
+ } ACE_ENDTRY;
+}
+
+#endif /* CS_SERVANT_VAR_CPP */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.h
new file mode 100644
index 00000000000..923702636a1
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.h
@@ -0,0 +1,65 @@
+/**
+ * @file Servant_var.h
+ *
+ * $Id$
+ *
+ * @author Jody Hagins <jody@atdesk.com>
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ *
+ */
+#ifndef CS_SERVANT_VAR_H
+#define CS_SERVANT_VAR_H
+
+#include "ace/config-all.h"
+
+template<class SERVANT>
+class Servant_var
+{
+public:
+ /// Constructor
+ /**
+ * @param s The contained servant. This class assumes ownership
+ */
+ ACE_EXPLICIT Servant_var (SERVANT *s = 0);
+
+ /// Copy constructor
+ Servant_var (const Servant_var<SERVANT> &rhs);
+
+ /// Assignment
+ Servant_var<SERVANT>& operator= (const Servant_var<SERVANT> &rhs);
+
+ /// Destructor
+ ~Servant_var ();
+
+ //@{
+ /** @name Smart pointer operations
+ */
+ const SERVANT * operator->() const;
+ SERVANT * operator->();
+
+ operator SERVANT *();
+ operator const SERVANT * () const;
+ //@}
+
+ //@{
+ /** @name Canonical CORBA T_var methods
+ */
+ SERVANT *in () const;
+ SERVANT *&out ();
+ SERVANT *&inout ();
+ //@}
+
+private:
+ /// The owned object
+ SERVANT *ptr_;
+};
+
+#if defined(__ACE_INLINE__)
+#include "Servant_var.inl"
+#endif /* __ACE_INLINE__ */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Servant_var.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#endif /* CS_SERVANT_VAR_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.inl b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.inl
new file mode 100644
index 00000000000..48678a17fe2
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Servant_var.inl
@@ -0,0 +1,77 @@
+// $Id$
+
+template<class SERVANT> ACE_INLINE
+Servant_var<SERVANT>::Servant_var (SERVANT *s)
+ : ptr_ (s)
+{
+}
+
+template<class SERVANT> ACE_INLINE
+Servant_var<SERVANT>::Servant_var (const Servant_var<SERVANT> &rhs)
+ : ptr_ (rhs.in ())
+{
+ if (this->ptr_ != 0)
+ this->ptr_->_add_ref ();
+}
+
+template<class SERVANT> ACE_INLINE Servant_var<SERVANT>&
+Servant_var<SERVANT>::operator= (const Servant_var<SERVANT> &rhs)
+{
+ Servant_var<SERVANT> tmp (rhs);
+ {
+ // @@ We should use
+ //
+ // std::swap (this->ptr_, tmp.ptr_);
+ //
+ // but we lack a proper STL on many platforms.
+ //
+ SERVANT *x = this->ptr_;
+ this->ptr_ = tmp.ptr_;
+ tmp.ptr_ = x;
+ }
+ return *this;
+}
+
+template<class SERVANT> ACE_INLINE SERVANT*
+Servant_var<SERVANT>::operator-> ()
+{
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE const SERVANT*
+Servant_var<SERVANT>::operator-> () const
+{
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE
+Servant_var<SERVANT>::operator SERVANT *()
+{
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE
+Servant_var<SERVANT>::operator const SERVANT * () const
+{
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE SERVANT *
+Servant_var<SERVANT>::in () const
+{
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE SERVANT *&
+Servant_var<SERVANT>::out ()
+{
+ this->ptr_->_remove_ref ();
+ this->ptr_ = 0;
+ return this->ptr_;
+}
+
+template<class SERVANT> ACE_INLINE SERVANT *&
+Servant_var<SERVANT>::inout ()
+{
+ return this->ptr_;
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.cpp
new file mode 100644
index 00000000000..a6d5e229b09
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.cpp
@@ -0,0 +1,104 @@
+/**
+ * @file Supplier.cpp
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#include "Supplier.h"
+#include "orbsvcs/Event_Service_Constants.h"
+
+ACE_RCSID(EC_Colocated_Latency, Supplier, "$Id$")
+
+ECCL_Supplier::ECCL_Supplier (void)
+{
+}
+
+void
+ECCL_Supplier::connect (RtecEventChannelAdmin::EventChannel_ptr ec,
+ int event_type
+ TAO_ENV_ARG_DECL)
+{
+ RtecEventChannelAdmin::SupplierAdmin_var supplier_admin =
+ ec->for_suppliers (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (!CORBA::is_nil (this->proxy_consumer_.in ()))
+ return;
+
+ this->proxy_consumer_ =
+ supplier_admin->obtain_push_consumer (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+
+ RtecEventComm::PushSupplier_var supplier =
+ this->_this (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ RtecEventChannelAdmin::SupplierQOS supplier_qos;
+ supplier_qos.publications.length (1);
+ RtecEventComm::EventHeader& sh0 =
+ supplier_qos.publications[0].event.header;
+ sh0.type = event_type;
+ sh0.source = 1; // first free event source
+
+ this->proxy_consumer_->connect_push_supplier (supplier.in (),
+ supplier_qos
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void
+ECCL_Supplier::disconnect (TAO_ENV_SINGLE_ARG_DECL)
+{
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy;
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (CORBA::is_nil (this->proxy_consumer_.in ()))
+ return;
+ proxy = this->proxy_consumer_._retn ();
+ }
+
+ ACE_TRY
+ {
+ proxy->disconnect_push_consumer (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY {} ACE_ENDTRY;
+
+ PortableServer::POA_var poa = this->_default_POA (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ PortableServer::ObjectId_var id = poa->servant_to_id (this
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ poa->deactivate_object (id.in () TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+void
+ECCL_Supplier::push (const RtecEventComm::EventSet &events
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy;
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (CORBA::is_nil (this->proxy_consumer_.in ()))
+ return;
+ proxy = this->proxy_consumer_;
+ }
+ proxy->push (events TAO_ENV_ARG_PARAMETER);
+
+}
+
+void
+ECCL_Supplier::disconnect_push_supplier (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
+ this->proxy_consumer_ =
+ RtecEventChannelAdmin::ProxyPushConsumer::_nil ();
+}
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.h b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.h
new file mode 100644
index 00000000000..4f16f7114d5
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/Supplier.h
@@ -0,0 +1,59 @@
+/**
+ * @file Supplier.h
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ECCL_SUPPLIER_H
+#define ECCL_SUPPLIER_H
+
+#include "orbsvcs/RtecEventCommS.h"
+#include "orbsvcs/RtecEventChannelAdminC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class ECCL_Supplier
+ *
+ * @brief Implement a simple supplier to keep track of the latency
+ *
+ */
+class ECCL_Supplier
+ : public virtual POA_RtecEventComm::PushSupplier
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ /// Constructor
+ ECCL_Supplier (void);
+
+ /// Connect to the event channel
+ void connect (RtecEventChannelAdmin::EventChannel_ptr ec,
+ int event_type
+ TAO_ENV_ARG_DECL);
+
+ /// Disconnect from the event channel
+ void disconnect (TAO_ENV_SINGLE_ARG_DECL);
+
+ void push (const RtecEventComm::EventSet &events
+ TAO_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ //@{
+ /** @name The RtecEventComm::PushSupplier methods
+ */
+ virtual void disconnect_push_supplier (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ //@}
+
+private:
+ /// Synchronize access to the internal data
+ TAO_SYNCH_MUTEX mutex_;
+
+ /// The proxy this object is connected to
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy_consumer_;
+};
+
+#endif /* ECCL_SUPPLIER_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/driver.cpp b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/driver.cpp
new file mode 100644
index 00000000000..daad4719e5c
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/driver.cpp
@@ -0,0 +1,319 @@
+// $Id$
+
+#include "Supplier.h"
+#include "Consumer.h"
+#include "Send_Task.h"
+#include "Receive_Task.h"
+#include "POA_Destroyer.h"
+#include "orbsvcs/Event/EC_Default_Factory.h"
+#include "orbsvcs/Event/EC_Event_Channel.h"
+#include "orbsvcs/Event_Service_Constants.h"
+
+#include "tao/Messaging.h"
+#include "tao/Strategies/advanced_resource.h"
+#include "ace/Get_Opt.h"
+#include "ace/Auto_Ptr.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Sample_History.h"
+#include "ace/Basic_Stats.h"
+#include "ace/Stats.h"
+#include "ace/Sched_Params.h"
+
+ACE_RCSID(EC_Colocated_Latency, server, "$Id$")
+
+int iterations = 10000;
+int nthreads = 0;
+int do_dump_history = 0;
+int high_priority_period = 0;
+int low_priority_period = 0;
+int disable_low_priority = 0;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "i:n:l:h:zd");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'i':
+ iterations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'n':
+ nthreads = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'h':
+ high_priority_period = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'l':
+ low_priority_period = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'd':
+ do_dump_history = 1;
+ break;
+
+ case 'z':
+ disable_low_priority = 1;
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-i iterations (iterations)"
+ "-h high_priority_period (usecs)"
+ "-l low_priority_period (usecs)"
+ "-n nthreads (low priority thread)"
+ "-d (dump history) "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int main (int argc, char *argv[])
+{
+ TAO_EC_Default_Factory::init_svcs ();
+
+ int low_priority =
+ ACE_Sched_Params::priority_min (ACE_SCHED_FIFO);
+ int process_priority =
+ ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
+ low_priority);
+ int high_priority =
+ ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
+ process_priority);
+
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ process_priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "server (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "server (%P|%t): sched_params failed\n"));
+ }
+
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "" TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var manager_object =
+ orb->resolve_initial_references ("ORBPolicyManager"
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::PolicyManager_var policy_manager =
+ CORBA::PolicyManager::_narrow (manager_object.in ()
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Any sync_scope;
+ sync_scope <<= Messaging::SYNC_WITH_TARGET;
+
+ CORBA::PolicyList policy_list (1);
+ policy_list.length (1);
+ policy_list[0] =
+ orb->create_policy (Messaging::SYNC_SCOPE_POLICY_TYPE,
+ sync_scope
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ policy_manager->set_policy_overrides (policy_list,
+ CORBA::SET_OVERRIDE
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA" TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in () TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (root_poa.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Panic: nil RootPOA\n"),
+ 1);
+
+ POA_Destroyer destroy_poa (root_poa.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ poa_manager->activate (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ TAO_EC_Event_Channel_Attributes attr (root_poa.in (),
+ root_poa.in ());
+ TAO_EC_Event_Channel* ec_impl;
+ ACE_NEW_RETURN (ec_impl,
+ TAO_EC_Event_Channel (attr),
+ 1);
+ PortableServer::ServantBase_var ec_owner (ec_impl);
+
+ ec_impl->activate (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ RtecEventChannelAdmin::EventChannel_var ec =
+ ec_impl->_this (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ int thread_count = 1;
+ if (disable_low_priority == 0)
+ thread_count += nthreads;
+ ACE_Barrier barrier (thread_count);
+
+ ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Supplier> > low_priority_suppliers (new Servant_var<ECCL_Supplier>[nthreads]);
+ ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Consumer> > low_priority_consumers (new Servant_var<ECCL_Consumer>[nthreads]);
+ ACE_Auto_Basic_Array_Ptr<ECCL_Send_Task> low_priority_tasks (new ECCL_Send_Task[nthreads]);
+ for (int i = 0; i != nthreads; ++i)
+ {
+ low_priority_suppliers[i] =
+ Servant_var<ECCL_Supplier> (new ECCL_Supplier);
+ low_priority_suppliers[i]->connect (ec.in (),
+ ACE_ES_EVENT_UNDEFINED + 1 + i
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ low_priority_consumers[i] =
+ Servant_var<ECCL_Consumer> (new ECCL_Consumer (iterations));
+ low_priority_consumers[i]->connect (ec.in (),
+ ACE_ES_EVENT_UNDEFINED + 1 + i
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ low_priority_tasks[i].init (iterations,
+ low_priority_period,
+ ACE_ES_EVENT_UNDEFINED + 1 + i,
+ 1,
+ low_priority_suppliers[i],
+ &barrier);
+
+ if (disable_low_priority == 0)
+ {
+ low_priority_tasks[i].activate (THR_NEW_LWP | THR_JOINABLE,
+ 1, 1,
+ low_priority);
+ }
+ }
+
+ Servant_var<ECCL_Consumer> consumer_impl (new ECCL_Consumer (iterations));
+ consumer_impl->connect (ec.in (), ACE_ES_EVENT_UNDEFINED
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ Servant_var<ECCL_Supplier> supplier_impl (new ECCL_Supplier);
+ supplier_impl->connect (ec.in (), ACE_ES_EVENT_UNDEFINED
+ TAO_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ECCL_Send_Task high_priority_task;
+ high_priority_task.init (iterations,
+ high_priority_period,
+ ACE_ES_EVENT_UNDEFINED,
+ 1,
+ supplier_impl,
+ &barrier);
+ high_priority_task.activate (THR_NEW_LWP | THR_JOINABLE,
+ 1, 1,
+ high_priority);
+
+ ACE_Thread_Manager::instance ()->wait ();
+
+ ACE_DEBUG ((LM_DEBUG, "Calibrating high res timer ...."));
+ ACE_High_Res_Timer::calibrate ();
+
+ ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
+ ACE_DEBUG ((LM_DEBUG, "Done (%d)\n", gsf));
+
+ ACE_Sample_History &history =
+ consumer_impl->sample_history ();
+ if (do_dump_history)
+ {
+ history.dump_samples ("HISTORY", gsf);
+ }
+
+ ACE_Basic_Stats high_priority_stats;
+ history.collect_basic_stats (high_priority_stats);
+ high_priority_stats.dump_results ("High Priority", gsf);
+
+ ACE_Basic_Stats low_priority_stats;
+ for (int k = 0; k != nthreads; ++k)
+ {
+ low_priority_consumers[k]->sample_history ().collect_basic_stats (low_priority_stats);
+ }
+ low_priority_stats.dump_results ("Low Priority", gsf);
+
+ supplier_impl->disconnect (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ consumer_impl->disconnect (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ for (int j = 0; j != nthreads; ++j)
+ {
+ low_priority_suppliers[j]->disconnect (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ low_priority_consumers[j]->disconnect (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ ec_impl->destroy (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
+
+ orb->destroy (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+
+template class Servant_var<ECCL_Supplier>;
+template class Servant_var<ECCL_Consumer>;
+template class ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Supplier> >;
+template class ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Consumer> >;
+template class ACE_Auto_Basic_Array_Ptr<ECCL_Send_Task>;
+
+#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+
+#pragma instantiate Servant_var<ECCL_Supplier>
+#pragma instantiate Servant_var<ECCL_Consumer>
+#pragma instantiate ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Supplier> >
+#pragma instantiate ACE_Auto_Basic_Array_Ptr<Servant_var<ECCL_Consumer> >
+#pragma instantiate ACE_Auto_Basic_Array_Ptr<ECCL_Send_Task>
+
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_null.conf b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_null.conf
new file mode 100644
index 00000000000..8df40ae7ad0
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_null.conf
@@ -0,0 +1,2 @@
+# $Id$
+static EC_Factory "-ECSupplierFiltering null"
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_per_supplier.conf b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_per_supplier.conf
new file mode 100644
index 00000000000..5fe9f00fce7
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/ec.supplier_filter_per_supplier.conf
@@ -0,0 +1,66 @@
+/**
+ * @file Consumer.h
+ *
+ * $Id$
+ *
+ */
+
+#ifndef ECCL_CONSUMER_H
+#define ECCL_CONSUMER_H
+
+#include "orbsvcs/RtecEventCommS.h"
+#include "orbsvcs/RtecEventChannelAdminC.h"
+#include "ace/Sample_History.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class ECCL_Consumer
+ *
+ * @brief Implement a simple consumer to keep track of the latency
+ *
+ */
+class ECCL_Consumer
+ : public virtual POA_RtecEventComm::PushConsumer
+ , public virtual PortableServer::RefCountServantBase
+
+{
+public:
+ /// Constructor
+ ECCL_Consumer (int iterations);
+
+ /// Connect to the event channel
+ void connect (RtecEventChannelAdmin::EventChannel_ptr ec,
+ int event_type
+ TAO_ENV_ARG_DECL);
+
+ /// Disconnect from the event channel
+ void disconnect (TAO_ENV_SINGLE_ARG_DECL);
+
+ /// Access the history of samples
+ ACE_Sample_History &sample_history (void);
+
+ //@{
+ /** @name The RtecEventComm::PushConsumer methods
+ */
+ virtual void push (const RtecEventComm::EventSet& events
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void disconnect_push_consumer (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ //@}
+
+private:
+ /// Synchronize access to the internal data
+ TAO_SYNCH_MUTEX mutex_;
+
+ /// The proxy this object is connected to
+ RtecEventChannelAdmin::ProxyPushSupplier_var proxy_supplier_;
+
+ /// The history of latency samples
+ ACE_Sample_History sample_history_;
+};
+
+#endif /* ECCL_CONSUMER_H */
diff --git a/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/run_supplier_filtering.sh b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/run_supplier_filtering.sh
new file mode 100755
index 00000000000..6c954c60d3d
--- /dev/null
+++ b/TAO/orbsvcs/performance-tests/EC_Colocated_Latency/run_supplier_filtering.sh
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+LOW_PRIORITY="1 20 40 60 80 100 120 140 160"
+
+for c in $LOW_PRIORITY; do
+ date
+ echo $c
+ ./driver -ORBSvcConf ec.supplier_filter_null.conf -z -i 50000 -n $c > ec_supplier_filter_null.$c.txt 2>&1
+ ./driver -ORBSvcConf ec.supplier_filter_per_supplier.conf -z -i 50000 -n $c > ec_supplier_filter_per_supplier.$c.txt 2>&1
+done