/// <summary>Send back an ONC/RPC reply to the original caller.</summary> /// <remarks> /// Send back an ONC/RPC reply to the original caller. This is rather a /// low-level method, typically not used by applications. Dispatcher handling /// ONC/RPC calls have to use the /// <see cref="OncRpcCallInformation.reply(org.acplt.oncrpc.XdrAble)">OncRpcCallInformation.reply(org.acplt.oncrpc.XdrAble) /// </see> /// method instead on the /// call object supplied to the handler. /// </remarks> /// <param name="callInfo"> /// information about the original call, which are necessary /// to send back the reply to the appropriate caller. /// </param> /// <param name="state"> /// ONC/RPC reply message header indicating success or failure /// and containing associated state information. /// </param> /// <param name="reply"> /// If not <code>null</code>, then this parameter references /// the reply to be serialized after the reply message header. /// </param> /// <exception cref="org.acplt.oncrpc.OncRpcException"> /// if an ONC/RPC exception occurs, like the data /// could not be successfully serialized. /// </exception> /// <exception cref="System.IO.IOException"> /// if an I/O exception occurs, like transmission /// failures over the network, etc. /// </exception> /// <seealso cref="OncRpcCallInformation">OncRpcCallInformation</seealso> /// <seealso cref="OncRpcDispatchable">OncRpcDispatchable</seealso> internal override void reply(OncRpcCallInformation callInfo , OncRpcServerReplyMessage state, XdrAble reply) { beginEncoding(callInfo, state); if (reply != null) { reply.xdrEncode(sendingXdr); } endEncoding(); }
/// <summary>Begins the sending phase for ONC/RPC replies.</summary> /// <remarks> /// Begins the sending phase for ONC/RPC replies. /// This method belongs to the lower-level access pattern when handling /// ONC/RPC calls. /// </remarks> /// <param name="callInfo"> /// Information about ONC/RPC call for which we are about /// to send back the reply. /// </param> /// <param name="state">ONC/RPC reply header indicating success or failure.</param> /// <exception cref="org.acplt.oncrpc.OncRpcException"> /// if an ONC/RPC exception occurs, like the data /// could not be successfully serialized. /// </exception> /// <exception cref="System.IO.IOException">if an I/O exception occurs, like transmission /// </exception> internal override void beginEncoding(OncRpcCallInformation callInfo, OncRpcServerReplyMessage state) { // // In case decoding has not been properly finished, do it now to // free up pending resources, etc. // if (pendingDecoding) { pendingDecoding = false; receivingXdr.endDecoding(); } // // Now start encoding using the reply message header first... // sendingXdr.beginEncoding(callInfo.peerAddress, callInfo.peerPort); state.xdrEncode(sendingXdr); }