/// <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);
 }
		/// <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);
		}