Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
System.Net.Http.Http2Connection Class Referencesealed

Classes

struct  FrameHeader
 
class  Http2Stream
 
struct  Http2StreamWindowManager
 
class  NopHeadersHandler
 
struct  RttEstimator
 
class  WriteQueueEntry
 

Public Member Functions

 Http2Connection (HttpConnectionPool pool, Stream stream)
 
async ValueTask SetupAsync ()
 
ValueTask WaitForShutdownAsync ()
 
bool TryReserveStream ()
 
void ReleaseStream ()
 
ValueTask< boolWaitForAvailableStreamsAsync ()
 
override long GetIdleTicks (long nowTicks)
 
override void Dispose ()
 
async Task< HttpResponseMessageSendAsync (HttpRequestMessage request, bool async, CancellationToken cancellationToken)
 
override string ToString ()
 
override void Trace (string message, [CallerMemberName] string memberName=null)
 
string GetResponseHeaderValueWithCaching (HeaderDescriptor descriptor, ReadOnlySpan< byte > value, Encoding valueEncoding)
 
long GetLifetimeTicks (long nowTicks)
 
virtual bool CheckUsabilityOnScavenge ()
 

Protected Member Functions

void TraceConnection (Stream stream)
 

Package Types

enum  KeepAliveState { None , PingSent }
 

Package Functions

Task FlushAsync (CancellationToken cancellationToken)
 
void HeartBeat ()
 
void Trace (int streamId, string message, [CallerMemberName] string memberName=null)
 
void LogExceptions (Task task)
 

Static Package Functions

static bool IsDigit (byte c)
 
static int ParseStatusCode (ReadOnlySpan< byte > value)
 
static void IgnoreExceptions (ValueTask< int > task)
 

Properties

object SyncObject [get]
 

Private Types

enum  FrameType : byte {
  Data = 0 , Headers = 1 , Priority = 2 , RstStream = 3 ,
  Settings = 4 , PushPromise = 5 , Ping = 6 , GoAway = 7 ,
  WindowUpdate = 8 , Continuation = 9 , AltSvc = 10 , Last = 10
}
 
enum  FrameFlags : byte {
  None = 0 , EndStream = 1 , Ack = 1 , EndHeaders = 4 ,
  Padded = 8 , Priority = 0x20 , ValidBits = 0x2D
}
 
enum  SettingId : ushort {
  HeaderTableSize = 1 , EnablePush , MaxConcurrentStreams , InitialWindowSize ,
  MaxFrameSize , MaxHeaderListSize
}
 

Private Member Functions

 ~Http2Connection ()
 
void Shutdown ()
 
void SignalShutdownWaiter ()
 
void SignalAvailableStreamsWaiter (bool result)
 
async Task FlushOutgoingBytesAsync ()
 
async ValueTask< FrameHeaderReadFrameAsync (bool initialFrame=false)
 
async Task ProcessIncomingFramesAsync ()
 
Http2Stream GetStream (int streamId)
 
async ValueTask ProcessHeadersFrame (FrameHeader frameHeader)
 
ReadOnlySpan< byte > GetFrameData (ReadOnlySpan< byte > frameData, bool hasPad, bool hasPriority)
 
void ProcessAltSvcFrame (FrameHeader frameHeader)
 
void ProcessDataFrame (FrameHeader frameHeader)
 
void ProcessSettingsFrame (FrameHeader frameHeader, bool initialFrame=false)
 
void ChangeMaxConcurrentStreams (uint newValue)
 
void ChangeInitialWindowSize (int newSize)
 
void ProcessPriorityFrame (FrameHeader frameHeader)
 
void ProcessPingFrame (FrameHeader frameHeader)
 
void ProcessWindowUpdateFrame (FrameHeader frameHeader)
 
void ProcessRstStreamFrame (FrameHeader frameHeader)
 
void ProcessGoAwayFrame (FrameHeader frameHeader)
 
Task PerformWriteAsync< T > (int writeBytes, T state, Func< T, Memory< byte >, bool > writeAction, CancellationToken cancellationToken=default(CancellationToken))
 
