TAO_GIOP_Message_Generator_Parser Class Reference

Base class for the GIOP Message generator and parser. More...

#include <GIOP_Message_Generator_Parser.h>

Inheritance diagram for TAO_GIOP_Message_Generator_Parser:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual ~TAO_GIOP_Message_Generator_Parser (void)
virtual bool write_request_header (const TAO_Operation_Details &opdetails, TAO_Target_Specification &spec, TAO_OutputCDR &msg)=0
 Write the request header in to msg.
virtual bool write_locate_request_header (CORBA::ULong request_id, TAO_Target_Specification &spec, TAO_OutputCDR &msg)=0
 Write the LocateRequest header.
virtual bool write_reply_header (TAO_OutputCDR &output, TAO_Pluggable_Reply_Params_Base &reply)=0
 Write the reply header in to output.
virtual bool write_locate_reply_mesg (TAO_OutputCDR &output, CORBA::ULong request_id, TAO_GIOP_Locate_Status_Msg &status)=0
 Writes the locate _reply message in to the output.
virtual bool write_fragment_header (TAO_OutputCDR &cdr, CORBA::ULong request_id)=0
virtual int parse_request_header (TAO_ServerRequest &)=0
virtual int parse_locate_header (TAO_GIOP_Locate_Request_Header &)=0
virtual int parse_reply (TAO_InputCDR &input, TAO_Pluggable_Reply_Params &params)
 Parse the reply message.
virtual int parse_locate_reply (TAO_InputCDR &input, TAO_Pluggable_Reply_Params &params)
 Parse the locate reply message from the server.
virtual CORBA::Octet major_version (void) const =0
 Our versions.
virtual CORBA::Octet minor_version (void) const =0
virtual bool is_ready_for_bidirectional (void) const
virtual size_t fragment_header_length (void) const =0
 The header length of a fragment.

Detailed Description

Base class for the GIOP Message generator and parser.

Version specific classes would inherit from this class. Strategy to determine which version of the GIOP request have we received and which version do we need to use to send messages.

Definition at line 48 of file GIOP_Message_Generator_Parser.h.


Constructor & Destructor Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_GIOP_Message_Generator_Parser::~TAO_GIOP_Message_Generator_Parser ( void   )  [virtual]

Definition at line 18 of file GIOP_Message_Generator_Parser.cpp.

00019 {
00020 }


Member Function Documentation

virtual size_t TAO_GIOP_Message_Generator_Parser::fragment_header_length ( void   )  const [pure virtual]

The header length of a fragment.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::fragment_header_length().

bool TAO_GIOP_Message_Generator_Parser::is_ready_for_bidirectional ( void   )  const [virtual]

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

Reimplemented in TAO_GIOP_Message_Generator_Parser_12.

Definition at line 100 of file GIOP_Message_Generator_Parser.cpp.

Referenced by TAO_GIOP_Message_Base::is_ready_for_bidirectional().

00101 {
00102   return false;
00103 }

virtual CORBA::Octet TAO_GIOP_Message_Generator_Parser::major_version ( void   )  const [pure virtual]

Our versions.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

virtual CORBA::Octet TAO_GIOP_Message_Generator_Parser::minor_version ( void   )  const [pure virtual]

Implemented in TAO_GIOP_Message_Generator_Parser_10, TAO_GIOP_Message_Generator_Parser_11, and TAO_GIOP_Message_Generator_Parser_12.

virtual int TAO_GIOP_Message_Generator_Parser::parse_locate_header ( TAO_GIOP_Locate_Request_Header  )  [pure virtual]

Parse the Loacte Request Header from the incoming stream. This will do a version specific parsing of the incoming Request header

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::process_locate_request().

int TAO_GIOP_Message_Generator_Parser::parse_locate_reply ( TAO_InputCDR input,
TAO_Pluggable_Reply_Params params 
) [virtual]

Parse the locate reply message from the server.

Reimplemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Definition at line 61 of file GIOP_Message_Generator_Parser.cpp.

References ACE_ERROR, ACE_TEXT, LM_ERROR, TAO_Pluggable_Reply_Params_Base::locate_reply_status(), ACE_InputCDR::read_ulong(), TAO_Pluggable_Reply_Params_Base::request_id_, and TAO_debug_level.

Referenced by TAO_GIOP_Message_Generator_Parser_12::parse_locate_reply(), TAO_GIOP_Message_Generator_Parser_10::parse_locate_reply(), and TAO_GIOP_Message_Base::process_reply_message().

