LibUv Networking (#65)
This commit is contained in:
parent
ec6629fbe9
commit
5e2be2d7b6
69 changed files with 5612 additions and 586 deletions
59
Projects/Server/Kestrel/TransportConnection.cs
Normal file
59
Projects/Server/Kestrel/TransportConnection.cs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Buffers;
|
||||
using System.Collections.Generic;
|
||||
using System.IO.Pipelines;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using Microsoft.AspNetCore.Http.Features;
|
||||
|
||||
namespace Microsoft.AspNetCore.Connections
|
||||
{
|
||||
public abstract partial class TransportConnection : ConnectionContext
|
||||
{
|
||||
private IDictionary<object, object> _items;
|
||||
private string _connectionId;
|
||||
|
||||
public TransportConnection()
|
||||
{
|
||||
FastReset();
|
||||
}
|
||||
|
||||
public override EndPoint LocalEndPoint { get; set; }
|
||||
public override EndPoint RemoteEndPoint { get; set; }
|
||||
|
||||
public override string ConnectionId
|
||||
{
|
||||
get => _connectionId ??= CorrelationIdGenerator.GetNextId();
|
||||
set => _connectionId = value;
|
||||
}
|
||||
|
||||
public override IFeatureCollection Features => this;
|
||||
|
||||
public virtual MemoryPool<byte> MemoryPool { get; }
|
||||
|
||||
public override IDuplexPipe Transport { get; set; }
|
||||
|
||||
public IDuplexPipe Application { get; set; }
|
||||
|
||||
public override IDictionary<object, object> Items
|
||||
{
|
||||
get => _items ??= new ConnectionItems();
|
||||
set => _items = value;
|
||||
}
|
||||
|
||||
public override CancellationToken ConnectionClosed { get; set; }
|
||||
|
||||
// DO NOT remove this override to ConnectionContext.Abort. Doing so would cause
|
||||
// any TransportConnection that does not override Abort or calls base.Abort
|
||||
// to stack overflow when IConnectionLifetimeFeature.Abort() is called.
|
||||
// That said, all derived types should override this method should override
|
||||
// this implementation of Abort because canceling pending output reads is not
|
||||
// sufficient to abort the connection if there is backpressure.
|
||||
public override void Abort(ConnectionAbortedException abortReason)
|
||||
{
|
||||
Application.Input.CancelPendingRead();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue