#include <GIOP_Message_Base.h>
Public Member Functions | |
TAO_GIOP_Message_Base (TAO_ORB_Core *orb_core, TAO_Transport *transport, 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 ¶ms) |
Write the reply header. | |
virtual int | generate_fragment_header (TAO_OutputCDR &cdr, CORBA::ULong request_id) |
virtual int | format_message (TAO_OutputCDR &cdr) |
virtual int | parse_next_message (TAO_Queued_Data &qd, size_t &mesg_length) |
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 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 ¶ms, const 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 (const TAO_GIOP_Message_Version &giop_version) const |
The header length of a fragment. | |
virtual TAO_OutputCDR & | out_stream (void) |
Accessor for the output CDR stream. | |
virtual int | consolidate_fragmented_message (TAO_Queued_Data *qd, TAO_Queued_Data *&msg) |
virtual int | discard_fragmented_message (const TAO_Queued_Data *cancel_request) |
virtual TAO_GIOP_Fragmentation_Strategy * | fragmentation_strategy (void) |
Outgoing GIOP message fragmentation strategy. | |
Protected Member Functions | |
virtual int | process_request (TAO_Transport *transport, TAO_InputCDR &input, TAO_OutputCDR &output, TAO_GIOP_Message_Generator_Parser *) |
Processes the GIOP_REQUEST messages. | |
virtual 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 (const TAO_GIOP_Message_Version &version, 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.. | |
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 &cdr, TAO_Pluggable_Reply_Params_Base ¶ms) |
Write the locate reply header. | |
virtual int | is_ready_for_bidirectional (TAO_OutputCDR &msg) |
TAO_Queued_Data * | make_queued_data (size_t sz) |
Protected Attributes | |
Outgoing GIOP Fragment Related Attributes | |
These attributes are only used when fragmenting outgoing GIOP requests and replies. | |
auto_ptr < TAO_GIOP_Fragmentation_Strategy > | fragmentation_strategy_ |
TAO_OutputCDR | out_stream_ |
Buffer where the request is placed. | |
Private Member Functions | |
int | parse_request_id (const TAO_Queued_Data *qd, CORBA::ULong &request_id) const |
int | parse_request_id (const TAO_InputCDR &cdr, CORBA::ULong &request_id) const |
void | set_giop_flags (TAO_OutputCDR &msg) const |
Private Attributes | |
TAO_ORB_Core * | orb_core_ |
Cached ORB_Core pointer... | |
TAO_GIOP_Message_Generator_Parser_Impl | tao_giop_impl_ |
All the implementations of GIOP message generator and parsers. | |
TAO::Incoming_Message_Stack | fragment_stack_ |
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.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_GIOP_Message_Base::TAO_GIOP_Message_Base | ( | TAO_ORB_Core * | orb_core, | |
TAO_Transport * | transport, | |||
size_t | input_cdr_size = ACE_CDR::DEFAULT_BUFSIZE | |||
) |
Constructor.
TAO_GIOP_Message_Base::~TAO_GIOP_Message_Base | ( | void | ) | [virtual] |
Dtor.
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::reset | ( | void | ) | [virtual] |
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.
int TAO_GIOP_Message_Base::generate_locate_request_header | ( | TAO_Operation_Details & | op, | |
TAO_Target_Specification & | spec, | |||
TAO_OutputCDR & | cdr | |||
) | [virtual] |
int TAO_GIOP_Message_Base::generate_reply_header | ( | TAO_OutputCDR & | cdr, | |
TAO_Pluggable_Reply_Params_Base & | params | |||
) | [virtual] |
int TAO_GIOP_Message_Base::generate_fragment_header | ( | TAO_OutputCDR & | cdr, | |
CORBA::ULong | request_id | |||
) | [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.
int TAO_GIOP_Message_Base::parse_next_message | ( | TAO_Queued_Data & | qd, | |
size_t & | mesg_length | |||
) | [virtual] |
Parse the details of the next message from the incoming and initializes attributes of qd.
0 | If the message header could not be parsed completely, | |
1 | If the message header could be parsed completely | |
-1 | On error. |
Implements TAO_Pluggable_Messaging.
int TAO_GIOP_Message_Base::extract_next_message | ( | ACE_Message_Block & | incoming, | |
TAO_Queued_Data *& | qd | |||
) | [virtual] |
Extract the details of the next message from the incoming through qd. Returns 0 if the message header could not be parsed completely, returns a 1 if the message header could be parsed completely and returns -1 on error.
Implements TAO_Pluggable_Messaging.
int TAO_GIOP_Message_Base::consolidate_node | ( | TAO_Queued_Data * | qd, | |
ACE_Message_Block & | incoming | |||
) | [virtual] |
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::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::generate_exception_reply | ( | TAO_OutputCDR & | cdr, | |
TAO_Pluggable_Reply_Params_Base & | params, | |||
const CORBA::Exception & | x | |||
) | [virtual] |
size_t TAO_GIOP_Message_Base::header_length | ( | void | ) | const [virtual] |
size_t TAO_GIOP_Message_Base::fragment_header_length | ( | const TAO_GIOP_Message_Version & | giop_version | ) | const [virtual] |
TAO_OutputCDR & TAO_GIOP_Message_Base::out_stream | ( | void | ) | [virtual] |
int TAO_GIOP_Message_Base::consolidate_fragmented_message | ( | TAO_Queued_Data * | qd, | |
TAO_Queued_Data *& | msg | |||
) | [virtual] |
Consolidate fragmented message with associated fragments, being stored withi this class. If reliable transport is used (like TCP) fragments are partialy ordered on stack, last fragment on top. Otherwise If un-reliable transport is used (like UDP) fragments may be dis-ordered, and must be ordered before consolidation.
Implements TAO_Pluggable_Messaging.
int TAO_GIOP_Message_Base::discard_fragmented_message | ( | const TAO_Queued_Data * | cancel_request | ) | [virtual] |
Discard all fragments associated to request-id encoded in cancel_request. This operation will never be called concurrently by multiplpe threads nor concurrently to consolidate_fragmented_message
Implements TAO_Pluggable_Messaging.
TAO_GIOP_Fragmentation_Strategy * TAO_GIOP_Message_Base::fragmentation_strategy | ( | void | ) | [virtual] |
int TAO_GIOP_Message_Base::process_request | ( | TAO_Transport * | transport, | |
TAO_InputCDR & | input, | |||
TAO_OutputCDR & | output, | |||
TAO_GIOP_Message_Generator_Parser * | parser | |||
) | [protected, virtual] |
Processes the GIOP_REQUEST messages.
int TAO_GIOP_Message_Base::process_locate_request | ( | TAO_Transport * | transport, | |
TAO_InputCDR & | input, | |||
TAO_OutputCDR & | output, | |||
TAO_GIOP_Message_Generator_Parser * | parser | |||
) | [protected, virtual] |
Processes the GIOP_LOCATE_REQUEST messages.
void TAO_GIOP_Message_Base::set_state | ( | const TAO_GIOP_Message_Version & | version, | |
TAO_GIOP_Message_Generator_Parser *& | gen_parser | |||
) | const [protected] |
Set the state.
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::write_protocol_header | ( | TAO_GIOP_Message_Type | t, | |
TAO_OutputCDR & | msg | |||
) | [protected] |
Writes the GIOP header in to msg
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 * | parser | |||
) | [protected] |
Make a GIOP_LOCATEREPLY and hand that over to the transport so that it can be sent over the connection.
int TAO_GIOP_Message_Base::send_error | ( | TAO_Transport * | transport | ) | [protected] |
Send error messages.
void TAO_GIOP_Message_Base::send_close_connection | ( | const TAO_GIOP_Message_Version & | version, | |
TAO_Transport * | transport, | |||
void * | ctx | |||
) | [protected] |
Close a connection, first sending GIOP::CloseConnection.
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 | |||
) | [protected] |
We must send a LocateReply through transport, this request resulted in some kind of exception.
int TAO_GIOP_Message_Base::generate_locate_reply_header | ( | TAO_OutputCDR & | cdr, | |
TAO_Pluggable_Reply_Params_Base & | params | |||
) | [protected, virtual] |
int TAO_GIOP_Message_Base::is_ready_for_bidirectional | ( | TAO_OutputCDR & | msg | ) | [protected, 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 | ) | [protected] |
Creates a new node for the queue with a message block in the node of size sz.
int TAO_GIOP_Message_Base::parse_request_id | ( | const TAO_Queued_Data * | qd, | |
CORBA::ULong & | request_id | |||
) | const [private] |
Parse GIOP request-id of TAO_Queued_Data qd
int TAO_GIOP_Message_Base::parse_request_id | ( | const TAO_InputCDR & | cdr, | |
CORBA::ULong & | request_id | |||
) | const [private] |
Parse GIOP request-id of TAO_InputCDR cdr.
void TAO_GIOP_Message_Base::set_giop_flags | ( | TAO_OutputCDR & | msg | ) | const [private] |
Set GIOP message flags in message that has been marshaled into the output CDR stream msg.
TAO_ORB_Core* TAO_GIOP_Message_Base::orb_core_ [private] |
Cached ORB_Core pointer...
All the implementations of GIOP message generator and parsers.
TAO::Incoming_Message_Stack TAO_GIOP_Message_Base::fragment_stack_ [private] |
All Fragments being received are stored on stack in reverse order, last top
auto_ptr<TAO_GIOP_Fragmentation_Strategy> TAO_GIOP_Message_Base::fragmentation_strategy_ [protected] |
Strategy that sends data currently marshaled into this TAO_OutputCDR stream if necessary.
TAO_OutputCDR TAO_GIOP_Message_Base::out_stream_ [protected] |
Buffer where the request is placed.