TAO  3.0.0
Public Member Functions | List of all members
TAO_Synch_Queued_Message Class Reference

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>

Inheritance diagram for TAO_Synch_Queued_Message:
Inheritance graph
[legend]
Collaboration diagram for TAO_Synch_Queued_Message:
Collaboration graph
[legend]

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_Blockcurrent_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_Messagenext (void) const
 Set/get the next element in the list. More...
 
TAO_Queued_Messageprev (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_Blockcontents_
 The contents of the message. More...
 
ACE_Message_Blockcurrent_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_Messageclone (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_Allocatorallocator_
 Cached copy of ORB_Core pointer. More...
 
bool const is_heap_created_
 Cached copy of ORB_Core pointer. More...
 
TAO_ORB_Coreorb_core_
 Cached copy of ORB_Core pointer. More...
 
- Protected Attributes inherited from TAO_LF_Event
LFS_STATE state_
 The current state. More...
 
TAO_LF_Followerfollower_
 The bounded follower. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ TAO_Synch_Queued_Message()

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.

Parameters
contentsThe message block chain that must be sent.
allocThe allocator that is used to allocate objects of this type.

◆ ~TAO_Synch_Queued_Message()

TAO_Synch_Queued_Message::~TAO_Synch_Queued_Message ( void  )
virtual

Destructor.

Member Function Documentation

◆ all_data_sent()

int TAO_Synch_Queued_Message::all_data_sent ( 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.

◆ bytes_transferred()

void TAO_Synch_Queued_Message::bytes_transferred ( size_t &  byte_count)
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.

◆ clone()

TAO_Queued_Message * TAO_Synch_Queued_Message::clone ( ACE_Allocator alloc)
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.

◆ copy_if_necessary()

void TAO_Synch_Queued_Message::copy_if_necessary ( const ACE_Message_Block chain)
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.

◆ current_block()

const ACE_Message_Block * TAO_Synch_Queued_Message::current_block ( void  ) const

◆ destroy()

void TAO_Synch_Queued_Message::destroy ( void  )
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.

◆ fill_iov()

void TAO_Synch_Queued_Message::fill_iov ( int  iovcnt_max,
int &  iovcnt,
iovec  iov[] 
) 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.

◆ message_length()

size_t TAO_Synch_Queued_Message::message_length ( 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.

Member Data Documentation

◆ contents_

ACE_Message_Block* TAO_Synch_Queued_Message::contents_
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.

◆ current_block_

ACE_Message_Block* TAO_Synch_Queued_Message::current_block_
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.

◆ own_contents_

bool TAO_Synch_Queued_Message::own_contents_
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.


The documentation for this class was generated from the following files: