summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h
index cbd2d15ef7d..8b99ed935cb 100644
--- a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching.h
@@ -61,10 +61,12 @@ public:
// their jobs.
virtual void push (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
const RtecEventComm::EventSet& event,
TAO_EC_QOS_Info& qos_info,
CORBA::Environment& env) = 0;
virtual void push_nocopy (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
RtecEventComm::EventSet& event,
TAO_EC_QOS_Info& qos_info,
CORBA::Environment& env) = 0;
@@ -75,7 +77,7 @@ public:
// ****************************************************************
-class TAO_ORBSVCS_Export TAO_EC_Reactive_Dispatching : public TAO_EC_Dispatching
+class TAO_EC_Reactive_Dispatching : public TAO_EC_Dispatching
{
// = TITLE
// Dispatch using the caller thread.
@@ -93,15 +95,53 @@ public:
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,
CORBA::Environment& env);
virtual void push_nocopy (TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
RtecEventComm::EventSet& event,
TAO_EC_QOS_Info& qos_info,
CORBA::Environment& env);
};
+// ****************************************************************
+
+#if 0
+#include "orbsvcs/RtecSchedulerC.h"
+// @@ Move to a separate file, otherwise we have to include the file
+// above everywhere
+class TAO_EC_Priority_Dispatching
+{
+ // = TITLE
+ // Priority based dispatching.
+ //
+ // = DESCRIPTION
+ // The events are processed using a different queue for each
+ // priority; a thread process each queue, each thread runs at a
+ // different OS priority.
+ //
+public:
+ TAO_EC_Priority_Dispatching (RtecScheduler::Scheduler_ptr
+ scheduler);
+ // The scheduler is used to find the range of priorities and similar
+ // info.
+
+ // = The EC_Dispatching methods.
+ virtual void activate (void);
+ virtual void shutdown (void);
+ virtual void push (TAO_EC_ProxyPushSupplier* proxy,
+ const RtecEventComm::EventSet& event,
+ const TAO_EC_QOS_Info& qos_info,
+ CORBA::Environment& env);
+
+private:
+ ACE_Thread_Manager thread_manager_;
+ // Use our own thread manager.
+};
+#endif /* 0 */
+
// @@ TODO
// We could implement other dispatching strategies, such as:
// - A single queue with a thread pool to process each event (how does