async Task ProcessOutgoingFramesAsync ()
 
Task SendSettingsAckAsync ()
 
Task SendPingAsync (long pingContent, bool isAck=false)
 
Task SendRstStreamAsync (int streamId, Http2ProtocolErrorCode errorCode)
 
void WriteIndexedHeader (int index, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteIndexedHeader (int index, string value, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteLiteralHeader (string name, ReadOnlySpan< string > values, Encoding valueEncoding, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteLiteralHeaderValues (ReadOnlySpan< string > values, string separator, Encoding valueEncoding, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteLiteralHeaderValue (string value, Encoding valueEncoding, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteBytes (ReadOnlySpan< byte > bytes, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteHeaderCollection (HttpRequestMessage request, HttpHeaders headers, ref System.Net.ArrayBuffer headerBuffer)
 
void WriteHeaders (HttpRequestMessage request, ref System.Net.ArrayBuffer headerBuffer)
 
void AddStream (Http2Stream http2Stream)
 
async ValueTask< Http2StreamSendHeadersAsync (HttpRequestMessage request, CancellationToken cancellationToken, bool mustFlush)
 
async Task SendStreamDataAsync (int streamId, ReadOnlyMemory< byte > buffer, bool finalFlush, CancellationToken cancellationToken)
 
Task SendEndStreamAsync (int streamId)
 
Task SendWindowUpdateAsync (int streamId, int amount)
 
void ExtendWindow (int amount)
 
void Abort (Exception abortException)
 
void FinalTeardown ()
 
void RemoveStream (Http2Stream http2Stream)
 
void RefreshPingTimestamp ()
 
void ProcessPingAck (long payload)
 
void VerifyKeepAlive ()
 

Static Private Member Functions

static ReadOnlyMemory< byte > ReadOnlyMemory< byte > rest SplitBuffer (ReadOnlyMemory< byte > buffer, int maxSize)
 
static void ThrowRetry (string message, Exception innerException=null)
 
static Exception GetRequestAbortedException (Exception innerException=null)
 
static void ThrowRequestAborted (Exception innerException=null)
 
static void ThrowProtocolError ()
 
static void ThrowProtocolError (Http2ProtocolErrorCode errorCode)
 

Private Attributes

readonly HttpConnectionPool _pool
 
readonly Stream _stream
 
System.Net.ArrayBuffer _incomingBuffer
 
System.Net.ArrayBuffer _outgoingBuffer
 
readonly HPackDecoder _hpackDecoder
 
readonly Dictionary< int, Http2Stream_httpStreams
 
readonly CreditManager _connectionWindow
 
RttEstimator _rttEstimator
 
int _nextStream
 
bool _expectingSettingsAck
 
int _initialServerStreamWindowSize
 
int _pendingWindowUpdate
 
long _idleSinceTickCount
 
uint _maxConcurrentStreams
 
uint _streamsInUse
 
TaskCompletionSource< bool_availableStreamsWaiter
 
readonly Channel< WriteQueueEntry_writeChannel
 
bool _lastPendingWriterShouldFlush
 
bool _shutdown
 
TaskCompletionSource _shutdownWaiter
 
Exception _abortException
 
bool _disposed
 
int _markedByTelemetryStatus
 
readonly long _keepAlivePingDelay
 
readonly long _keepAlivePingTimeout
 
readonly HttpKeepAlivePingPolicy _keepAlivePingPolicy
 
long _keepAlivePingPayload
 
long _nextPingRequestTimestamp
 
long _keepAlivePingTimeoutTimestamp
 
volatile KeepAliveState _keepAliveState
 
string _lastDateHeaderValue
 
string _lastServerHeaderValue
 
readonly long _creationTickCount = Environment.TickCount64
 

Static Private Attributes

static string[] t_headerValues
 
static readonly byte[] s_http2ConnectionPreface = Encoding.ASCII.GetBytes("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")
 
static readonly UnboundedChannelOptions s_channelOptions
 
static ReadOnlyMemory< byte > first
 

Detailed Description

Definition at line 20 of file Http2Connection.cs.


The documentation for this class was generated from the following file: