| 6770 | |
| 6771 | |
| 6772 | ISC_STATUS rem_port::start_and_send(P_OP operation, P_DATA* data, PACKET* sendL) |
| 6773 | { |
| 6774 | /************************************** |
| 6775 | * |
| 6776 | * s t a r t _ a n d _ s e n d |
| 6777 | * |
| 6778 | ************************************** |
| 6779 | * |
| 6780 | * Functional description |
| 6781 | * |
| 6782 | **************************************/ |
| 6783 | LocalStatus ls; |
| 6784 | CheckStatusWrapper status_vector(&ls); |
| 6785 | Rtr* transaction; |
| 6786 | getHandle(transaction, data->p_data_transaction); |
| 6787 | |
| 6788 | Rrq* requestL; |
| 6789 | getHandle(requestL, data->p_data_request); |
| 6790 | |
| 6791 | requestL = REMOTE_find_request(requestL, data->p_data_incarnation); |
| 6792 | const USHORT number = data->p_data_message_number; |
| 6793 | |
| 6794 | if (number > requestL->rrq_max_msg) |
| 6795 | { |
| 6796 | (Arg::Gds(isc_badmsgnum)).copyTo(&status_vector); |
| 6797 | return this->send_response(sendL, 0, 0, &status_vector, false); |
| 6798 | } |
| 6799 | |
| 6800 | RMessage* message = requestL->rrq_rpt[number].rrq_message; |
| 6801 | const rem_fmt* format = requestL->rrq_rpt[number].rrq_format; |
| 6802 | REMOTE_reset_request(requestL, message); |
| 6803 | |
| 6804 | requestL->rrq_iface->startAndSend(&status_vector, |
| 6805 | transaction->rtr_iface, data->p_data_incarnation, |
| 6806 | number, format->fmt_length, message->msg_address); |
| 6807 | |
| 6808 | if (!(status_vector.getState() & IStatus::STATE_ERRORS)) |
| 6809 | { |
| 6810 | requestL->rrq_rtr = transaction; |
| 6811 | if (operation == op_start_send_and_receive) |
| 6812 | return this->receive_after_start(data, sendL, &status_vector); |
| 6813 | } |
| 6814 | |
| 6815 | return this->send_response(sendL, 0, 0, &status_vector, false); |
| 6816 | } |
| 6817 | |
| 6818 | |
| 6819 | ISC_STATUS rem_port::start_transaction(P_OP operation, P_STTR * stuff, PACKET* sendL) |
no test coverage detected