summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl95
1 files changed, 95 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl
new file mode 100644
index 00000000000..37930e408fe
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.inl
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+//
+// $Id$
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ACE_INLINE
+TAO_EC_Queue::
+ TAO_EC_Queue (size_t high_water_mark,
+ size_t low_water_mark,
+ ACE_Notification_Strategy *ns)
+ : ACE_Message_Queue<ACE_SYNCH> (high_water_mark,
+ low_water_mark,
+ ns)
+{
+}
+
+/// @todo The high water mark and low water mark shouldn't be
+/// hardcoded, check http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=565
+#ifndef TAO_EC_QUEUE_HWM
+#define TAO_EC_QUEUE_HWM 16384
+//#define TAO_EC_QUEUE_HWM 2
+#endif
+
+#ifndef TAO_EC_QUEUE_LWM
+#define TAO_EC_QUEUE_LWM 16
+//#define TAO_EC_QUEUE_LWM 1
+#endif
+
+ACE_INLINE
+TAO_EC_Dispatching_Task::
+TAO_EC_Dispatching_Task (ACE_Thread_Manager* thr_manager, TAO_EC_Queue_Full_Service_Object* so)
+ : ACE_Task<ACE_SYNCH> (thr_manager),
+ allocator_ (0),
+ the_queue_ (TAO_EC_QUEUE_HWM, TAO_EC_QUEUE_LWM),
+ queue_full_service_object_ (so)
+{
+ this->msg_queue (&this->the_queue_);
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_EC_Dispatch_Command::TAO_EC_Dispatch_Command (ACE_Allocator *mb_allocator)
+ : ACE_Message_Block (mb_allocator)
+{
+}
+
+ACE_INLINE
+TAO_EC_Dispatch_Command::TAO_EC_Dispatch_Command (ACE_Data_Block *data_block,
+ ACE_Allocator *mb_allocator)
+ : ACE_Message_Block (data_block,
+ 0,
+ mb_allocator)
+{
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_EC_Shutdown_Task_Command::
+ TAO_EC_Shutdown_Task_Command (ACE_Allocator *mb_allocator)
+ : TAO_EC_Dispatch_Command (mb_allocator)
+{
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_EC_Push_Command::TAO_EC_Push_Command (
+ TAO_EC_ProxyPushSupplier* proxy,
+ RtecEventComm::PushConsumer_ptr consumer,
+ RtecEventComm::EventSet& event,
+ ACE_Data_Block* data_block,
+ ACE_Allocator *mb_allocator)
+ : TAO_EC_Dispatch_Command (data_block, mb_allocator),
+ proxy_ (proxy),
+ consumer_ (RtecEventComm::PushConsumer::_duplicate (consumer))
+
+{
+ //
+ // Efficient copy, steal the buffer from <event>
+ // We cannot do this on the initialization because get_buffer()
+ // could get called first, effectively setting maximum() and
+ // length() to 0!
+ //
+ CORBA::ULong maximum = event.maximum ();
+ CORBA::ULong length = event.length ();
+ RtecEventComm::Event* buffer = event.get_buffer (1);
+ event_.replace (maximum, length, buffer, 1);
+
+ this->proxy_->_incr_refcnt ();
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL