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

TAO_GIOP_Message_Base Class Reference

Definitions of the GIOP specific stuff. More...

#include <GIOP_Message_Base.h>

Inheritance diagram for TAO_GIOP_Message_Base:

Inheritance graph
[legend]
Collaboration diagram for TAO_GIOP_Message_Base:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_GIOP_Message_Base (TAO_ORB_Core *orb_core, size_t input_cdr_size=ACE_CDR::DEFAULT_BUFSIZE)
 Constructor.
virtual ~TAO_GIOP_Message_Base (void)
 Dtor.
virtual void init (CORBA::Octet major, CORBA::Octet minor)
virtual void reset (void)
 Reset the messaging the object.
virtual int generate_request_header (TAO_Operation_Details &op, TAO_Target_Specification &spec, TAO_OutputCDR &cdr)
virtual int generate_locate_request_header (TAO_Operation_Details &op, TAO_Target_Specification &spec, TAO_OutputCDR &cdr)
 Write the RequestHeader in to the cdr stream.
virtual int generate_reply_header (TAO_OutputCDR &cdr, TAO_Pluggable_Reply_Params_Base &params)
 Write the reply header.
virtual int read_message (TAO_Transport *transport, int block=0, ACE_Time_Value *max_wait_time=0)
virtual int format_message (TAO_OutputCDR &cdr)
virtual int parse_incoming_messages (ACE_Message_Block &message_block)
virtual ssize_t missing_data (ACE_Message_Block &message_block)
virtual int extract_next_message (ACE_Message_Block &incoming, TAO_Queued_Data *&qd)
virtual int consolidate_node (TAO_Queued_Data *qd, ACE_Message_Block &incoming)
 Check whether the node qd needs consolidation from incoming.
virtual void get_message_data (TAO_Queued_Data *qd)
 Get the details of the message parsed through the qd.
virtual int process_request_message (TAO_Transport *transport, TAO_Queued_Data *qd)
virtual int process_reply_message (TAO_Pluggable_Reply_Params &reply_info, TAO_Queued_Data *qd)
virtual int generate_exception_reply (TAO_OutputCDR &cdr, TAO_Pluggable_Reply_Params_Base &params, CORBA::Exception &x)
 Generate a reply message with the exception ex.
virtual size_t header_length (void) const
 Header length.
virtual size_t fragment_header_length (CORBA::Octet major, CORBA::Octet minor) const
 The header length of a fragment.
virtual TAO_OutputCDRout_stream (void)
 Accessor for the output CDR stream.

Protected Member Functions

int process_request (TAO_Transport *transport, TAO_InputCDR &input, TAO_OutputCDR &output, TAO_GIOP_Message_Generator_Parser *)
 Processes the GIOP_REQUEST messages.
int process_locate_request (TAO_Transport *transport, TAO_InputCDR &input, TAO_OutputCDR &output, TAO_GIOP_Message_Generator_Parser *)
 Processes the GIOP_LOCATE_REQUEST messages.
void set_state (CORBA::Octet major, CORBA::Octet minor, TAO_GIOP_Message_Generator_Parser *&) const
 Set the state.
void dump_msg (const char *label, const u_char *ptr, size_t len)
 Print out a debug messages..
TAO_Pluggable_Message_Type message_type (const TAO_GIOP_Message_State &state) const

Protected Attributes

char buffer_ [ACE_CDR::DEFAULT_BUFSIZE]
TAO_OutputCDR out_stream_
 Buffer where the request is placed.

Private Member Functions

int write_protocol_header (TAO_GIOP_Message_Type t, TAO_OutputCDR &msg)
int make_send_locate_reply (TAO_Transport *transport, TAO_GIOP_Locate_Request_Header &request, TAO_GIOP_Locate_Status_Msg &status, TAO_OutputCDR &output, TAO_GIOP_Message_Generator_Parser *)
int send_error (TAO_Transport *transport)
 Send error messages.
void send_close_connection (const TAO_GIOP_Message_Version &version, TAO_Transport *transport, void *ctx)
 Close a connection, first sending GIOP::CloseConnection.
int send_reply_exception (TAO_Transport *transport, TAO_OutputCDR &cdr, CORBA::ULong request_id, IOP::ServiceContextList *svc_info, CORBA::Exception *x)
virtual int generate_locate_reply_header (TAO_OutputCDR &, TAO_Pluggable_Reply_Params_Base &)
 Write the locate reply header.
virtual int is_ready_for_bidirectional (TAO_OutputCDR &msg)
TAO_Queued_Datamake_queued_data (size_t sz)
void init_queued_data (TAO_Queued_Data *qd, const TAO_GIOP_Message_State &state) const

Private Attributes

TAO_ORB_Coreorb_core_
 Cached ORB_Core pointer...
TAO_GIOP_Message_State message_state_
TAO_GIOP_Message_Generator_Parser_Impl tao_giop_impl_
 All the implementations of GIOP message generator and parsers.

Detailed Description

Definitions of the GIOP specific stuff.

This class will hold the specific details common to all the GIOP versions. Some of them which are here may be shifted if things start changing between versions. This class uses the TAO_GIOP_Message_Reactive_Handler to read and parse messages.


Constructor & Destructor Documentation

TAO_GIOP_Message_Base::TAO_GIOP_Message_Base TAO_ORB_Core orb_core,
size_t  input_cdr_size = ACE_CDR::DEFAULT_BUFSIZE
 

Constructor.

TAO_GIOP_Message_Base::~TAO_GIOP_Message_Base void   )  [virtual]
 

Dtor.


Member Function Documentation

int TAO_GIOP_Message_Base::consolidate_node TAO_Queued_Data qd,
ACE_Message_Block incoming
[virtual]
 

Check whether the node qd needs consolidation from incoming.

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::dump_msg const char *  label,
const u_char *  ptr,
size_t  len
[protected]
 

Print out a debug messages..

int TAO_GIOP_Message_Base::extract_next_message ACE_Message_Block incoming,
TAO_Queued_Data *&  qd
[virtual]
 

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::format_message TAO_OutputCDR cdr  )  [virtual]
 

Format the message. As we have not written the message length in the header, we make use of this oppurtunity to insert and format the message.

Implements TAO_Pluggable_Messaging.

size_t TAO_GIOP_Message_Base::fragment_header_length CORBA::Octet  major,
CORBA::Octet  minor
const [virtual]
 

The header length of a fragment.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::generate_exception_reply TAO_OutputCDR cdr,
TAO_Pluggable_Reply_Params_Base params,
CORBA::Exception x
[virtual]
 

Generate a reply message with the exception ex.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::generate_locate_reply_header TAO_OutputCDR ,
TAO_Pluggable_Reply_Params_Base
[private, virtual]
 

Write the locate reply header.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::generate_locate_request_header TAO_Operation_Details op,
TAO_Target_Specification spec,
TAO_OutputCDR cdr
[virtual]
 

Write the RequestHeader in to the cdr stream.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::generate_reply_header TAO_OutputCDR cdr,
TAO_Pluggable_Reply_Params_Base params
[virtual]
 

Write the reply header.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::generate_request_header TAO_Operation_Details op,
TAO_Target_Specification spec,
TAO_OutputCDR cdr
[virtual]
 

Write the RequestHeader in to the cdr stream. The underlying implementation of the mesaging should do the right thing.

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::get_message_data TAO_Queued_Data qd  )  [virtual]
 

Get the details of the message parsed through the qd.

Implements TAO_Pluggable_Messaging.

size_t TAO_GIOP_Message_Base::header_length void   )  const [virtual]
 

Header length.

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::init CORBA::Octet  major,
CORBA::Octet  minor
[virtual]
 

Initialize the underlying state object based on the major and minor revision numbers

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::init_queued_data TAO_Queued_Data qd,
const TAO_GIOP_Message_State state
const [private]
 

Initialize the TAO_Queued_Data from the relevant portions of a GIOP_Message_State.

int TAO_GIOP_Message_Base::is_ready_for_bidirectional TAO_OutputCDR msg  )  [private, virtual]
 

Is the messaging object ready for processing BiDirectional request/response?

Implements TAO_Pluggable_Messaging.

TAO_Queued_Data * TAO_GIOP_Message_Base::make_queued_data size_t  sz  )  [private]
 

Creates a new node for the queue with a message block in the node of size sz.

int TAO_GIOP_Message_Base::make_send_locate_reply TAO_Transport transport,
TAO_GIOP_Locate_Request_Header request,
TAO_GIOP_Locate_Status_Msg status,
TAO_OutputCDR output,
TAO_GIOP_Message_Generator_Parser
[private]
 

Make a GIOP_LOCATEREPLY and hand that over to the transport so that it can be sent over the connection.

Note:
As on date 1.1 & 1.2 seem to have similar headers. Till an unmanageable difference comes let them be implemented here.

