#include <Incoming_Message_Queue.h>
Collaboration diagram for TAO_Incoming_Message_Queue:
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 |
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.
|
|
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. |
|
Adding and deleting a node from the queue.
|
|
|
|
|
|
Find the first fragment that matches the request id.
|
|
Find the first fragment that matches the GIOP version.
|
|
"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
|
|
"complete" == the GIOP message at the tail is not missing any data (it may be a complete GIOP Fragment, though)
|
|
Check to see if the message at the tail (complete or incomplete) is a GIOP Fragment.
|
|
Return the size of data that is missing in tail of the queue.
|
|
Return the length of the queue..
|
|
|
|
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_. |
|
Copy of our ORB Core.
|
|
The size of the queue.
|