00064 {
00065   // Read the request id
00066   if (!cdr.read_ulong (params.request_id_))
00067     {
00068       if (TAO_debug_level > 0)
00069         ACE_ERROR ((LM_ERROR,
00070                     ACE_TEXT ("TAO (%P|%t|%N|%l):parse_locate_reply, ")
00071                     ACE_TEXT ("extracting request id\n")));
00072 
00073       return -1;
00074     }
00075 
00076   // and the locate reply status type.  status can be UNKNOWN_OBJECT,
00077   // OBJECT_HERE, OBJECT_FORWARD, OBJECT_FORWARD_PERM
00078   // LOC_SYSTEM_EXCEPTION, LOC_NEEDS_ADDRESSING_MODE
00079 
00080   // Please note here that we are NOT converting to the Pluggable
00081   // messaging layer exception as this is GIOP specific. Not many
00082   // messaging protocols have the locate_* messages.
00083   CORBA::ULong locate_reply_status;
00084   if (!cdr.read_ulong (locate_reply_status))
00085     {
00086       if (TAO_debug_level > 0)
00087         ACE_ERROR ((LM_ERROR,
00088                     ACE_TEXT ("TAO N|(%P|%t|l) parse_locate_reply, ")
00089                     ACE_TEXT ("extracting locate reply status\n")));
00090 
00091       return -1;
00092     }
00093   params.locate_reply_status (static_cast <GIOP::LocateStatusType> (locate_reply_status));
00094 
00095   return 0;
00096 
00097 }

int TAO_GIOP_Message_Generator_Parser::parse_reply ( TAO_InputCDR input,
TAO_Pluggable_Reply_Params params 
) [virtual]

Parse the reply message.

Reimplemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Definition at line 23 of file GIOP_Message_Generator_Parser.cpp.

References ACE_ERROR, ACE_TEXT, LM_ERROR, ACE_InputCDR::read_ulong(), TAO_Pluggable_Reply_Params_Base::reply_status(), TAO_Pluggable_Reply_Params_Base::request_id_, and TAO_debug_level.

Referenced by TAO_GIOP_Message_Generator_Parser_12::parse_reply(), TAO_GIOP_Message_Generator_Parser_10::parse_reply(), and TAO_GIOP_Message_Base::process_reply_message().

00026 {
00027   // Read the request id
00028   if (!stream.read_ulong (params.request_id_))
00029     {
00030       if (TAO_debug_level)
00031         {
00032           ACE_ERROR ((LM_ERROR,
00033                       ACE_TEXT ("TAO (%P|%t) : TAO_GIOP_Message_Generator_Parser::parse_reply :")
00034                       ACE_TEXT ("extracting request id\n")));
00035         }
00036       return -1;
00037     }
00038 
00039   // and the reply status type.  status can be NO_EXCEPTION,
00040   // SYSTEM_EXCEPTION, USER_EXCEPTION, LOCATION_FORWARD,
00041   // LOCATION_FORWARD_PERM
00042   CORBA::ULong rep_stat = 0;
00043   if (!stream.read_ulong (rep_stat))
00044     {
00045       if (TAO_debug_level > 0)
00046         {
00047           ACE_ERROR ((LM_ERROR,
00048                       ACE_TEXT ("TAO (%P|%t) : TAO_GIOP_Message_Generator_Parser::parse_reply, ")
00049                       ACE_TEXT ("extracting reply status\n")));
00050         }
00051       return -1;
00052     }
00053 
00054   params.reply_status (static_cast <GIOP::ReplyStatusType> (rep_stat));
00055 
00056   return 0;
00057 }

virtual int TAO_GIOP_Message_Generator_Parser::parse_request_header ( TAO_ServerRequest  )  [pure virtual]

Parse the Request Header from the incoming stream. This will do a version specific parsing of the incoming Request header

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::process_request().

virtual bool TAO_GIOP_Message_Generator_Parser::write_fragment_header ( TAO_OutputCDR cdr,
CORBA::ULong  request_id 
) [pure virtual]

Write the GIOP fragment message header to the output CDR stream cdr.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::generate_fragment_header().

virtual bool TAO_GIOP_Message_Generator_Parser::write_locate_reply_mesg ( TAO_OutputCDR output,
CORBA::ULong  request_id,
TAO_GIOP_Locate_Status_Msg status 
) [pure virtual]

Writes the locate _reply message in to the output.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::make_send_locate_reply().

virtual bool TAO_GIOP_Message_Generator_Parser::write_locate_request_header ( CORBA::ULong  request_id,
TAO_Target_Specification spec,
TAO_OutputCDR msg 
) [pure virtual]

Write the LocateRequest header.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::generate_locate_request_header().

virtual bool TAO_GIOP_Message_Generator_Parser::write_reply_header ( TAO_OutputCDR output,
TAO_Pluggable_Reply_Params_Base reply 
) [pure virtual]

Write the reply header in to output.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::generate_reply_header().

virtual bool TAO_GIOP_Message_Generator_Parser::write_request_header ( const TAO_Operation_Details opdetails,
TAO_Target_Specification spec,
TAO_OutputCDR msg 
) [pure virtual]

Write the request header in to msg.

Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12.

Referenced by TAO_GIOP_Message_Base::generate_request_header().


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:39:30 2010 for TAO by  doxygen 1.4.7