| 5589 | |
| 5590 | |
| 5591 | ISC_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 | |
| 5642 | ISC_STATUS rem_port::receive_msg(P_DATA * data, PACKET* sendL) |
no test coverage detected