summaryrefslogtreecommitdiff
path: root/TAO/tao/Incoming_Message_Queue.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Incoming_Message_Queue.inl')
-rw-r--r--TAO/tao/Incoming_Message_Queue.inl38
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;