EC_Dispatching_Task.i

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // EC_Dispatching_Task.i,v 1.11 2005/11/10 06:47:23 ossama Exp
00004 
00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00006 
00007 ACE_INLINE
00008 TAO_EC_Queue::
00009     TAO_EC_Queue (size_t high_water_mark,
00010                   size_t low_water_mark,
00011                   ACE_Notification_Strategy *ns)
00012       :  ACE_Message_Queue<ACE_SYNCH> (high_water_mark,
00013                                        low_water_mark,
00014                                        ns)
00015 {
00016 }
00017 
00018 /// @todo The high water mark and low water mark shouldn't be
00019 /// hardcoded, check http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=565
00020 #ifndef TAO_EC_QUEUE_HWM
00021 #define TAO_EC_QUEUE_HWM 16384
00022 //#define TAO_EC_QUEUE_HWM 2
00023 #endif
00024 
00025 #ifndef TAO_EC_QUEUE_LWM
00026 #define TAO_EC_QUEUE_LWM 16
00027 //#define TAO_EC_QUEUE_LWM 1
00028 #endif
00029 
00030 ACE_INLINE
00031 TAO_EC_Dispatching_Task::
00032 TAO_EC_Dispatching_Task (ACE_Thread_Manager* thr_manager, TAO_EC_Queue_Full_Service_Object* so)
00033   :  ACE_Task<ACE_SYNCH> (thr_manager),
00034      allocator_ (0),
00035      the_queue_ (TAO_EC_QUEUE_HWM, TAO_EC_QUEUE_LWM),
00036      queue_full_service_object_ (so)
00037 {
00038   this->msg_queue (&this->the_queue_);
00039 }
00040 
00041 // ****************************************************************
00042 
00043 ACE_INLINE
00044 TAO_EC_Dispatch_Command::TAO_EC_Dispatch_Command (ACE_Allocator *mb_allocator)
00045   :  ACE_Message_Block (mb_allocator)
00046 {
00047 }
00048 
00049 ACE_INLINE
00050 TAO_EC_Dispatch_Command::TAO_EC_Dispatch_Command (ACE_Data_Block *data_block,
00051                                                   ACE_Allocator *mb_allocator)
00052   :  ACE_Message_Block (data_block,
00053                         0,
00054                         mb_allocator)
00055 {
00056 }
00057 
00058 // ****************************************************************
00059 
00060 ACE_INLINE
00061 TAO_EC_Shutdown_Task_Command::
00062     TAO_EC_Shutdown_Task_Command (ACE_Allocator *mb_allocator)
00063   :  TAO_EC_Dispatch_Command (mb_allocator)
00064 {
00065 }
00066 
00067 // ****************************************************************
00068 
00069 ACE_INLINE
00070 TAO_EC_Push_Command::TAO_EC_Push_Command (
00071      TAO_EC_ProxyPushSupplier* proxy,
00072      RtecEventComm::PushConsumer_ptr consumer,
00073      RtecEventComm::EventSet& event,
00074      ACE_Data_Block* data_block,
00075      ACE_Allocator *mb_allocator)
00076   :  TAO_EC_Dispatch_Command (data_block, mb_allocator),
00077      proxy_ (proxy),
00078      consumer_ (RtecEventComm::PushConsumer::_duplicate (consumer))
00079 
00080 {
00081   //
00082   // Efficient copy, steal the buffer from <event>
00083   // We cannot do this on the initialization because get_buffer()
00084   // could get called first, effectively setting maximum() and
00085   // length() to 0!
00086   //
00087   CORBA::ULong maximum = event.maximum ();
00088   CORBA::ULong length = event.length ();
00089   RtecEventComm::Event* buffer = event.get_buffer (1);
00090   event_.replace (maximum, length, buffer, 1);
00091 
00092   this->proxy_->_incr_refcnt ();
00093 }
00094 
00095 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 13:11:07 2006 for TAO_RTEvent by doxygen 1.3.6