diff options
Diffstat (limited to 'TAO/tao/Incoming_Message_Queue.inl')
-rw-r--r-- | TAO/tao/Incoming_Message_Queue.inl | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/TAO/tao/Incoming_Message_Queue.inl b/TAO/tao/Incoming_Message_Queue.inl index 13ee962af2f..df61432d461 100644 --- a/TAO/tao/Incoming_Message_Queue.inl +++ b/TAO/tao/Incoming_Message_Queue.inl @@ -3,6 +3,7 @@ /************************************************************************/ // Methods for TAO_Queued_Data /************************************************************************/ +/*static*/ ACE_INLINE TAO_Queued_Data * TAO_Queued_Data::get_queued_data (void) { @@ -15,6 +16,7 @@ TAO_Queued_Data::get_queued_data (void) return qd; } +/*static*/ ACE_INLINE void TAO_Queued_Data::release (TAO_Queued_Data *qd) { @@ -24,6 +26,23 @@ TAO_Queued_Data::release (TAO_Queued_Data *qd) delete qd; } +/*static*/ +ACE_INLINE TAO_Queued_Data * +TAO_Queued_Data::duplicate (TAO_Queued_Data &sqd) +{ + // @@TODO: Use the global pool for allocationg... + TAO_Queued_Data *qd = 0; + ACE_NEW_RETURN (qd, + TAO_Queued_Data (sqd), + 0); + + return qd; +} + +/************************************************************************/ +// Methods for TAO_Incoming_Message_Queue +/************************************************************************/ + ACE_INLINE CORBA::ULong TAO_Incoming_Message_Queue::queue_length (void) { @@ -38,7 +57,8 @@ TAO_Incoming_Message_Queue::is_tail_complete (void) return -1; if (this->size_ && - this->queued_data_->missing_data_ == 0) + this->queued_data_->missing_data_ == 0 && + this->queued_data_->more_fragments_ == 0) return 1; return 0; @@ -51,7 +71,21 @@ TAO_Incoming_Message_Queue::is_head_complete (void) return -1; if (this->size_ && - this->queued_data_->next_->missing_data_ == 0) + this->queued_data_->next_->missing_data_ == 0 && + this->queued_data_->more_fragments_ == 0) + return 1; + + return 0; +} + +ACE_INLINE int +TAO_Incoming_Message_Queue::is_tail_fragmented (void) +{ + if (this->size_ == 0) + return 0; + + if (this->size_ && + this->queued_data_->more_fragments_ == 0) return 1; return 0; |