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

Method receive_after_start

src/remote/server/server.cpp:5591–5639  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5589
5590
5591ISC_STATUS rem_port::receive_after_start(P_DATA* data, PACKET* sendL, IStatus* status_vector)
5592{
5593/**************************************
5594 *
5595 * r e c e i v e _ a f t e r _ s t a r t
5596 *
5597 **************************************
5598 *
5599 * Functional description
5600 * Receive a message.
5601 *
5602 **************************************/
5603 Rrq* requestL;
5604
5605 getHandle(requestL, data->p_data_request);
5606
5607 const USHORT level = data->p_data_incarnation;
5608 requestL = REMOTE_find_request(requestL, level);
5609
5610 // Figure out the number of the message that we're stalled on.
5611
5612 USHORT msg_number;
5613 if (!get_next_msg_no(requestL, level, &msg_number))
5614 return this->send_response(sendL, 0, 0, status_vector, false);
5615
5616 sendL->p_operation = op_response_piggyback;
5617 P_RESP* response = &sendL->p_resp;
5618 response->p_resp_object = msg_number;
5619 response->p_resp_data.cstr_length = 0;
5620
5621 if (!sendL->p_resp.p_resp_status_vector)
5622 sendL->p_resp.p_resp_status_vector = FB_NEW_POOL(*getDefaultMemoryPool()) DynamicStatusVector();
5623
5624 sendL->p_resp.p_resp_status_vector->load(status_vector);
5625
5626 this->send_partial(sendL);
5627
5628 // Fill in packet to fool receive into thinking that it has been
5629 // called directly by the client.
5630
5631 const Rrq::rrq_repeat* tail = &requestL->rrq_rpt[msg_number];
5632 const rem_fmt* format = tail->rrq_format;
5633
5634 data->p_data_message_number = msg_number;
5635 data->p_data_messages = REMOTE_compute_batch_size(this,
5636 (USHORT) xdr_protocol_overhead(op_response_piggyback), op_send, format);
5637
5638 return this->receive_msg(data, sendL);
5639}
5640
5641
5642ISC_STATUS rem_port::receive_msg(P_DATA * data, PACKET* sendL)

Callers 2

startMethod · 0.95
start_and_sendMethod · 0.95

Calls 10

send_responseMethod · 0.95
send_partialMethod · 0.95
receive_msgMethod · 0.95
REMOTE_find_requestFunction · 0.85
get_next_msg_noFunction · 0.85
getDefaultMemoryPoolFunction · 0.85
xdr_protocol_overheadFunction · 0.85
DynamicStatusVectorClass · 0.50
loadMethod · 0.45

Tested by

no test coverage detected