Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

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_Data * dequeue_head (void)
 Adding and deleting a node from the queue.
TAO_Queued_Data * dequeue_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_Data * find_fragment_chain (CORBA::Octet major, CORBA::Octet minor) const
 Find the first fragment that matches the GIOP version.
TAO_Queued_Data * find_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_Data * last_added_
 A circular linked list of messages awaiting processing.
CORBA::ULong size_
 The size of the queue.
TAO_ORB_Core * orb_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

Return values:
-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)

Return values:
-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 Sun May 15 13:10:04 2005 for TAO by  doxygen 1.3.9.1