TAO
3.0.0
|
Specialize TAO_Queued_Message for synchronous requests, i.e. twoways and oneways sent with reliability better than SYNC_NONE. More...
#include <Synch_Queued_Message.h>
Public Member Functions | |
TAO_Synch_Queued_Message (const ACE_Message_Block *contents, TAO_ORB_Core *oc, ACE_Allocator *alloc=0, bool is_heap_allocated=false) | |
Constructor. More... | |
virtual | ~TAO_Synch_Queued_Message (void) |
Destructor. More... | |
const ACE_Message_Block * | current_block (void) const |
Public Member Functions inherited from TAO_Queued_Message | |
TAO_Queued_Message (TAO_ORB_Core *oc, ACE_Allocator *alloc=0, bool is_heap_allocated=false) | |
Constructor. More... | |
virtual | ~TAO_Queued_Message (void) |
Destructor. More... | |
TAO_Queued_Message * | next (void) const |
Set/get the next element in the list. More... | |
TAO_Queued_Message * | prev (void) const |
Set/get the previous element in the list. More... | |
void | remove_from_list (TAO_Queued_Message *&head, TAO_Queued_Message *&tail) |
Remove this element from the list. More... | |
void | push_back (TAO_Queued_Message *&head, TAO_Queued_Message *&tail) |
Insert the current element at the tail of the queue. More... | |
void | push_front (TAO_Queued_Message *&head, TAO_Queued_Message *&tail) |
Insert the current element at the head of the queue. More... | |
virtual bool | is_expired (const ACE_Time_Value &now) const |
Check for timeout. More... | |
Public Member Functions inherited from TAO_LF_Invocation_Event | |
TAO_LF_Invocation_Event (void) | |
Constructor. More... | |
virtual | ~TAO_LF_Invocation_Event (void) |
Destructor. More... | |
Public Member Functions inherited from TAO_LF_Event | |
TAO_LF_Event (void) | |
Constructor. More... | |
virtual | ~TAO_LF_Event (void) |
Destructor. More... | |
virtual int | bind (TAO_LF_Follower *follower) |
Bind a follower. More... | |
virtual int | unbind (TAO_LF_Follower *follower) |
Unbind the follower. More... | |
void | state_changed (LFS_STATE new_state, TAO_Leader_Follower &lf) |
bool | successful (TAO_Leader_Follower &lf) const |
bool | error_detected (TAO_Leader_Follower &lf) const |
bool | keep_waiting (TAO_Leader_Follower &lf) const |
Check if we should keep waiting. More... | |
void | reset_state (LFS_STATE new_state) |
Reset the state, irrespective of the previous states. More... | |
Implement the Template Methods from TAO_Queued_Message | |
ACE_Message_Block * | contents_ |
The contents of the message. More... | |
ACE_Message_Block * | current_block_ |
The current message block. More... | |
bool | own_contents_ |
Do we own the contents_ message block? More... | |
virtual size_t | message_length (void) const |
The contents of the message. More... | |
virtual int | all_data_sent (void) const |
The contents of the message. More... | |
virtual void | fill_iov (int iovcnt_max, int &iovcnt, iovec iov[]) const |
The contents of the message. More... | |
virtual void | bytes_transferred (size_t &byte_count) |
The contents of the message. More... | |
virtual TAO_Queued_Message * | clone (ACE_Allocator *alloc) |
The contents of the message. More... | |
virtual void | destroy (void) |
The contents of the message. More... | |
virtual void | copy_if_necessary (const ACE_Message_Block *chain) |
The contents of the message. More... | |
Additional Inherited Members | |
Public Types inherited from TAO_LF_Event | |
enum | LFS_STATE { LFS_IDLE = 0 , LFS_ACTIVE , LFS_CONNECTION_WAIT , LFS_SUCCESS , LFS_FAILURE , LFS_TIMEOUT , LFS_CONNECTION_CLOSED } |
The current state. More... | |
Static Public Member Functions inherited from TAO_LF_Event | |
static const char * | state_name (LFS_STATE st) |
The current state. More... | |
Protected Member Functions inherited from TAO_LF_Invocation_Event | |
virtual void | state_changed_i (LFS_STATE new_state) |
Validate and perform the state change. More... | |
virtual bool | successful_i (void) const |
virtual bool | error_detected_i (void) const |
Protected Member Functions inherited from TAO_LF_Event | |
bool | keep_waiting_i (void) const |
Check if we should keep waiting. More... | |
Protected Attributes inherited from TAO_Queued_Message | |
ACE_Allocator * | allocator_ |
Cached copy of ORB_Core pointer. More... | |
bool const | is_heap_created_ |
Cached copy of ORB_Core pointer. More... | |
TAO_ORB_Core * | orb_core_ |
Cached copy of ORB_Core pointer. More... | |
Protected Attributes inherited from TAO_LF_Event | |
LFS_STATE | state_ |
The current state. More... | |
TAO_LF_Follower * | follower_ |
The bounded follower. More... | |
Specialize TAO_Queued_Message for synchronous requests, i.e. twoways and oneways sent with reliability better than SYNC_NONE.
Reliable requests block the sending thread until the message is sent, likewise, the sending thread must be informed if the connection is closed or the message times out.
In contrast oneway (and AMI) requests sent with the SYNC_NONE policy are simple discarded if the connection fails or they timeout.
Another important difference is the management of the data buffer: one SYNC_NONE messages the buffer is immediately copied into a newly allocated buffer, and must be deallocated. Other types of requests use the memory allocated by the sending thread.
TAO_Synch_Queued_Message::TAO_Synch_Queued_Message | ( | const ACE_Message_Block * | contents, |
TAO_ORB_Core * | oc, | ||
ACE_Allocator * | alloc = 0 , |
||
bool | is_heap_allocated = false |
||
) |
Constructor.
contents | The message block chain that must be sent. |
alloc | The allocator that is used to allocate objects of this type. |
|
virtual |
Destructor.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
const ACE_Message_Block * TAO_Synch_Queued_Message::current_block | ( | void | ) | const |
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
virtual |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
Implements TAO_Queued_Message.
|
private |
The contents of the message.
The message is normally generated by a TAO_OutputCDR stream. The application marshals the payload, possibly generating a chain of message block connected via the 'cont()' field.
|
private |
The current message block.
The message may be set in multiple writev() operations. This point keeps track of the next message to send out.
|
private |
Do we own the contents_ message block?
This flag differs from the is_heap_allocated_ flag in that it only applies to the contents_ message block and not the TAO_Synch_Queued_Message object itself.