TAO_Pluggable_Message_Type TAO_GIOP_Message_Base::message_type const TAO_GIOP_Message_State state  )  const [protected]
 

Get the message type. The return value would be one of the following: TAO_PLUGGABLE_MESSAGE_REQUEST, TAO_PLUGGABLE_MESSAGE_REPLY, TAO_PLUGGABLE_MESSAGE_CLOSECONNECTION, TAO_PLUGGABLE_MESSAGE_MESSAGE_ERROR.

ssize_t TAO_GIOP_Message_Base::missing_data ACE_Message_Block message_block  )  [virtual]
 

Calculate the amount of data that is missing in the <incoming> message block.

Implements TAO_Pluggable_Messaging.

TAO_OutputCDR & TAO_GIOP_Message_Base::out_stream void   )  [virtual]
 

Accessor for the output CDR stream.

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::parse_incoming_messages ACE_Message_Block message_block  )  [virtual]
 

Parse the incoming messages..

Returns:
-1 There was some error parsing the GIOP header

0 The GIOP header was parsed correctly

1 There was not enough data in the message block to parse the header

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::process_locate_request TAO_Transport transport,
TAO_InputCDR input,
TAO_OutputCDR output,
TAO_GIOP_Message_Generator_Parser
[protected]
 

Processes the GIOP_LOCATE_REQUEST messages.

int TAO_GIOP_Message_Base::process_reply_message TAO_Pluggable_Reply_Params reply_info,
TAO_Queued_Data qd
[virtual]
 

Parse the reply message that we received and return the reply information through reply_info

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::process_request TAO_Transport transport,
TAO_InputCDR input,
TAO_OutputCDR output,
TAO_GIOP_Message_Generator_Parser
[protected]
 

Processes the GIOP_REQUEST messages.

int TAO_GIOP_Message_Base::process_request_message TAO_Transport transport,
TAO_Queued_Data qd
[virtual]
 

Process the request message that we have received on the connection

Implements TAO_Pluggable_Messaging.

int TAO_GIOP_Message_Base::read_message TAO_Transport transport,
int  block = 0,
ACE_Time_Value max_wait_time = 0
[virtual]
 

This method reads the message on the connection. Returns 0 when there is short read on the connection. Returns 1 when the full message is read and handled. Returns -1 on errors. If block is 1, then reply is read in a blocking manner.

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::reset void   )  [virtual]
 

Reset the messaging the object.

Implements TAO_Pluggable_Messaging.

void TAO_GIOP_Message_Base::send_close_connection const TAO_GIOP_Message_Version version,
TAO_Transport transport,
void *  ctx
[private]
 

Close a connection, first sending GIOP::CloseConnection.

int TAO_GIOP_Message_Base::send_error TAO_Transport transport  )  [private]
 

Send error messages.

int TAO_GIOP_Message_Base::send_reply_exception TAO_Transport transport,
TAO_OutputCDR cdr,
CORBA::ULong  request_id,
IOP::ServiceContextList svc_info,
CORBA::Exception x
[private]
 

We must send a LocateReply through transport, this request resulted in some kind of exception.

void TAO_GIOP_Message_Base::set_state CORBA::Octet  major,
CORBA::Octet  minor,
TAO_GIOP_Message_Generator_Parser *& 
const [protected]
 

Set the state.

int TAO_GIOP_Message_Base::write_protocol_header TAO_GIOP_Message_Type  t,
TAO_OutputCDR msg
[private]
 

Writes the GIOP header in to msg

Note:
If the GIOP header happens to change in the future, we can push this method in to the generator_parser classes.


Member Data Documentation

char TAO_GIOP_Message_Base::buffer_[ACE_CDR::DEFAULT_BUFSIZE] [protected]
 

Buffer used for both the output and input CDR streams, this is "safe" because we only one of the streams at a time.

TAO_GIOP_Message_State TAO_GIOP_Message_Base::message_state_ [private]
 

The message handler object that does reading and parsing of the incoming messages

TAO_ORB_Core* TAO_GIOP_Message_Base::orb_core_ [private]
 

Cached ORB_Core pointer...

TAO_OutputCDR TAO_GIOP_Message_Base::out_stream_ [protected]
 

Buffer where the request is placed.

TAO_GIOP_Message_Generator_Parser_Impl TAO_GIOP_Message_Base::tao_giop_impl_ [private]
 

All the implementations of GIOP message generator and parsers.


The documentation for this class was generated from the following files:
Generated on Sun May 15 13:09:55 2005 for TAO by  doxygen 1.3.9.1