示例#1
0
        public void OnTimeout(TimeoutReason reason)
        {
            // In the cases that don't log directly here, we expect the setter of the timeout to also be the input
            // reader, so when the read is canceled or aborted, the reader should write the appropriate log.
            switch (reason)
            {
            case TimeoutReason.KeepAlive:
                _requestProcessor.StopProcessingNextRequest();
                break;

            case TimeoutReason.RequestHeaders:
                _requestProcessor.HandleRequestHeadersTimeout();
                break;

            case TimeoutReason.ReadDataRate:
                _requestProcessor.HandleReadDataRateTimeout();
                break;

            case TimeoutReason.WriteDataRate:
                Log.ResponseMinimumDataRateNotSatisfied(_context.ConnectionId, _http1Connection?.TraceIdentifier);
                Abort(new ConnectionAbortedException(CoreStrings.ConnectionTimedBecauseResponseMininumDataRateNotSatisfied));
                break;

            case TimeoutReason.RequestBodyDrain:
            case TimeoutReason.TimeoutFeature:
                Abort(new ConnectionAbortedException(CoreStrings.ConnectionTimedOutByServer));
                break;

            default:
                Debug.Assert(false, "Invalid TimeoutReason");
                break;
            }
        }
        public void OnTimeout(TimeoutReason reason)
        {
            // In the cases that don't log directly here, we expect the setter of the timeout to also be the input
            // reader, so when the read is canceled or aborted, the reader should write the appropriate log.

            // TODO what timeouts should we handle here? Is keep alive something we should care about?
            switch (reason)
            {
            case TimeoutReason.KeepAlive:
                SendGoAway(_highestOpenedStreamId).Preserve();
                break;

            case TimeoutReason.TimeoutFeature:
                SendGoAway(_highestOpenedStreamId).Preserve();
                break;

            case TimeoutReason.RequestHeaders:
            case TimeoutReason.ReadDataRate:
            case TimeoutReason.WriteDataRate:
            case TimeoutReason.RequestBodyDrain:
            default:
                Debug.Assert(false, "Invalid TimeoutReason");
                break;
            }
        }
示例#3
0
        private void AssignTimeout(long ticks, TimeoutReason timeoutReason)
        {
            TimerReason = timeoutReason;

            // Add Heartbeat.Interval since this can be called right before the next heartbeat.
            Interlocked.Exchange(ref _timeoutTimestamp, Interlocked.Read(ref _lastTimestamp) + ticks + Heartbeat.Interval.Ticks);
        }
示例#4
0
 public void ResetTimeout(long ticks, TimeoutReason timeoutReason)
 {
     AssignTimeout(ticks, timeoutReason);
 }
示例#5
0
        public void SetTimeout(long ticks, TimeoutReason timeoutReason)
        {
            Debug.Assert(_timeoutTimestamp == long.MaxValue, "Concurrent timeouts are not supported.");

            AssignTimeout(ticks, timeoutReason);
        }
示例#6
0
 public void SetTimeout(long ticks, TimeoutReason timeoutReason)
 {
 }
示例#7
0
 public void OnTimeout(TimeoutReason reason)
 {
     log.Info($"OnTimeout: {reason}");
 }
示例#8
0
 public void OnTimeout(TimeoutReason reason)
 {
 }
示例#9
0
 public void OnTimeout(TimeoutReason reason)
 {
     _inner.OnTimeout(reason);
     _http3._httpConnection.OnTimeout(reason);
 }
 public void OnTimeout(TimeoutReason reason)
 {
     Console.WriteLine($"TransactionListener OnTimeout TimeoutReason: {reason}");
 }
示例#11
0
 void RegisterAbortTimeout(IAsyncResult result, TimeoutReason reason)
 {
     this.timedOutReason = reason;
     TimeoutHelper.Register(result.AsyncWaitHandle, MaybeAbortCallback, this, TimeSpan.FromMilliseconds(webRequest.Timeout));
 }
示例#12
0
 public void OnTimeout(TimeoutReason reason)
 {
     Console.WriteLine($"OnTimeout Result: {reason}");
 }