/// <summary> /// Processes a received abortion /// </summary> /// <param name="source">The address of the device that sent the abortion</param> /// <param name="message">The abortion</param> public void ProcessAbort(Address source, AbortMessage message) { if (message.Server) { ClientTransaction tx = null; lock(_lock) { tx = _getClientTransaction(source, message.InvokeId); } if(tx != null) tx.OnAbort(message); } }
/// <summary> /// Sends an abort message /// </summary> /// <param name="reason">The abort reason</param> private void _sendAbort(AbortReason reason) { AbortMessage message = new AbortMessage(); message.AbortReason = (byte)reason; message.InvokeId = _invokeId; message.Server = false; _host.SendRaw(_device.Address, true, message, BufferSegment.Empty); }
/// <summary> /// Called whenever an abort message is /// received for this transaction /// </summary> /// <param name="message">The abort message</param> public void OnAbort(AbortMessage message) { lock(_lock) { _handle.FeedAbort((AbortReason)message.AbortReason); _transitionTo(ClientState.Disposed); } }