public bool ShouldAbort(int bytesTransferred, out ChaosAbortReason reason) { reason = 0; if (abortFromTime && time <= Timestamp.Create()) { reason = ChaosAbortReason.TimeExpired; return(true); } if (abortFromBytes) { long transferred = Interlocked.Add(ref this.transferred, bytesTransferred); if (transferred > bytes) { reason = ChaosAbortReason.MaximumTransferred; return(true); } } return(false); }
/// <summary> /// Initializes a new <see cref="ChaosAbortedEventArgs"/>. /// </summary> /// <param name="reason">The reason a connection is aborted.</param> /// <param name="upstreamTransferred">The number of bytes transferred upstream /// when the connection was aborted.</param> /// <param name="downstreamTransferred">The number of bytes transferred downstream /// when the connection was aborted.</param> public ChaosAbortedEventArgs(ChaosAbortReason reason, long upstreamTransferred, long downstreamTransferred) { Reason = reason; UpstreamTransferred = upstreamTransferred; DownstreamTransferred = downstreamTransferred; }
internal void RaiseAborted(ChaosAbortReason reason, long upstreamTransferred, long downstreamTransferred) { OnAborted(new ChaosAbortedEventArgs(reason, upstreamTransferred, downstreamTransferred)); }