Message_Queue.inl

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Message_Queue.inl,v 4.6 2006/05/30 10:57:22 jwillemsen Exp
00004 
00005 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00006 
00007 ACE_INLINE
00008 ACE_Message_Queue_Base::ACE_Message_Queue_Base (void)
00009 {
00010 }
00011 
00012 #if defined (ACE_VXWORKS)
00013 // Specialization to use native VxWorks Message Queues.
00014 
00015 ACE_INLINE MSG_Q_ID
00016 ACE_Message_Queue_Vx::msgq (void)
00017 {
00018   // Hijack the tail_ field to store the MSG_Q_ID.
00019   return reinterpret_cast<MSG_Q_ID> (tail_);
00020 }
00021 
00022 #endif /* ACE_VXWORKS */
00023 
00024 #if defined (ACE_WIN32) && (ACE_HAS_WINNT4 != 0)
00025 ACE_INLINE int
00026 ACE_Message_Queue_NT::enqueue_tail (ACE_Message_Block *new_item,
00027                                     ACE_Time_Value *timeout)
00028 {
00029   ACE_TRACE ("ACE_Message_Queue_NT::enqueue_tail");
00030   return this->enqueue (new_item, timeout);
00031 }
00032 
00033 ACE_INLINE int
00034 ACE_Message_Queue_NT::dequeue_head (ACE_Message_Block *&first_item,
00035                                     ACE_Time_Value *timeout)
00036 {
00037   ACE_TRACE ("ACE_Message_Queue_NT::dequeue_head");
00038   return this->dequeue (first_item, timeout);
00039 }
00040 
00041 ACE_INLINE int
00042 ACE_Message_Queue_NT::is_full (void)
00043 {
00044   ACE_TRACE ("ACE_Message_Queue_NT::is_full");
00045   return 0; // Always not full.
00046 }
00047 
00048 ACE_INLINE int
00049 ACE_Message_Queue_NT::is_empty (void)
00050 {
00051   ACE_TRACE ("ACE_Message_Queue_NT::is_empty");
00052   ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, 0);
00053 
00054   return this->cur_bytes_ > 0 || this->cur_count_ > 0 ? 0 : 1;
00055 }
00056 
00057 ACE_INLINE size_t
00058 ACE_Message_Queue_NT::message_bytes (void)
00059 {
00060   ACE_TRACE ("ACE_Message_Queue_NT::message_bytes");
00061   // Accessing to size_t must be atomic.
00062   return this->cur_bytes_;
00063 }
00064 
00065 ACE_INLINE size_t
00066 ACE_Message_Queue_NT::message_length (void)
00067 {
00068   ACE_TRACE ("ACE_Message_Queue_NT::message_length");
00069   // Accessing to size_t must be atomic.
00070   return this->cur_length_;
00071 }
00072 
00073 ACE_INLINE size_t
00074 ACE_Message_Queue_NT::message_count (void)
00075 {
00076   ACE_TRACE ("ACE_Message_Queue_NT::message_count");
00077   // Accessing to size_t must be atomic.
00078   return this->cur_count_;
00079 }
00080 
00081 ACE_INLINE void
00082 ACE_Message_Queue_NT::message_bytes (size_t new_value)
00083 {
00084   ACE_TRACE ("ACE_Message_Queue_NT::message_bytes");
00085   ACE_GUARD (ACE_Thread_Mutex, ace_mon, this->lock_);
00086 
00087   this->cur_bytes_ = new_value;
00088 }
00089 
00090 ACE_INLINE void
00091 ACE_Message_Queue_NT::message_length (size_t new_value)
00092 {
00093   ACE_TRACE ("ACE_Message_Queue_NT::message_length");
00094   ACE_GUARD (ACE_Thread_Mutex, ace_mon, this->lock_);
00095 
00096   this->cur_length_ = new_value;
00097 }
00098 
00099 ACE_INLINE DWORD
00100 ACE_Message_Queue_NT::max_threads (void)
00101 {
00102   ACE_TRACE ("ACE_Message_Queue_NT::max_threads");
00103   return this->max_cthrs_;
00104 }
00105 
00106 ACE_INLINE int
00107 ACE_Message_Queue_NT::deactivated (void)
00108 {
00109   ACE_TRACE ("ACE_Message_Queue_NT::deactivated");
00110   // Accessing to int must be atomic.
00111   return this->state_ == ACE_Message_Queue_Base::DEACTIVATED;
00112 }
00113 
00114 ACE_INLINE ACE_HANDLE
00115 ACE_Message_Queue_NT::completion_port (void)
00116 {
00117   ACE_TRACE ("ACE_Message_Queue_NT::completion_port");
00118   return this->completion_port_;
00119 }
00120 
00121 ACE_INLINE int
00122 ACE_Message_Queue_NT::peek_dequeue_head (ACE_Message_Block *&first_item,
00123                                          ACE_Time_Value *timeout)
00124 {
00125   ACE_UNUSED_ARG(first_item);
00126   ACE_UNUSED_ARG(timeout);
00127   ACE_NOTSUP_RETURN (-1);
00128 }
00129 
00130 ACE_INLINE ACE_Notification_Strategy *
00131 ACE_Message_Queue_NT::notification_strategy (void)
00132 {
00133   ACE_NOTSUP_RETURN (0);
00134 }
00135 
00136 ACE_INLINE void
00137 ACE_Message_Queue_NT::notification_strategy (ACE_Notification_Strategy *)
00138 {
00139 }
00140 
00141 #endif /* ACE_WIN32 && ACE_HAS_WINNT4 != 0 */
00142 
00143 ACE_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 09:41:56 2006 for ACE by doxygen 1.3.6