3 // $Id: Message_Block.inl 80826 2008-03-04 14:51:23Z wotte $
5 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
7 ACE_INLINE ACE_Data_Block *
8 ACE_Message_Block::data_block (void) const
10 ACE_TRACE ("ACE_Message_Block::data_block");
11 return this->data_block_;
14 ACE_INLINE ACE_Message_Block::Message_Flags
15 ACE_Message_Block::set_self_flags (ACE_Message_Block::Message_Flags more_flags)
17 ACE_TRACE ("ACE_Message_Block::set_self_flags");
18 // Later we might mask more_glags so that user can't change internal
19 // ones: more_flags &= ~(USER_FLAGS -1).
20 return ACE_SET_BITS (this->flags_, more_flags);
23 ACE_INLINE ACE_Message_Block::Message_Flags
24 ACE_Message_Block::clr_self_flags (ACE_Message_Block::Message_Flags less_flags)
26 ACE_TRACE ("ACE_Message_Block::clr_self_flags");
27 // Later we might mask more_flags so that user can't change internal
28 // ones: less_flags &= ~(USER_FLAGS -1).
29 return ACE_CLR_BITS (this->flags_, less_flags);
32 ACE_INLINE ACE_Message_Block::Message_Flags
33 ACE_Message_Block::self_flags (void) const
35 ACE_TRACE ("ACE_Message_Block::self_flags");
40 ACE_Data_Block::reference_count_i (void) const
42 return reference_count_;
46 ACE_Message_Block::reference_count (void) const
48 return data_block () ? data_block ()->reference_count () : 0;
52 ACE_Data_Block::base (void) const
54 ACE_TRACE ("ACE_Data_Block::base");
59 ACE_Data_Block::size (void) const
61 ACE_TRACE ("ACE_Data_Block::size");
62 return this->cur_size_;
66 ACE_Data_Block::capacity (void) const
68 ACE_TRACE ("ACE_Data_Block::capacity");
69 return this->max_size_;
72 ACE_INLINE ACE_Message_Block::Message_Flags
73 ACE_Data_Block::set_flags (ACE_Message_Block::Message_Flags more_flags)
75 ACE_TRACE ("ACE_Data_Block::set_flags");
76 // Later we might mask more_glags so that user can't change internal
77 // ones: more_flags &= ~(USER_FLAGS -1).
78 return ACE_SET_BITS (this->flags_, more_flags);
81 ACE_INLINE ACE_Message_Block::Message_Flags
82 ACE_Data_Block::clr_flags (ACE_Message_Block::Message_Flags less_flags)
84 ACE_TRACE ("ACE_Data_Block::clr_flags");
85 // Later we might mask more_flags so that user can't change internal
86 // ones: less_flags &= ~(USER_FLAGS -1).
87 return ACE_CLR_BITS (this->flags_, less_flags);
90 ACE_INLINE ACE_Message_Block::Message_Flags
91 ACE_Data_Block::flags (void) const
93 ACE_TRACE ("ACE_Data_Block::flags");
97 ACE_INLINE ACE_Allocator*
98 ACE_Data_Block::data_block_allocator (void) const
100 ACE_TRACE ("ACE_Data_Block::data_block_allocator");
101 return this->data_block_allocator_;
104 ACE_INLINE ACE_Message_Block::Message_Flags
105 ACE_Message_Block::set_flags (ACE_Message_Block::Message_Flags more_flags)
107 ACE_TRACE ("ACE_Message_Block::set_flags");
108 return this->data_block ()->set_flags (more_flags);
111 ACE_INLINE ACE_Message_Block::Message_Flags
112 ACE_Message_Block::clr_flags (ACE_Message_Block::Message_Flags less_flags)
114 ACE_TRACE ("ACE_Message_Block::clr_flags");
115 return this->data_block ()->clr_flags (less_flags);
118 ACE_INLINE ACE_Message_Block::Message_Flags
119 ACE_Message_Block::flags (void) const
121 ACE_TRACE ("ACE_Message_Block::flags");
122 return this->data_block ()->flags ();
125 // Return the length of the "active" portion of the message.
128 ACE_Message_Block::length (void) const
130 ACE_TRACE ("ACE_Message_Block::length");
131 return this->wr_ptr_ - this->rd_ptr_;
134 // Sets the length of the "active" portion of the message. This is
135 // defined as the offset from RD_PTR to WR_PTR.
138 ACE_Message_Block::length (size_t len)
140 ACE_TRACE ("ACE_Message_Block::length");
141 this->wr_ptr_ = this->rd_ptr_ + len;
144 // Return the length of the potential size of the message.
147 ACE_Message_Block::size (void) const
149 ACE_TRACE ("ACE_Message_Block::size");
150 return this->data_block ()->size ();
154 ACE_Message_Block::capacity (void) const
156 ACE_TRACE ("ACE_Message_Block::capacity");
157 return this->data_block ()->capacity ();
160 ACE_INLINE ACE_Message_Block::ACE_Message_Type
161 ACE_Data_Block::msg_type (void) const
163 ACE_TRACE ("ACE_Data_Block::msg_type");
168 ACE_Data_Block::msg_type (ACE_Message_Block::ACE_Message_Type t)
170 ACE_TRACE ("ACE_Data_Block::msg_type");
174 ACE_INLINE ACE_Message_Block::ACE_Message_Type
175 ACE_Message_Block::msg_type (void) const
177 ACE_TRACE ("ACE_Message_Block::msg_type");
178 return this->data_block ()->msg_type ();
182 ACE_Message_Block::msg_type (ACE_Message_Block::ACE_Message_Type t)
184 ACE_TRACE ("ACE_Message_Block::msg_type");
185 this->data_block ()->msg_type (t);
188 ACE_INLINE ACE_Message_Block::ACE_Message_Type
189 ACE_Message_Block::msg_class (void) const
191 ACE_TRACE ("ACE_Message_Block::msg_class");
193 if (this->msg_type () < ACE_Message_Block::MB_PRIORITY)
194 return ACE_Message_Block::MB_NORMAL;
195 else if (this->msg_type () < ACE_Message_Block::MB_USER)
196 return ACE_Message_Block::MB_PRIORITY;
198 return ACE_Message_Block::MB_USER;
202 ACE_Message_Block::is_data_msg (void) const
204 ACE_TRACE ("ACE_Message_Block::is_data_msg");
205 ACE_Message_Type mt = this->msg_type ();
207 mt == ACE_Message_Block::MB_DATA
208 || mt == ACE_Message_Block::MB_PROTO
209 || mt == ACE_Message_Block::MB_PCPROTO;
212 ACE_INLINE unsigned long
213 ACE_Message_Block::msg_priority (void) const
215 ACE_TRACE ("ACE_Message_Block::msg_priority");
216 return this->priority_;
220 ACE_Message_Block::msg_priority (unsigned long pri)
222 ACE_TRACE ("ACE_Message_Block::msg_priority");
223 this->priority_ = pri;
226 ACE_INLINE const ACE_Time_Value &
227 ACE_Message_Block::msg_execution_time (void) const
229 ACE_TRACE ("ACE_Message_Block::msg_execution_time (void)");
230 #if defined (ACE_HAS_TIMED_MESSAGE_BLOCKS)
231 return this->execution_time_;
233 return ACE_Time_Value::zero;
234 #endif /* ACE_HAS_TIMED_MESSAGE_BLOCKS */
238 ACE_Message_Block::msg_execution_time (const ACE_Time_Value &et)
240 ACE_TRACE ("ACE_Message_Block::msg_execution_time (const ACE_Time_Value & et)");
241 #if defined (ACE_HAS_TIMED_MESSAGE_BLOCKS)
242 this->execution_time_ = et;
245 #endif /* ACE_HAS_TIMED_MESSAGE_BLOCKS */
248 ACE_INLINE const ACE_Time_Value &
249 ACE_Message_Block::msg_deadline_time (void) const
251 ACE_TRACE ("ACE_Message_Block::msg_deadline_time (void)");
253 #if defined (ACE_HAS_TIMED_MESSAGE_BLOCKS)
254 return this->deadline_time_;
256 return ACE_Time_Value::max_time; // absolute time of deadline
257 #endif /* ACE_HAS_TIMED_MESSAGE_BLOCKS */
261 ACE_Message_Block::msg_deadline_time (const ACE_Time_Value &dt)
263 ACE_TRACE ("ACE_Message_Block::msg_deadline_time (const ACE_Time_Value & et)");
264 #if defined (ACE_HAS_TIMED_MESSAGE_BLOCKS)
265 this->deadline_time_ = dt;
268 #endif /* ACE_HAS_TIMED_MESSAGE_BLOCKS */
272 ACE_Message_Block::access_allocators (ACE_Allocator *& allocator_strategy,
273 ACE_Allocator *& data_block_allocator,
274 ACE_Allocator *& message_block_allocator)
277 this->data_block_->allocator_strategy_;
278 data_block_allocator =
279 this->data_block_->data_block_allocator_;
280 message_block_allocator =
281 this->message_block_allocator_;
285 ACE_Message_Block::base (void) const
287 ACE_TRACE ("ACE_Message_Block::base");
288 return this->data_block ()->base ();
292 ACE_Message_Block::base (char *msg_data,
294 Message_Flags msg_flags)
296 ACE_TRACE ("ACE_Message_Block::base");
299 this->data_block ()->base (msg_data, msg_length, msg_flags);
303 ACE_Message_Block::rd_ptr (void) const
305 ACE_TRACE ("ACE_Message_Block::rd_ptr");
306 return this->base () + this->rd_ptr_;
310 ACE_Message_Block::wr_ptr (char *new_ptr)
312 ACE_TRACE ("ACE_Message_Block::wr_ptr");
313 this->wr_ptr_ = new_ptr - this->base ();
316 // Return a pointer to 1 past the end of the data buffer.
319 ACE_Data_Block::mark (void) const
321 ACE_TRACE ("ACE_Data_Block::mark");
322 return this->base_ + this->cur_size_;
326 ACE_Message_Block::mark (void) const
328 ACE_TRACE ("ACE_Message_Block::mark");
329 return this->data_block ()->mark ();
333 ACE_Data_Block::end (void) const
335 ACE_TRACE ("ACE_Data_Block::end");
336 return this->base_ + this->max_size_;
340 ACE_Message_Block::end (void) const
342 ACE_TRACE ("ACE_Message_Block::end");
343 return this->data_block ()->end ();
348 ACE_Message_Block::rd_ptr (char *new_ptr)
350 ACE_TRACE ("ACE_Message_Block::rd_ptr");
351 this->rd_ptr_ = new_ptr - this->base ();
355 ACE_Message_Block::rd_ptr (size_t n)
357 ACE_TRACE ("ACE_Message_Block::rd_ptr");
362 ACE_Message_Block::wr_ptr (void) const
364 ACE_TRACE ("ACE_Message_Block::wr_ptr");
365 return this->base () + this->wr_ptr_;
369 ACE_Message_Block::wr_ptr (size_t n)
371 ACE_TRACE ("ACE_Message_Block::wr_ptr");
376 ACE_Message_Block::reset (void)
378 ACE_TRACE ("ACE_Message_Block::reset");
384 ACE_Message_Block::space (void) const
386 ACE_TRACE ("ACE_Message_Block::space");
387 return this->mark () - this->wr_ptr ();
390 ACE_INLINE ACE_Data_Block *
391 ACE_Message_Block::replace_data_block (ACE_Data_Block *db)
393 ACE_TRACE ("ACE_Message_Block::replace_data_block");
394 ACE_Data_Block *old = this->data_block_;
395 this->data_block_ = db;
399 // Set the read and write pointers in the <Message_Block> to point
400 // to the buffer in the <ACE_Data_Block>.
401 this->rd_ptr (this->data_block ()->base ());
402 this->wr_ptr (this->data_block ()->base ());
409 ACE_Message_Block::cont (ACE_Message_Block *cont_msg)
411 ACE_TRACE ("ACE_Message_Block::cont");
412 this->cont_ = cont_msg;
415 ACE_INLINE ACE_Message_Block *
416 ACE_Message_Block::cont (void) const
418 ACE_TRACE ("ACE_Message_Block::cont");
423 ACE_Message_Block::reset_allocators (ACE_Allocator *allocator_strategy,
424 ACE_Allocator *data_block_allocator,
425 ACE_Allocator *message_block_allocator)
427 this->data_block_->allocator_strategy_ =
429 this->data_block_->data_block_allocator_ =
430 data_block_allocator;
431 this->message_block_allocator_ =
432 message_block_allocator;
434 if (this->cont () != 0)
435 this->cont ()->reset_allocators (allocator_strategy,
436 data_block_allocator,
437 message_block_allocator);
441 ACE_Message_Block::next (ACE_Message_Block *next_msg)
443 ACE_TRACE ("ACE_Message_Block::next");
444 this->next_ = next_msg;
447 ACE_INLINE ACE_Message_Block *
448 ACE_Message_Block::next (void) const
450 ACE_TRACE ("ACE_Message_Block::next");
455 ACE_Message_Block::prev (ACE_Message_Block *next_msg)
457 ACE_TRACE ("ACE_Message_Block::prev");
458 this->prev_ = next_msg;
461 ACE_INLINE ACE_Message_Block *
462 ACE_Message_Block::prev (void) const
464 ACE_TRACE ("ACE_Message_Block::prev");
468 ACE_INLINE ACE_Allocator *
469 ACE_Data_Block::allocator_strategy (void) const
471 ACE_TRACE ("ACE_Data_Block::allocator_strategy");
472 return this->allocator_strategy_;
475 ACE_INLINE ACE_Lock *
476 ACE_Data_Block::locking_strategy (void)
478 ACE_TRACE ("ACE_Data_Block::locking_strategy");
479 return this->locking_strategy_;
482 ACE_INLINE ACE_Lock *
483 ACE_Data_Block::locking_strategy (ACE_Lock *nls)
485 ACE_TRACE ("ACE_Data_Block::locking_strategy");
486 ACE_Lock *ols = this->locking_strategy_;
488 this->locking_strategy_ = nls;
492 ACE_INLINE ACE_Lock *
493 ACE_Message_Block::locking_strategy (void)
495 ACE_TRACE ("ACE_Message_Block::locking_strategy");
496 return this->data_block ()->locking_strategy ();
499 ACE_INLINE ACE_Lock *
500 ACE_Message_Block::locking_strategy (ACE_Lock *nls)
502 ACE_TRACE ("ACE_Message_Block::locking_strategy");
503 ACE_Lock *ols = this->data_block ()->locking_strategy ();
504 this->data_block ()->locking_strategy (nls);
508 ACE_END_VERSIONED_NAMESPACE_DECL