#include <GIOP_Message_Generator_Parser.h>
Inheritance diagram for TAO_GIOP_Message_Generator_Parser:
Public Member Functions | |
virtual | ~TAO_GIOP_Message_Generator_Parser (void) |
virtual int | write_request_header (const TAO_Operation_Details &opdetails, TAO_Target_Specification &spec, TAO_OutputCDR &msg)=0 |
Write the request header in to msg. | |
virtual int | write_locate_request_header (CORBA::ULong request_id, TAO_Target_Specification &spec, TAO_OutputCDR &msg)=0 |
Write the LocateRequest header. | |
virtual int | write_reply_header (TAO_OutputCDR &output, TAO_Pluggable_Reply_Params_Base &reply)=0 throw (CORBA::SystemException) |
Write the reply header in to output. | |
virtual int | 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 ¶ms) |
Parse the reply message. | |
virtual int | parse_locate_reply (TAO_InputCDR &input, TAO_Pluggable_Reply_Params ¶ms) |
Parse the locate reply message from the server. | |
virtual CORBA::Octet | major_version (void)=0 |
Our versions. | |
virtual CORBA::Octet | minor_version (void)=0 |
virtual int | is_ready_for_bidirectional (void) |
virtual size_t | fragment_header_length (void) const=0 |
The header length of a fragment. | |
Protected Member Functions | |
void | marshal_reply_status (TAO_OutputCDR &output, TAO_Pluggable_Reply_Params_Base &reply) |
Marshall the reply status. |
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 47 of file GIOP_Message_Generator_Parser.h.
|
Definition at line 18 of file GIOP_Message_Generator_Parser.cpp.
00019 { 00020 } |
|
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(). |
|
Is the messaging object ready for processing BiDirectional request/response? Reimplemented in TAO_GIOP_Message_Generator_Parser_12. Definition at line 139 of file GIOP_Message_Generator_Parser.cpp. Referenced by TAO_GIOP_Message_Base::is_ready_for_bidirectional().
00140 {
00141 return 0;
00142 }
|
|
Our versions.
Implemented in TAO_GIOP_Message_Generator_Parser_10, and TAO_GIOP_Message_Generator_Parser_12. |
|
|
Implemented in TAO_GIOP_Message_Generator_Parser_10, TAO_GIOP_Message_Generator_Parser_11, and TAO_GIOP_Message_Generator_Parser_12. |
|
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(). |
|
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 101 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_locate_reply(), TAO_GIOP_Message_Generator_Parser_10::parse_locate_reply(), and TAO_GIOP_Message_Base::process_reply_message().
00104 { 00105 // Read the request id 00106 if (!cdr.read_ulong (params.request_id_)) 00107 { 00108 if (TAO_debug_level > 0) 00109 ACE_ERROR ((LM_ERROR, 00110 ACE_TEXT ("TAO (%P|%t|%N|%l):parse_locate_reply, ") 00111 ACE_TEXT ("extracting request id\n"))); 00112 00113 return -1; 00114 } 00115 00116 // and the reply status type. status can be NO_EXCEPTION, 00117 // SYSTEM_EXCEPTION, USER_EXCEPTION, LOCATION_FORWARD 00118 // LOCATION_FORWARD_PERM 00119 00120 // Please note here that we are NOT converting to the Pluggable 00121 // messaging layer exception as this is GIOP specific. Not many 00122 // messaging protocols have the locate_* messages. 00123 if (!cdr.read_ulong (params.reply_status_)) 00124 { 00125 if (TAO_debug_level > 0) 00126 ACE_ERROR ((LM_ERROR, 00127 ACE_TEXT ("TAO N|(%P|%t|l) parse_locate_reply, ") 00128 ACE_TEXT ("extracting reply status\n"))); 00129 00130 return -1; 00131 } 00132 00133 return 0; 00134 00135 } |
|
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_DEBUG, ACE_ERROR, ACE_TEXT, LM_DEBUG, LM_ERROR, ACE_InputCDR::read_ulong(), TAO_Pluggable_Reply_Params_Base::reply_status_, TAO_Pluggable_Reply_Params_Base::request_id_, TAO_debug_level, TAO_GIOP_LOCATION_FORWARD, TAO_GIOP_LOCATION_FORWARD_PERM, TAO_GIOP_NEEDS_ADDRESSING_MODE, TAO_GIOP_NO_EXCEPTION, TAO_GIOP_SYSTEM_EXCEPTION, TAO_GIOP_USER_EXCEPTION, TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD, TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM, TAO_PLUGGABLE_MESSAGE_NEEDS_ADDRESSING_MODE, TAO_PLUGGABLE_MESSAGE_NO_EXCEPTION, TAO_PLUGGABLE_MESSAGE_SYSTEM_EXCEPTION, and TAO_PLUGGABLE_MESSAGE_USER_EXCEPTION. 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 00028 // Read the request id 00029 if (!stream.read_ulong (params.request_id_)) 00030 { 00031 if (TAO_debug_level) 00032 { 00033 ACE_ERROR ((LM_ERROR, 00034 ACE_TEXT ("TAO (%P|%t) : TAO_GIOP_Message_Generator_Parser::parse_reply :") 00035 ACE_TEXT ("extracting request id\n"))); 00036 } 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 ACE_ERROR ((LM_ERROR, 00047 ACE_TEXT ("TAO (%P|%t) : TAO_GIOP_Message_Generator_Parser::parse_reply, ") 00048 ACE_TEXT ("extracting reply status\n"))); 00049 return -1; 00050 } 00051 00052 00053 // Pass the right Pluggable interface code to the transport layer 00054 switch (rep_stat) 00055 { 00056 // Request completed successfully 00057 case TAO_GIOP_NO_EXCEPTION: 00058 params.reply_status_ = 00059 TAO_PLUGGABLE_MESSAGE_NO_EXCEPTION; 00060 break; 00061 00062 // Request terminated with user exception 00063 case TAO_GIOP_USER_EXCEPTION: 00064 params.reply_status_ = 00065 TAO_PLUGGABLE_MESSAGE_USER_EXCEPTION; 00066 break; 00067 // Request terminated with system exception 00068 case TAO_GIOP_SYSTEM_EXCEPTION: 00069 params.reply_status_ = 00070 TAO_PLUGGABLE_MESSAGE_SYSTEM_EXCEPTION; 00071 break; 00072 // Reply is a location forward type 00073 case TAO_GIOP_LOCATION_FORWARD: 00074 params.reply_status_ = 00075 TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD; 00076 break; 00077 // Reply is a location forward perm type 00078 // LOCATION_FORWARD_PERM is only allowed in context of 00079 // FaultTolerant featured requests and requires PortableGroup 00080 // features in forwarded object and service context 00081 case TAO_GIOP_LOCATION_FORWARD_PERM: 00082 params.reply_status_ = 00083 TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD_PERM; 00084 break; 00085 // Reply is a location forward type 00086 case TAO_GIOP_NEEDS_ADDRESSING_MODE: 00087 params.reply_status_ = 00088 TAO_PLUGGABLE_MESSAGE_NEEDS_ADDRESSING_MODE; 00089 break; 00090 default: 00091 if (TAO_debug_level > 0) 00092 ACE_DEBUG ((LM_DEBUG, 00093 ACE_TEXT ("(%N|%l) Unknown reply status \n"))); 00094 } 00095 00096 return 0; 00097 } |
|
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(). |
|
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(). |
|
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(). |
|
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(). |
|
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(). |
|
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(). |