TAO_Incoming_Message_Queue Class Reference

A queue of the messages in the incoming data path. More...

#include <Incoming_Message_Queue.h>

Collaboration diagram for TAO_Incoming_Message_Queue:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Incoming_Message_Queue (TAO_ORB_Core *orb_core)
 Constructor.
 ~TAO_Incoming_Message_Queue (void)
 Destructor.
TAO_Queued_Datadequeue_head (void)
 Adding and deleting a node from the queue.
TAO_Queued_Datadequeue_tail (void)
int enqueue_tail (TAO_Queued_Data *nd)
size_t copy_tail (ACE_Message_Block &block)
CORBA::ULong queue_length (void)
 Return the length of the queue..
int is_tail_fragmented (void)
 Check to see if the message at the tail (complete or incomplete) is a GIOP Fragment.
size_t missing_data_tail (void) const
 Return the size of data that is missing in tail of the queue.
TAO_Queued_Datafind_fragment_chain (CORBA::Octet major, CORBA::Octet minor) const
 Find the first fragment that matches the GIOP version.
TAO_Queued_Datafind_fragment_chain (CORBA::ULong request_id) const
 Find the first fragment that matches the request id.
Node Inspection Predicates
These methods allow inspection of head and tail nodes for "completeness".

These methods check to see whether the node on the head or tail is "complete" and ready for further processing. See each method's documentation for its definition of "complete".

int is_tail_complete (void)
int is_head_complete (void)

Private Attributes

TAO_Queued_Datalast_added_
 A circular linked list of messages awaiting processing.
CORBA::ULong size_
 The size of the queue.
TAO_ORB_Coreorb_core_
 Copy of our ORB Core.

Friends

class TAO_Transport

Detailed Description

A queue of the messages in the incoming data path.

Please read the documentation in the TAO_Transport class to find out more about the design of the incoming data path.

Under certain conditions TAO may have to maintain a queue per-connection. This queue is drained by the pluggable protocols framework, normally under control of the ACE_Reactor, but other configurations are conceivable.

The memory that is allocated for holding the messages comes from the global pool for the following reasons


Constructor & Destructor Documentation

TAO_Incoming_Message_Queue::TAO_Incoming_Message_Queue TAO_ORB_Core orb_core  ) 
 

Constructor.

TAO_Incoming_Message_Queue::~TAO_Incoming_Message_Queue void   ) 
 

Destructor.


Member Function Documentation

size_t TAO_Incoming_Message_Queue::copy_tail ACE_Message_Block block  ) 
 

Copy message from block to the tail of the queue. The size of message that is copied to the tail node is returned. The number of bytes copied depends on the amount of bytes needed to make the tail node consistent.

TAO_Queued_Data * TAO_Incoming_Message_Queue::dequeue_head void   ) 
 

Adding and deleting a node from the queue.

TAO_Queued_Data * TAO_Incoming_Message_Queue::dequeue_tail void   ) 
 

int TAO_Incoming_Message_Queue::enqueue_tail TAO_Queued_Data nd  ) 
 

TAO_Queued_Data * TAO_Incoming_Message_Queue::find_fragment_chain CORBA::ULong  request_id  )  const
 

Find the first fragment that matches the request id.

TAO_Queued_Data * TAO_Incoming_Message_Queue::find_fragment_chain CORBA::Octet  major,
CORBA::Octet  minor
const
 

Find the first fragment that matches the GIOP version.

ACE_INLINE int TAO_Incoming_Message_Queue::is_head_complete void   ) 
 

"complete" == the GIOP message at the head is not missing any data AND, if it's the first message in a series of GIOP fragments, all the fragments have been received, parsed, and placed into the queue

Returns:
-1 if queue is empty

0 if head is not "complete"

1 if head is "complete"

ACE_INLINE int TAO_Incoming_Message_Queue::is_tail_complete void   ) 
 

"complete" == the GIOP message at the tail is not missing any data (it may be a complete GIOP Fragment, though)

Returns:
-1 queue is empty

0 tail is not "complete"

1 tail is "complete"

ACE_INLINE int TAO_Incoming_Message_Queue::is_tail_fragmented void   ) 
 

Check to see if the message at the tail (complete or incomplete) is a GIOP Fragment.

ACE_INLINE size_t TAO_Incoming_Message_Queue::missing_data_tail void   )  const
 

Return the size of data that is missing in tail of the queue.

ACE_INLINE CORBA::ULong TAO_Incoming_Message_Queue::queue_length void   ) 
 

Return the length of the queue..


Friends And Related Function Documentation

friend class TAO_Transport [friend]
 


Member Data Documentation

TAO_Queued_Data* TAO_Incoming_Message_Queue::last_added_ [private]
 

A circular linked list of messages awaiting processing.

last_message_added_ points to the most recent message added to the list. The earliest addition can be easily accessed via last_message_added_->next_.

TAO_ORB_Core* TAO_Incoming_Message_Queue::orb_core_ [private]
 

Copy of our ORB Core.

CORBA::ULong TAO_Incoming_Message_Queue::size_ [private]
 

The size of the queue.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:02:52 2005 for TAO by  doxygen 1.4.5