MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / xdr_trrq_blr

Function xdr_trrq_blr

src/remote/protocol.cpp:2174–2241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2172
2173
2174static bool_t xdr_trrq_blr(RemoteXdr* xdrs, CSTRING* blr)
2175{
2176/**************************************
2177 *
2178 * x d r _ t r r q _ b l r
2179 *
2180 **************************************
2181 *
2182 * Functional description
2183 * Map a message blr string. This work is necessary because
2184 * we will use the blr to read data in the current packet.
2185 *
2186 **************************************/
2187 if (!xdr_cstring(xdrs, blr))
2188 return FALSE;
2189
2190 // We care about all receives and sends from fetch
2191
2192 if (xdrs->x_op == XDR_FREE || xdrs->x_op == XDR_ENCODE)
2193 return TRUE;
2194
2195 rem_port* port = xdrs->x_public;
2196 Rpr* procedure = port->port_rpr;
2197 if (!procedure)
2198 procedure = port->port_rpr = FB_NEW Rpr;
2199
2200 // Parse the blr describing the message.
2201
2202 delete procedure->rpr_in_msg;
2203 procedure->rpr_in_msg = NULL;
2204 delete procedure->rpr_in_format;
2205 procedure->rpr_in_format = NULL;
2206 delete procedure->rpr_out_msg;
2207 procedure->rpr_out_msg = NULL;
2208 delete procedure->rpr_out_format;
2209 procedure->rpr_out_format = NULL;
2210
2211 RMessage* message = PARSE_messages(blr->cstr_address, blr->cstr_length);
2212 while (message)
2213 {
2214 switch (message->msg_number)
2215 {
2216 case 0:
2217 procedure->rpr_in_msg = message;
2218 procedure->rpr_in_format = (rem_fmt*) message->msg_address;
2219 message->msg_address = message->msg_buffer;
2220 message = message->msg_next;
2221 procedure->rpr_in_msg->msg_next = NULL;
2222 break;
2223 case 1:
2224 procedure->rpr_out_msg = message;
2225 procedure->rpr_out_format = (rem_fmt*) message->msg_address;
2226 message->msg_address = message->msg_buffer;
2227 message = message->msg_next;
2228 procedure->rpr_out_msg->msg_next = NULL;
2229 break;
2230 default:
2231 {

Callers 1

xdr_protocolFunction · 0.85

Calls 2

xdr_cstringFunction · 0.85
PARSE_messagesFunction · 0.85

Tested by

no test coverage detected