diff --git a/README.md b/README.md index 2010c1e..9e15e8f 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,9 @@ Supports ### Server Name Indication ```csharp -var yourClientStream = new CustomBufferedStream(clientStream, 4096) -var clientSslHelloInfo = await SslTools.PeekClientHello(yourClientStream); +var bufferPool = new DefaultBufferPool(); +var yourClientStream = new CustomBufferedStream(clientStream, bufferPool, 4096) +var clientSslHelloInfo = await SslTools.PeekClientHello(yourClientStream, bufferPool); //will be null if no client hello was received (not a SSL connection) if (clientSslHelloInfo != null) @@ -44,9 +45,9 @@ if (clientSslHelloInfo != null) ### Peek Client SSL Hello ```csharp - -var yourClientStream = new CustomBufferedStream(clientStream, 4096) -var clientSslHelloInfo = await SslTools.PeekClientHello(yourClientStream); +var bufferPool = new DefaultBufferPool(); +var yourClientStream = new CustomBufferedStream(clientStream, bufferPool, 4096) +var clientSslHelloInfo = await SslTools.PeekClientHello(yourClientStream, bufferPool); //will be null if no client hello was received (not a SSL connection) if(clientSslHelloInfo!=null) @@ -59,8 +60,9 @@ if(clientSslHelloInfo!=null) ### Peek Server SSL Hello ```csharp -var yourServerStream = new CustomBufferedStream(serverStream, 4096) -var serverSslHelloInfo = await SslTools.PeekServerHello(yourServerStream); +var bufferPool = new DefaultBufferPool(); +var yourServerStream = new CustomBufferedStream(serverStream, bufferPool, 4096) +var serverSslHelloInfo = await SslTools.PeekServerHello(yourServerStream, bufferPool); //will be null if no server hello was received (not a SSL connection) if(serverSslHelloInfo!=null) diff --git a/StreamExtended/BufferPool/DefaultBufferPool.cs b/StreamExtended/BufferPool/DefaultBufferPool.cs new file mode 100644 index 0000000..d921250 --- /dev/null +++ b/StreamExtended/BufferPool/DefaultBufferPool.cs @@ -0,0 +1,47 @@ +using System.Collections.Concurrent; + +namespace StreamExtended +{ + + /// + /// A concrete IBufferPool implementation using a thread-safe stack. + /// Works well when all consumers ask for buffers with the same size. + /// If your application would use size buffers consider implementing IBufferPool using System.Buffers library from Microsoft. + /// + public class DefaultBufferPool : IBufferPool + { + private readonly ConcurrentStack buffers = new ConcurrentStack(); + + /// + /// Gets a buffer. + /// + /// Size of the buffer. + /// + public byte[] GetBuffer(int bufferSize) + { + if (!buffers.TryPop(out var buffer) || buffer.Length != bufferSize) + { + buffer = new byte[bufferSize]; + } + + return buffer; + } + + /// + /// Returns the buffer. + /// + /// The buffer. + public void ReturnBuffer(byte[] buffer) + { + if (buffer != null) + { + buffers.Push(buffer); + } + } + + public void Dispose() + { + buffers.Clear(); + } + } +} diff --git a/StreamExtended/BufferPool/IBufferPool.cs b/StreamExtended/BufferPool/IBufferPool.cs new file mode 100644 index 0000000..f7f1b76 --- /dev/null +++ b/StreamExtended/BufferPool/IBufferPool.cs @@ -0,0 +1,14 @@ +using System; + +namespace StreamExtended +{ + /// + /// Use this interface to implement custom buffer pool. + /// To use the default buffer pool implementation use DefaultBufferPool class. + /// + public interface IBufferPool : IDisposable + { + byte[] GetBuffer(int bufferSize); + void ReturnBuffer(byte[] buffer); + } +} diff --git a/StreamExtended/ClientHelloInfo.cs b/StreamExtended/ClientHelloInfo.cs index 1318659..4cf3bd0 100644 --- a/StreamExtended/ClientHelloInfo.cs +++ b/StreamExtended/ClientHelloInfo.cs @@ -6,6 +6,9 @@ namespace StreamExtended { + /// + /// Wraps up the client SSL hello information. + /// public class ClientHelloInfo { private static readonly string[] compressions = { diff --git a/StreamExtended/Helpers/BufferPool.cs b/StreamExtended/Helpers/BufferPool.cs deleted file mode 100644 index 445ec8c..0000000 --- a/StreamExtended/Helpers/BufferPool.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Collections.Concurrent; - -namespace StreamExtended.Helpers -{ - public static class BufferPool - { - private static readonly ConcurrentQueue buffers = new ConcurrentQueue(); - - /// - /// Gets a buffer. - /// - /// Size of the buffer. - /// - public static byte[] GetBuffer(int bufferSize) - { - if (!buffers.TryDequeue(out var buffer) || buffer.Length != bufferSize) - { - buffer = new byte[bufferSize]; - } - - return buffer; - } - - /// - /// Returns the buffer. - /// - /// The buffer. - public static void ReturnBuffer(byte[] buffer) - { - if (buffer != null) - { - buffers.Enqueue(buffer); - } - } - } -} diff --git a/StreamExtended/Models/SslExtension.cs b/StreamExtended/Models/SslExtension.cs index 79f12e5..9c3fe9d 100644 --- a/StreamExtended/Models/SslExtension.cs +++ b/StreamExtended/Models/SslExtension.cs @@ -1,5 +1,8 @@ namespace StreamExtended.Models { + /// + /// The SSL extension information. + /// public class SslExtension { /// diff --git a/StreamExtended/Network/ClientHelloAlpnAdderStream.cs b/StreamExtended/Network/ClientHelloAlpnAdderStream.cs index ca20026..e057b59 100644 --- a/StreamExtended/Network/ClientHelloAlpnAdderStream.cs +++ b/StreamExtended/Network/ClientHelloAlpnAdderStream.cs @@ -7,10 +7,11 @@ namespace StreamExtended.Network public class ClientHelloAlpnAdderStream : Stream { private readonly CustomBufferedStream stream; + private readonly IBufferPool bufferPool; private bool called; - public ClientHelloAlpnAdderStream(CustomBufferedStream stream) + public ClientHelloAlpnAdderStream(CustomBufferedStream stream, IBufferPool bufferPool) { this.stream = stream; } @@ -49,7 +50,7 @@ public override void Write(byte[] buffer, int offset, int count) //this can be non async, because reads from a memory stream var cts = new CancellationTokenSource(); - var clientHello = SslTools.PeekClientHello(new CustomBufferedStream(ms, (int)ms.Length), cts.Token).Result; + var clientHello = SslTools.PeekClientHello(new CustomBufferedStream(ms, bufferPool, (int)ms.Length), bufferPool, cts.Token).Result; if (clientHello != null) { // 0x00 0x10: ALPN identifier diff --git a/StreamExtended/Network/CopyStream.cs b/StreamExtended/Network/CopyStream.cs index bc6bd3f..33a3291 100644 --- a/StreamExtended/Network/CopyStream.cs +++ b/StreamExtended/Network/CopyStream.cs @@ -1,16 +1,21 @@ using System; using System.Threading; using System.Threading.Tasks; -using StreamExtended.Helpers; namespace StreamExtended.Network { + /// + /// Copies the source stream to destination stream. + /// But this let users to peek and read the copying process. + /// public class CopyStream : ICustomStreamReader, IDisposable { private readonly ICustomStreamReader reader; private readonly ICustomStreamWriter writer; + private readonly IBufferPool bufferPool; + public int BufferSize { get; } private int bufferLength; @@ -25,12 +30,12 @@ public class CopyStream : ICustomStreamReader, IDisposable public long ReadBytes { get; private set; } - public CopyStream(ICustomStreamReader reader, ICustomStreamWriter writer, int bufferSize) + public CopyStream(ICustomStreamReader reader, ICustomStreamWriter writer, IBufferPool bufferPool, int bufferSize) { this.reader = reader; this.writer = writer; BufferSize = bufferSize; - buffer = BufferPool.GetBuffer(bufferSize); + buffer = bufferPool.GetBuffer(bufferSize); } public async Task FillBufferAsync(CancellationToken cancellationToken = default(CancellationToken)) @@ -117,7 +122,7 @@ public int Read(byte[] buffer, int offset, int count) public Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) { - return CustomBufferedStream.ReadLineInternalAsync(this, cancellationToken); + return CustomBufferedStream.ReadLineInternalAsync(this, bufferPool, cancellationToken); } public void Dispose() @@ -125,9 +130,9 @@ public void Dispose() if (!disposed) { disposed = true; - var buf = buffer; + var b = buffer; buffer = null; - BufferPool.ReturnBuffer(buf); + bufferPool.ReturnBuffer(b); } } } diff --git a/StreamExtended/Network/CustomBufferedPeekStream.cs b/StreamExtended/Network/CustomBufferedPeekStream.cs index 532fbb3..01f4cb7 100644 --- a/StreamExtended/Network/CustomBufferedPeekStream.cs +++ b/StreamExtended/Network/CustomBufferedPeekStream.cs @@ -1,17 +1,18 @@ -using System; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace StreamExtended.Network { - public class CustomBufferedPeekStream : ICustomStreamReader + internal class CustomBufferedPeekStream : ICustomStreamReader { + private readonly IBufferPool bufferPool; private readonly ICustomStreamReader baseStream; internal int Position { get; private set; } - internal CustomBufferedPeekStream(ICustomStreamReader baseStream, int startPosition = 0) + internal CustomBufferedPeekStream(ICustomStreamReader baseStream, IBufferPool bufferPool, int startPosition = 0) { + this.bufferPool = bufferPool; this.baseStream = baseStream; Position = startPosition; } @@ -130,7 +131,7 @@ Task ICustomStreamReader.ReadAsync(byte[] buffer, int offset, int count, Ca /// Task ICustomStreamReader.ReadLineAsync(CancellationToken cancellationToken) { - return CustomBufferedStream.ReadLineInternalAsync(this, cancellationToken); + return CustomBufferedStream.ReadLineInternalAsync(this, bufferPool, cancellationToken); } } diff --git a/StreamExtended/Network/CustomBufferedStream.cs b/StreamExtended/Network/CustomBufferedStream.cs index d5defbb..d50659e 100644 --- a/StreamExtended/Network/CustomBufferedStream.cs +++ b/StreamExtended/Network/CustomBufferedStream.cs @@ -1,6 +1,4 @@ -using StreamExtended.Helpers; -using System; -using System.Collections.Generic; +using System; using System.Diagnostics; using System.IO; using System.Text; @@ -10,8 +8,9 @@ namespace StreamExtended.Network { /// - /// A custom network stream inherited from stream - /// with an underlying buffer + /// A custom network stream inherited from stream + /// with an underlying read buffer supporting both read/write + /// of UTF-8 encoded string or raw bytes asynchronously from last read position. /// /// public class CustomBufferedStream : Stream, ICustomStreamReader @@ -31,6 +30,8 @@ public class CustomBufferedStream : Stream, ICustomStreamReader private bool closed; + private readonly IBufferPool bufferPool; + public int BufferSize { get; } public event EventHandler DataRead; @@ -41,14 +42,16 @@ public class CustomBufferedStream : Stream, ICustomStreamReader /// Initializes a new instance of the class. /// /// The base stream. + /// Bufferpool. /// Size of the buffer. /// to leave the stream open after disposing the object; otherwise, . - public CustomBufferedStream(Stream baseStream, int bufferSize, bool leaveOpen = false) + public CustomBufferedStream(Stream baseStream, IBufferPool bufferPool, int bufferSize, bool leaveOpen = false) { this.baseStream = baseStream; BufferSize = bufferSize; this.leaveOpen = leaveOpen; - streamBuffer = BufferPool.GetBuffer(bufferSize); + streamBuffer = bufferPool.GetBuffer(bufferSize); + this.bufferPool = bufferPool; } /// @@ -291,7 +294,7 @@ public byte ReadByteFromBuffer() /// The byte to write to the stream. public override void WriteByte(byte value) { - var buffer = BufferPool.GetBuffer(BufferSize); + var buffer = bufferPool.GetBuffer(BufferSize); try { buffer[0] = value; @@ -300,7 +303,7 @@ public override void WriteByte(byte value) } finally { - BufferPool.ReturnBuffer(buffer); + bufferPool.ReturnBuffer(buffer); } } @@ -331,7 +334,7 @@ protected override void Dispose(bool disposing) var buffer = streamBuffer; streamBuffer = null; - BufferPool.ReturnBuffer(buffer); + bufferPool.ReturnBuffer(buffer); } } @@ -493,21 +496,21 @@ public bool FillBuffer() /// public Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) { - return ReadLineInternalAsync(this, cancellationToken); + return ReadLineInternalAsync(this, bufferPool, cancellationToken); } /// /// Read a line from the byte stream /// /// - internal static async Task ReadLineInternalAsync(ICustomStreamReader reader, CancellationToken cancellationToken = default(CancellationToken)) + internal static async Task ReadLineInternalAsync(ICustomStreamReader reader, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken)) { byte lastChar = default(byte); int bufferDataLength = 0; // try to use buffer from the buffer pool, usually it is enough - var bufferPoolBuffer = BufferPool.GetBuffer(reader.BufferSize); + var bufferPoolBuffer = bufferPool.GetBuffer(reader.BufferSize); var buffer = bufferPoolBuffer; try @@ -541,7 +544,7 @@ public bool FillBuffer() } finally { - BufferPool.ReturnBuffer(bufferPoolBuffer); + bufferPool.ReturnBuffer(bufferPoolBuffer); } if (bufferDataLength == 0) diff --git a/StreamExtended/Network/DataEventArgs.cs b/StreamExtended/Network/DataEventArgs.cs index f922833..e12bc9d 100644 --- a/StreamExtended/Network/DataEventArgs.cs +++ b/StreamExtended/Network/DataEventArgs.cs @@ -3,7 +3,7 @@ namespace StreamExtended.Network { /// - /// Wraps the data sent/received by a proxy server instance. + /// Wraps the data sent/received event argument. /// public class DataEventArgs : EventArgs { diff --git a/StreamExtended/Network/ICustomStreamReader.cs b/StreamExtended/Network/ICustomStreamReader.cs index c7bdcdb..058dc01 100644 --- a/StreamExtended/Network/ICustomStreamReader.cs +++ b/StreamExtended/Network/ICustomStreamReader.cs @@ -4,6 +4,9 @@ namespace StreamExtended.Network { + /// + /// This concrete implemetation of interface acts as the source stream for CopyStream class. + /// public interface ICustomStreamReader { int BufferSize { get; } diff --git a/StreamExtended/Network/ICustomStreamWriter.cs b/StreamExtended/Network/ICustomStreamWriter.cs index 68aecff..8c73d0f 100644 --- a/StreamExtended/Network/ICustomStreamWriter.cs +++ b/StreamExtended/Network/ICustomStreamWriter.cs @@ -3,6 +3,9 @@ namespace StreamExtended.Network { + /// + /// A concrete implementation of this interface is required when calling CopyStream. + /// public interface ICustomStreamWriter { void Write(byte[] buffer, int i, int bufferLength); diff --git a/StreamExtended/Network/ServerHelloAlpnAdderStream.cs b/StreamExtended/Network/ServerHelloAlpnAdderStream.cs index 746f564..c4920bc 100644 --- a/StreamExtended/Network/ServerHelloAlpnAdderStream.cs +++ b/StreamExtended/Network/ServerHelloAlpnAdderStream.cs @@ -6,12 +6,14 @@ namespace StreamExtended.Network { public class ServerHelloAlpnAdderStream : Stream { + private readonly IBufferPool bufferPool; private readonly CustomBufferedStream stream; private bool called; - public ServerHelloAlpnAdderStream(CustomBufferedStream stream) + public ServerHelloAlpnAdderStream(CustomBufferedStream stream, IBufferPool bufferPool) { + this.bufferPool = bufferPool; this.stream = stream; } @@ -49,7 +51,7 @@ public override void Write(byte[] buffer, int offset, int count) //this can be non async, because reads from a memory stream var cts = new CancellationTokenSource(); - var serverHello = SslTools.PeekServerHello(new CustomBufferedStream(ms, (int)ms.Length), cts.Token).Result; + var serverHello = SslTools.PeekServerHello(new CustomBufferedStream(ms, bufferPool, (int)ms.Length), bufferPool, cts.Token).Result; if (serverHello != null) { // 0x00 0x10: ALPN identifier diff --git a/StreamExtended/ServerHelloInfo.cs b/StreamExtended/ServerHelloInfo.cs index 390e6aa..e7adc72 100644 --- a/StreamExtended/ServerHelloInfo.cs +++ b/StreamExtended/ServerHelloInfo.cs @@ -6,6 +6,9 @@ namespace StreamExtended { + /// + /// Wraps up the server SSL hello information. + /// public class ServerHelloInfo { private static readonly string[] compressions = { diff --git a/StreamExtended/SslTools.cs b/StreamExtended/SslTools.cs index 7fbcd77..97b74a3 100644 --- a/StreamExtended/SslTools.cs +++ b/StreamExtended/SslTools.cs @@ -7,15 +7,32 @@ namespace StreamExtended { + /// + /// Use this class to peek SSL client/server hello information. + /// public class SslTools { - public static async Task IsClientHello(CustomBufferedStream stream, CancellationToken cancellationToken) + /// + /// Is the given stream starts with an SSL client hello? + /// + /// + /// + /// + /// + public static async Task IsClientHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken) { - var clientHello = await PeekClientHello(stream, cancellationToken); + var clientHello = await PeekClientHello(stream, bufferPool, cancellationToken); return clientHello != null; } - public static async Task PeekClientHello(CustomBufferedStream clientStream, CancellationToken cancellationToken = default (CancellationToken)) + /// + /// Peek the SSL client hello information. + /// + /// + /// + /// + /// + public static async Task PeekClientHello(CustomBufferedStream clientStream, IBufferPool bufferPool, CancellationToken cancellationToken = default (CancellationToken)) { //detects the HTTPS ClientHello message as it is described in the following url: //https://stackoverflow.com/questions/3897883/how-to-detect-an-incoming-ssl-https-handshake-ssl-wire-format @@ -29,7 +46,7 @@ public static async Task IsClientHello(CustomBufferedStream stream, Cancel if ((recordType & 0x80) == 0x80) { //SSL 2 - var peekStream = new CustomBufferedPeekStream(clientStream, 1); + var peekStream = new CustomBufferedPeekStream(clientStream, bufferPool, 1); // length value + minimum length if (!await peekStream.EnsureBufferLength(10, cancellationToken)) @@ -86,7 +103,7 @@ public static async Task IsClientHello(CustomBufferedStream stream, Cancel } else if (recordType == 0x16) { - var peekStream = new CustomBufferedPeekStream(clientStream, 1); + var peekStream = new CustomBufferedPeekStream(clientStream, bufferPool, 1); //should contain at least 43 bytes // 2 version + 2 length + 1 type + 3 length(?) + 2 version + 32 random + 1 sessionid length @@ -154,7 +171,7 @@ public static async Task IsClientHello(CustomBufferedStream stream, Cancel int extenstionsStartPosition = peekStream.Position; - var extensions = await ReadExtensions(majorVersion, minorVersion, peekStream, cancellationToken); + var extensions = await ReadExtensions(majorVersion, minorVersion, peekStream, bufferPool, cancellationToken); var clientHelloInfo = new ClientHelloInfo { @@ -176,7 +193,7 @@ public static async Task IsClientHello(CustomBufferedStream stream, Cancel return null; } - private static async Task> ReadExtensions(int majorVersion, int minorVersion, CustomBufferedPeekStream peekStream, CancellationToken cancellationToken) + private static async Task> ReadExtensions(int majorVersion, int minorVersion, CustomBufferedPeekStream peekStream, IBufferPool bufferPool, CancellationToken cancellationToken) { Dictionary extensions = null; if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 1) @@ -205,13 +222,26 @@ private static async Task> ReadExtensions(int m return extensions; } - public static async Task IsServerHello(CustomBufferedStream stream, CancellationToken cancellationToken) + /// + /// Is the given stream starts with an SSL client hello? + /// + /// + /// + /// + /// + public static async Task IsServerHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken) { - var serverHello = await PeekServerHello(stream, cancellationToken); + var serverHello = await PeekServerHello(stream, bufferPool, cancellationToken); return serverHello != null; } - - public static async Task PeekServerHello(CustomBufferedStream serverStream, CancellationToken cancellationToken = default(CancellationToken)) + /// + /// Peek the SSL client hello information. + /// + /// + /// + /// + /// + public static async Task PeekServerHello(CustomBufferedStream serverStream, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken)) { //detects the HTTPS ClientHello message as it is described in the following url: //https://stackoverflow.com/questions/3897883/how-to-detect-an-incoming-ssl-https-handshake-ssl-wire-format @@ -226,7 +256,7 @@ public static async Task IsServerHello(CustomBufferedStream stream, Cancel { //SSL 2 // not tested. SSL2 is deprecated - var peekStream = new CustomBufferedPeekStream(serverStream, 1); + var peekStream = new CustomBufferedPeekStream(serverStream, bufferPool, 1); // length value + minimum length if (!await peekStream.EnsureBufferLength(39, cancellationToken)) @@ -275,7 +305,7 @@ public static async Task IsServerHello(CustomBufferedStream stream, Cancel } else if (recordType == 0x16) { - var peekStream = new CustomBufferedPeekStream(serverStream, 1); + var peekStream = new CustomBufferedPeekStream(serverStream, bufferPool, 1); //should contain at least 43 bytes // 2 version + 2 length + 1 type + 3 length(?) + 2 version + 32 random + 1 sessionid length @@ -317,7 +347,7 @@ public static async Task IsServerHello(CustomBufferedStream stream, Cancel int extenstionsStartPosition = peekStream.Position; - var extensions = await ReadExtensions(majorVersion, minorVersion, peekStream, cancellationToken); + var extensions = await ReadExtensions(majorVersion, minorVersion, peekStream, bufferPool, cancellationToken); //var rawBytes = new CustomBufferedPeekStream(serverStream).ReadBytes(peekStream.Position); diff --git a/StreamExtended/StreamExtended.Docs.csproj b/StreamExtended/StreamExtended.Docs.csproj index 527c1bc..f969efe 100644 --- a/StreamExtended/StreamExtended.Docs.csproj +++ b/StreamExtended/StreamExtended.Docs.csproj @@ -54,15 +54,17 @@ + + - - - + - + + + diff --git a/StreamExtended/StreamExtended.csproj b/StreamExtended/StreamExtended.csproj index 829e4d3..fa7202a 100644 --- a/StreamExtended/StreamExtended.csproj +++ b/StreamExtended/StreamExtended.csproj @@ -9,6 +9,11 @@ Package Description + + + + + diff --git a/docs/api/StreamExtended.ClientHelloInfo.html b/docs/api/StreamExtended.ClientHelloInfo.html index d90cfc0..182c59c 100644 --- a/docs/api/StreamExtended.ClientHelloInfo.html +++ b/docs/api/StreamExtended.ClientHelloInfo.html @@ -83,7 +83,8 @@

Class ClientHelloInfo

-
+

Wraps up the client SSL hello information.

+
Inheritance
diff --git a/docs/api/StreamExtended.DefaultBufferPool.html b/docs/api/StreamExtended.DefaultBufferPool.html new file mode 100644 index 0000000..4be6923 --- /dev/null +++ b/docs/api/StreamExtended.DefaultBufferPool.html @@ -0,0 +1,258 @@ + + + + + + + + Class DefaultBufferPool + | Stream Extended + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+
+
+

+
+
    +
    +
    + + + +
    + + + + + + diff --git a/docs/api/StreamExtended.IBufferPool.html b/docs/api/StreamExtended.IBufferPool.html new file mode 100644 index 0000000..5b1ee2e --- /dev/null +++ b/docs/api/StreamExtended.IBufferPool.html @@ -0,0 +1,208 @@ + + + + + + + + Interface IBufferPool + | Stream Extended + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + +
    +
    +
    +

    +
    +
      +
      +
      + + + +
      + + + + + + diff --git a/docs/api/StreamExtended.Models.SslExtension.html b/docs/api/StreamExtended.Models.SslExtension.html index 9234392..acdb828 100644 --- a/docs/api/StreamExtended.Models.SslExtension.html +++ b/docs/api/StreamExtended.Models.SslExtension.html @@ -83,7 +83,8 @@

      Class SslExtension

      -
      +

      The SSL extension information.

      +
      Inheritance
      diff --git a/docs/api/StreamExtended.Models.html b/docs/api/StreamExtended.Models.html index 97eba5a..fe42fe4 100644 --- a/docs/api/StreamExtended.Models.html +++ b/docs/api/StreamExtended.Models.html @@ -88,7 +88,8 @@

      Classes

      SslExtension

      -
      +

      The SSL extension information.

      +
      diff --git a/docs/api/StreamExtended.Network.ClientHelloAlpnAdderStream.html b/docs/api/StreamExtended.Network.ClientHelloAlpnAdderStream.html index 37bebda..f459f11 100644 --- a/docs/api/StreamExtended.Network.ClientHelloAlpnAdderStream.html +++ b/docs/api/StreamExtended.Network.ClientHelloAlpnAdderStream.html @@ -224,12 +224,12 @@

      Constructors -

      ClientHelloAlpnAdderStream(CustomBufferedStream)

      +

      ClientHelloAlpnAdderStream(CustomBufferedStream, IBufferPool)

      Declaration
      -
      public ClientHelloAlpnAdderStream(CustomBufferedStream stream)
      +
      public ClientHelloAlpnAdderStream(CustomBufferedStream stream, IBufferPool bufferPool)
      Parameters
      @@ -246,6 +246,11 @@
      Parameters
      + + + + +
      stream
      IBufferPoolbufferPool

      Properties diff --git a/docs/api/StreamExtended.Network.CopyStream.html b/docs/api/StreamExtended.Network.CopyStream.html new file mode 100644 index 0000000..aae9f8b --- /dev/null +++ b/docs/api/StreamExtended.Network.CopyStream.html @@ -0,0 +1,689 @@ + + + + + + + + Class CopyStream + | Stream Extended + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      + +
      +
      +
      +

      +
      +
        +
        +
        + + + +
        + + + + + + diff --git a/docs/api/StreamExtended.Network.CustomBufferedPeekStream.html b/docs/api/StreamExtended.Network.CustomBufferedPeekStream.html index c10c8bc..c5f06ae 100644 --- a/docs/api/StreamExtended.Network.CustomBufferedPeekStream.html +++ b/docs/api/StreamExtended.Network.CustomBufferedPeekStream.html @@ -90,6 +90,34 @@

        Inheritance
        CustomBufferedPeekStream
        +
        +
        Implements
        + +
        +
        Namespace: StreamExtended.Network
        Assembly: StreamExtended.dll
        Syntax
        @@ -124,6 +152,383 @@
        Property Value
        +

        Explicit Interface Implementations +

        + + + +

        ICustomStreamReader.BufferSize

        +
        +
        +
        Declaration
        +
        +
        int ICustomStreamReader.BufferSize { get; }
        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Int32
        + + + +

        ICustomStreamReader.DataAvailable

        +

        Gets a value indicating whether data is available.

        +
        +
        +
        Declaration
        +
        +
        bool ICustomStreamReader.DataAvailable { get; }
        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Boolean
        + + + +

        ICustomStreamReader.FillBufferAsync(CancellationToken)

        +

        Fills the buffer asynchronous.

        +
        +
        +
        Declaration
        +
        +
        Task<bool> ICustomStreamReader.FillBufferAsync(CancellationToken cancellationToken)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + +
        TypeNameDescription
        CancellationTokencancellationToken
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Task<Boolean>
        + + + +

        ICustomStreamReader.PeekByteAsync(Int32, CancellationToken)

        +

        Peeks a byte asynchronous.

        +
        +
        +
        Declaration
        +
        +
        Task<int> ICustomStreamReader.PeekByteAsync(int index, CancellationToken cancellationToken)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + + + + + + +
        TypeNameDescription
        Int32index

        The index.

        +
        CancellationTokencancellationToken

        The cancellation token.

        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Task<Int32>
        + + + +

        ICustomStreamReader.PeekByteFromBuffer(Int32)

        +

        Peeks a byte from buffer.

        +
        +
        +
        Declaration
        +
        +
        byte ICustomStreamReader.PeekByteFromBuffer(int index)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + +
        TypeNameDescription
        Int32index

        The index.

        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Byte
        + + + +

        ICustomStreamReader.Read(Byte[], Int32, Int32)

        +
        +
        +
        Declaration
        +
        +
        int ICustomStreamReader.Read(byte[] buffer, int offset, int count)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + + + + + + + + + + + +
        TypeNameDescription
        Byte[]buffer
        Int32offset
        Int32count
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Int32
        + + + +

        ICustomStreamReader.ReadAsync(Byte[], Int32, Int32, CancellationToken)

        +

        Reads the asynchronous.

        +
        +
        +
        Declaration
        +
        +
        Task<int> ICustomStreamReader.ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        TypeNameDescription
        Byte[]buffer

        The buffer.

        +
        Int32offset

        The offset.

        +
        Int32count

        The count.

        +
        CancellationTokencancellationToken

        The cancellation token.

        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Task<Int32>
        + + + +

        ICustomStreamReader.ReadByteFromBuffer()

        +

        Reads a byte from buffer.

        +
        +
        +
        Declaration
        +
        +
        byte ICustomStreamReader.ReadByteFromBuffer()
        +
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Byte
        + + + +

        ICustomStreamReader.ReadLineAsync(CancellationToken)

        +

        Read a line from the byte stream

        +
        +
        +
        Declaration
        +
        +
        Task<string> ICustomStreamReader.ReadLineAsync(CancellationToken cancellationToken)
        +
        +
        Parameters
        + + + + + + + + + + + + + + + +
        TypeNameDescription
        CancellationTokencancellationToken
        +
        Returns
        + + + + + + + + + + + + + +
        TypeDescription
        Task<String>
        +

        Implements

        + diff --git a/docs/api/StreamExtended.Network.CustomBufferedStream.html b/docs/api/StreamExtended.Network.CustomBufferedStream.html index fbb429c..3b89d72 100644 --- a/docs/api/StreamExtended.Network.CustomBufferedStream.html +++ b/docs/api/StreamExtended.Network.CustomBufferedStream.html @@ -84,7 +84,8 @@

        Class CustomBufferedStream

        A custom network stream inherited from stream -with an underlying buffer

        +with an underlying read buffer supporting both read/write +of UTF-8 encoded string or raw bytes asynchronously from last read position.

        @@ -97,7 +98,7 @@
        Inheritance
        Implements
        -
        ICustomStreamReader
        +
        Inherited Members
        @@ -197,13 +198,13 @@

        Constructors -

        CustomBufferedStream(Stream, Int32, Boolean)

        +

        CustomBufferedStream(Stream, IBufferPool, Int32, Boolean)

        Initializes a new instance of the CustomBufferedStream class.

        Declaration
        -
        public CustomBufferedStream(Stream baseStream, int bufferSize, bool leaveOpen = false)
        +
        public CustomBufferedStream(Stream baseStream, IBufferPool bufferPool, int bufferSize, bool leaveOpen = false)
        Parameters
        @@ -219,6 +220,12 @@
        Parameters
        + + + + + @@ -1479,7 +1486,7 @@
        Event Type
        - + @@ -1503,7 +1510,7 @@
        Event Type
        - + @@ -1513,7 +1520,7 @@

        Implements

        System.IDisposable
        - ICustomStreamReader + ICustomStreamReader

        See Also

        diff --git a/docs/api/StreamExtended.Network.DataEventArgs.html b/docs/api/StreamExtended.Network.DataEventArgs.html new file mode 100644 index 0000000..b7c7ee6 --- /dev/null +++ b/docs/api/StreamExtended.Network.DataEventArgs.html @@ -0,0 +1,282 @@ + + + + + + + + Class DataEventArgs + | Stream Extended + + + + + + + + + + + + + + + +
        +
        + + + + +
        +
        + +
        +
        +
        +

        +
        +
          +
          +
          +
          Stream baseStream

          The base stream.

          +
          IBufferPoolbufferPool

          Bufferpool.

          EventHandler<DataEventArgs>EventHandler<DataEventArgs>
          EventHandler<DataEventArgs>EventHandler<DataEventArgs>
          + + + + + + + + + + + + + + + + + + + + + + + + +
          TypeNameDescription
          Byte[]buffer
          Int32offset
          Int32count
          +

          Properties +

          + + + +

          Buffer

          +

          The buffer with data.

          +
          +
          +
          Declaration
          +
          +
          public byte[] Buffer { get; }
          +
          +
          Property Value
          + + + + + + + + + + + + + +
          TypeDescription
          Byte[]
          + + + +

          Count

          +

          Length from offset in buffer with valid data.

          +
          +
          +
          Declaration
          +
          +
          public int Count { get; }
          +
          +
          Property Value
          + + + + + + + + + + + + + +
          TypeDescription
          Int32
          + + + +

          Offset

          +

          Offset in buffer from which valid data begins.

          +
          +
          +
          Declaration
          +
          +
          public int Offset { get; }
          +
          +
          Property Value
          + + + + + + + + + + + + + +
          TypeDescription
          Int32
          + +
          + + +
          + + + + + + + + + + diff --git a/docs/api/StreamExtended.Network.ICustomStreamReader.html b/docs/api/StreamExtended.Network.ICustomStreamReader.html new file mode 100644 index 0000000..e8989b7 --- /dev/null +++ b/docs/api/StreamExtended.Network.ICustomStreamReader.html @@ -0,0 +1,546 @@ + + + + + + + + Interface ICustomStreamReader + | Stream Extended + + + + + + + + + + + + + + + +
          +
          + + + + +
          +
          + +
          +
          +
          +

          +
          +
            +
            +
            + + + +
            + + + + + + diff --git a/docs/api/StreamExtended.Network.ICustomStreamWriter.html b/docs/api/StreamExtended.Network.ICustomStreamWriter.html new file mode 100644 index 0000000..48a9279 --- /dev/null +++ b/docs/api/StreamExtended.Network.ICustomStreamWriter.html @@ -0,0 +1,226 @@ + + + + + + + + Interface ICustomStreamWriter + | Stream Extended + + + + + + + + + + + + + + + +
            +
            + + + + +
            +
            + +
            +
            +
            +

            +
            +
              +
              +
              + + + +
              + + + + + + diff --git a/docs/api/StreamExtended.Network.ServerHelloAlpnAdderStream.html b/docs/api/StreamExtended.Network.ServerHelloAlpnAdderStream.html index 7088a75..35a2e83 100644 --- a/docs/api/StreamExtended.Network.ServerHelloAlpnAdderStream.html +++ b/docs/api/StreamExtended.Network.ServerHelloAlpnAdderStream.html @@ -224,12 +224,12 @@

              Constructors -

              ServerHelloAlpnAdderStream(CustomBufferedStream)

              +

              ServerHelloAlpnAdderStream(CustomBufferedStream, IBufferPool)

              Declaration
              -
              public ServerHelloAlpnAdderStream(CustomBufferedStream stream)
              +
              public ServerHelloAlpnAdderStream(CustomBufferedStream stream, IBufferPool bufferPool)
              Parameters
              @@ -246,6 +246,11 @@
              Parameters
              + + + + +
              stream
              IBufferPoolbufferPool

              Properties diff --git a/docs/api/StreamExtended.Network.html b/docs/api/StreamExtended.Network.html index c993c36..86f140a 100644 --- a/docs/api/StreamExtended.Network.html +++ b/docs/api/StreamExtended.Network.html @@ -87,16 +87,26 @@

              Classes

              -

              ClientHelloAlpnAdderStream

              -
              -

              CustomBufferedPeekStream

              -
              +

              CopyStream

              +

              Copies the source stream to destination stream. +But this let users to peek and read the copying process.

              +

              CustomBufferedStream

              A custom network stream inherited from stream -with an underlying buffer

              +with an underlying read buffer supporting both read/write +of UTF-8 encoded string or raw bytes asynchronously from last read position.

              +
              +

              DataEventArgs

              +

              Wraps the data sent/received event argument.

              +
              +

              Interfaces +

              +

              ICustomStreamReader

              +

              This concrete implemetation of interface acts as the source stream for CopyStream class.

              +
              +

              ICustomStreamWriter

              +

              A concrete implementation of this interface is required when calling CopyStream.

              -

              ServerHelloAlpnAdderStream

              -
              diff --git a/docs/api/StreamExtended.ServerHelloInfo.html b/docs/api/StreamExtended.ServerHelloInfo.html index a3e65d9..dc9e013 100644 --- a/docs/api/StreamExtended.ServerHelloInfo.html +++ b/docs/api/StreamExtended.ServerHelloInfo.html @@ -83,7 +83,8 @@

              Class ServerHelloInfo

              -
              +

              Wraps up the server SSL hello information.

              +
              Inheritance
              diff --git a/docs/api/StreamExtended.SslTools.html b/docs/api/StreamExtended.SslTools.html index 910fb4f..72cddf7 100644 --- a/docs/api/StreamExtended.SslTools.html +++ b/docs/api/StreamExtended.SslTools.html @@ -83,7 +83,8 @@

              Class SslTools

              -
              +

              Use this class to peek SSL client/server hello information.

              +
              Inheritance
              @@ -125,12 +126,13 @@

              Methods -

              IsClientHello(CustomBufferedStream, CancellationToken)

              -
              +

              IsClientHello(CustomBufferedStream, IBufferPool, CancellationToken)

              +

              Is the given stream starts with an SSL client hello?

              +
              Declaration
              -
              public static Task<bool> IsClientHello(CustomBufferedStream stream, CancellationToken cancellationToken)
              +
              public static Task<bool> IsClientHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken)
              Parameters
              @@ -147,6 +149,11 @@
              Parameters
              + + + + + @@ -172,12 +179,13 @@
              Returns
              -

              IsServerHello(CustomBufferedStream, CancellationToken)

              -
              +

              IsServerHello(CustomBufferedStream, IBufferPool, CancellationToken)

              +

              Is the given stream starts with an SSL client hello?

              +
              Declaration
              -
              public static Task<bool> IsServerHello(CustomBufferedStream stream, CancellationToken cancellationToken)
              +
              public static Task<bool> IsServerHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken)
              Parameters
              stream
              IBufferPoolbufferPool
              CancellationToken cancellationToken
              @@ -194,6 +202,11 @@
              Parameters
              + + + + + @@ -219,12 +232,13 @@
              Returns
              -

              PeekClientHello(CustomBufferedStream, CancellationToken)

              -
              +

              PeekClientHello(CustomBufferedStream, IBufferPool, CancellationToken)

              +

              Peek the SSL client hello information.

              +
              Declaration
              -
              public static Task<ClientHelloInfo> PeekClientHello(CustomBufferedStream clientStream, CancellationToken cancellationToken = default(CancellationToken))
              +
              public static Task<ClientHelloInfo> PeekClientHello(CustomBufferedStream clientStream, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken))
              Parameters
              stream
              IBufferPoolbufferPool
              CancellationToken cancellationToken
              @@ -241,6 +255,11 @@
              Parameters
              + + + + + @@ -266,12 +285,13 @@
              Returns
              -

              PeekServerHello(CustomBufferedStream, CancellationToken)

              -
              +

              PeekServerHello(CustomBufferedStream, IBufferPool, CancellationToken)

              +

              Peek the SSL client hello information.

              +
              Declaration
              -
              public static Task<ServerHelloInfo> PeekServerHello(CustomBufferedStream serverStream, CancellationToken cancellationToken = default(CancellationToken))
              +
              public static Task<ServerHelloInfo> PeekServerHello(CustomBufferedStream serverStream, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken))
              Parameters
              clientStream
              IBufferPoolbufferPool
              CancellationToken cancellationToken
              @@ -288,6 +308,11 @@
              Parameters
              + + + + + diff --git a/docs/api/StreamExtended.html b/docs/api/StreamExtended.html index 2656dbf..0c563f7 100644 --- a/docs/api/StreamExtended.html +++ b/docs/api/StreamExtended.html @@ -88,11 +88,25 @@

              Namespace S

              Classes

              ClientHelloInfo

              -
              +

              Wraps up the client SSL hello information.

              +
              +

              DefaultBufferPool

              +

              A concrete IBufferPool implementation using a thread-safe stack. +Works well when all consumers ask for buffers with the same size. +If your application would use size buffers consider implementing IBufferPool using System.Buffers library from Microsoft.

              +

              ServerHelloInfo

              -
              +

              Wraps up the server SSL hello information.

              +

              SslTools

              -
              +

              Use this class to peek SSL client/server hello information.

              +
              +

              Interfaces +

              +

              IBufferPool

              +

              Use this interface to implement custom buffer pool. +To use the default buffer pool implementation use DefaultBufferPool class.

              +
              diff --git a/docs/api/toc.html b/docs/api/toc.html index 58921e1..70245bc 100644 --- a/docs/api/toc.html +++ b/docs/api/toc.html @@ -20,19 +20,16 @@ ClientHelloInfo
            • - ServerHelloInfo + DefaultBufferPool
            • - SslTools + IBufferPool
            • - -
            • - - StreamExtended.Helpers - -
            • @@ -50,16 +47,19 @@
            • diff --git a/docs/index.json b/docs/index.json index b871abf..b8e304f 100644 --- a/docs/index.json +++ b/docs/index.json @@ -2,66 +2,71 @@ "api/StreamExtended.ClientHelloInfo.html": { "href": "api/StreamExtended.ClientHelloInfo.html", "title": "Class ClientHelloInfo | Stream Extended", - "keywords": "Class ClientHelloInfo Inheritance Object ClientHelloInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class ClientHelloInfo Properties Ciphers Declaration public int[] Ciphers { get; set; } Property Value Type Description Int32 [] CompressionData Declaration public byte[] CompressionData { get; set; } Property Value Type Description Byte [] Extensions Declaration public Dictionary Extensions { get; set; } Property Value Type Description Dictionary < String , SslExtension > HandshakeVersion Declaration public int HandshakeVersion { get; set; } Property Value Type Description Int32 MajorVersion Declaration public int MajorVersion { get; set; } Property Value Type Description Int32 MinorVersion Declaration public int MinorVersion { get; set; } Property Value Type Description Int32 Random Declaration public byte[] Random { get; set; } Property Value Type Description Byte [] SessionId Declaration public byte[] SessionId { get; set; } Property Value Type Description Byte [] Time Declaration public DateTime Time { get; } Property Value Type Description DateTime Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString()" + "keywords": "Class ClientHelloInfo Wraps up the client SSL hello information. Inheritance Object ClientHelloInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class ClientHelloInfo Properties Ciphers Declaration public int[] Ciphers { get; set; } Property Value Type Description Int32 [] CompressionData Declaration public byte[] CompressionData { get; set; } Property Value Type Description Byte [] Extensions Declaration public Dictionary Extensions { get; set; } Property Value Type Description Dictionary < String , SslExtension > HandshakeVersion Declaration public int HandshakeVersion { get; set; } Property Value Type Description Int32 MajorVersion Declaration public int MajorVersion { get; set; } Property Value Type Description Int32 MinorVersion Declaration public int MinorVersion { get; set; } Property Value Type Description Int32 Random Declaration public byte[] Random { get; set; } Property Value Type Description Byte [] SessionId Declaration public byte[] SessionId { get; set; } Property Value Type Description Byte [] Time Declaration public DateTime Time { get; } Property Value Type Description DateTime Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString()" }, - "api/StreamExtended.Helpers.BufferPool.html": { - "href": "api/StreamExtended.Helpers.BufferPool.html", - "title": "Class BufferPool | Stream Extended", - "keywords": "Class BufferPool Inheritance Object BufferPool Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Helpers Assembly : StreamExtended.dll Syntax public static class BufferPool Methods GetBuffer(Int32) Gets a buffer. Declaration public static byte[] GetBuffer(int bufferSize) Parameters Type Name Description Int32 bufferSize Size of the buffer. Returns Type Description Byte [] ReturnBuffer(Byte[]) Returns the buffer. Declaration public static void ReturnBuffer(byte[] buffer) Parameters Type Name Description Byte [] buffer The buffer." - }, - "api/StreamExtended.Helpers.html": { - "href": "api/StreamExtended.Helpers.html", - "title": "Namespace StreamExtended.Helpers | Stream Extended", - "keywords": "Namespace StreamExtended.Helpers Classes BufferPool" + "api/StreamExtended.DefaultBufferPool.html": { + "href": "api/StreamExtended.DefaultBufferPool.html", + "title": "Class DefaultBufferPool | Stream Extended", + "keywords": "Class DefaultBufferPool A concrete IBufferPool implementation using a thread-safe stack. Works well when all consumers ask for buffers with the same size. If your application would use size buffers consider implementing IBufferPool using System.Buffers library from Microsoft. Inheritance Object DefaultBufferPool Implements IBufferPool IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class DefaultBufferPool : IBufferPool, IDisposable Methods Dispose() Declaration public void Dispose() GetBuffer(Int32) Gets a buffer. Declaration public byte[] GetBuffer(int bufferSize) Parameters Type Name Description Int32 bufferSize Size of the buffer. Returns Type Description Byte [] ReturnBuffer(Byte[]) Returns the buffer. Declaration public void ReturnBuffer(byte[] buffer) Parameters Type Name Description Byte [] buffer The buffer. Implements IBufferPool System.IDisposable" }, "api/StreamExtended.html": { "href": "api/StreamExtended.html", "title": "Namespace StreamExtended | Stream Extended", - "keywords": "Namespace StreamExtended Classes ClientHelloInfo ServerHelloInfo SslTools" + "keywords": "Namespace StreamExtended Classes ClientHelloInfo Wraps up the client SSL hello information. DefaultBufferPool A concrete IBufferPool implementation using a thread-safe stack. Works well when all consumers ask for buffers with the same size. If your application would use size buffers consider implementing IBufferPool using System.Buffers library from Microsoft. ServerHelloInfo Wraps up the server SSL hello information. SslTools Use this class to peek SSL client/server hello information. Interfaces IBufferPool Use this interface to implement custom buffer pool. To use the default buffer pool implementation use DefaultBufferPool class." + }, + "api/StreamExtended.IBufferPool.html": { + "href": "api/StreamExtended.IBufferPool.html", + "title": "Interface IBufferPool | Stream Extended", + "keywords": "Interface IBufferPool Use this interface to implement custom buffer pool. To use the default buffer pool implementation use DefaultBufferPool class. Inherited Members IDisposable.Dispose() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public interface IBufferPool : IDisposable Methods GetBuffer(Int32) Declaration byte[] GetBuffer(int bufferSize) Parameters Type Name Description Int32 bufferSize Returns Type Description Byte [] ReturnBuffer(Byte[]) Declaration void ReturnBuffer(byte[] buffer) Parameters Type Name Description Byte [] buffer" }, "api/StreamExtended.Models.html": { "href": "api/StreamExtended.Models.html", "title": "Namespace StreamExtended.Models | Stream Extended", - "keywords": "Namespace StreamExtended.Models Classes SslExtension" + "keywords": "Namespace StreamExtended.Models Classes SslExtension The SSL extension information." }, "api/StreamExtended.Models.SslExtension.html": { "href": "api/StreamExtended.Models.SslExtension.html", "title": "Class SslExtension | Stream Extended", - "keywords": "Class SslExtension Inheritance Object SslExtension Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Models Assembly : StreamExtended.dll Syntax public class SslExtension Constructors SslExtension(Int32, String, String, Int32) Initializes a new instance of the SslExtension class. Declaration public SslExtension(int value, string name, string data, int position) Parameters Type Name Description Int32 value The value. String name The name. String data The data. Int32 position The position. Properties Data Gets the data. Declaration public string Data { get; } Property Value Type Description String The data. Name Gets the name. Declaration public string Name { get; } Property Value Type Description String The name. Position Gets the position. Declaration public int Position { get; } Property Value Type Description Int32 The position. Value Gets the value. Declaration public int Value { get; } Property Value Type Description Int32 The value." - }, - "api/StreamExtended.Network.ClientHelloAlpnAdderStream.html": { - "href": "api/StreamExtended.Network.ClientHelloAlpnAdderStream.html", - "title": "Class ClientHelloAlpnAdderStream | Stream Extended", - "keywords": "Class ClientHelloAlpnAdderStream Inheritance Object MarshalByRefObject Stream ClientHelloAlpnAdderStream Implements IDisposable Inherited Members Stream.Null Stream.CopyToAsync(Stream) Stream.CopyToAsync(Stream, Int32) Stream.CopyToAsync(Stream, Int32, CancellationToken) Stream.CopyTo(Stream) Stream.CopyTo(Stream, Int32) Stream.Close() Stream.Dispose() Stream.Dispose(Boolean) Stream.FlushAsync() Stream.FlushAsync(CancellationToken) Stream.CreateWaitHandle() Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndRead(IAsyncResult) Stream.ReadAsync(Byte[], Int32, Int32) Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndWrite(IAsyncResult) Stream.WriteAsync(Byte[], Int32, Int32) Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken) Stream.ReadByte() Stream.WriteByte(Byte) Stream.Synchronized(Stream) Stream.ObjectInvariant() Stream.CanTimeout Stream.ReadTimeout Stream.WriteTimeout MarshalByRefObject.MemberwiseClone(Boolean) MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.CreateObjRef(Type) Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class ClientHelloAlpnAdderStream : Stream, IDisposable Constructors ClientHelloAlpnAdderStream(CustomBufferedStream) Declaration public ClientHelloAlpnAdderStream(CustomBufferedStream stream) Parameters Type Name Description CustomBufferedStream stream Properties CanRead Declaration public override bool CanRead { get; } Property Value Type Description Boolean Overrides Stream.CanRead CanSeek Declaration public override bool CanSeek { get; } Property Value Type Description Boolean Overrides Stream.CanSeek CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Overrides Stream.CanWrite Length Declaration public override long Length { get; } Property Value Type Description Int64 Overrides Stream.Length Position Declaration public override long Position { get; set; } Property Value Type Description Int64 Overrides Stream.Position Methods Flush() Declaration public override void Flush() Overrides Stream.Flush() Read(Byte[], Int32, Int32) Declaration public override int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Returns Type Description Int32 Overrides Stream.Read(Byte[], Int32, Int32) Seek(Int64, SeekOrigin) Declaration public override long Seek(long offset, SeekOrigin origin) Parameters Type Name Description Int64 offset SeekOrigin origin Returns Type Description Int64 Overrides Stream.Seek(Int64, SeekOrigin) SetLength(Int64) Declaration public override void SetLength(long value) Parameters Type Name Description Int64 value Overrides Stream.SetLength(Int64) Write(Byte[], Int32, Int32) Declaration public override void Write(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Overrides Stream.Write(Byte[], Int32, Int32) Implements System.IDisposable" + "keywords": "Class SslExtension The SSL extension information. Inheritance Object SslExtension Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Models Assembly : StreamExtended.dll Syntax public class SslExtension Constructors SslExtension(Int32, String, String, Int32) Initializes a new instance of the SslExtension class. Declaration public SslExtension(int value, string name, string data, int position) Parameters Type Name Description Int32 value The value. String name The name. String data The data. Int32 position The position. Properties Data Gets the data. Declaration public string Data { get; } Property Value Type Description String The data. Name Gets the name. Declaration public string Name { get; } Property Value Type Description String The name. Position Gets the position. Declaration public int Position { get; } Property Value Type Description Int32 The position. Value Gets the value. Declaration public int Value { get; } Property Value Type Description Int32 The value." }, - "api/StreamExtended.Network.CustomBufferedPeekStream.html": { - "href": "api/StreamExtended.Network.CustomBufferedPeekStream.html", - "title": "Class CustomBufferedPeekStream | Stream Extended", - "keywords": "Class CustomBufferedPeekStream Inheritance Object CustomBufferedPeekStream Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class CustomBufferedPeekStream : ICustomStreamReader Properties Available Gets the available data size. Declaration public int Available { get; } Property Value Type Description Int32" + "api/StreamExtended.Network.CopyStream.html": { + "href": "api/StreamExtended.Network.CopyStream.html", + "title": "Class CopyStream | Stream Extended", + "keywords": "Class CopyStream Copies the source stream to destination stream. But this let users to peek and read the copying process. Inheritance Object CopyStream Implements ICustomStreamReader IDisposable Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class CopyStream : ICustomStreamReader, IDisposable Constructors CopyStream(ICustomStreamReader, ICustomStreamWriter, IBufferPool, Int32) Declaration public CopyStream(ICustomStreamReader reader, ICustomStreamWriter writer, IBufferPool bufferPool, int bufferSize) Parameters Type Name Description ICustomStreamReader reader ICustomStreamWriter writer IBufferPool bufferPool Int32 bufferSize Properties Available Declaration public int Available { get; } Property Value Type Description Int32 BufferSize Declaration public int BufferSize { get; } Property Value Type Description Int32 DataAvailable Declaration public bool DataAvailable { get; } Property Value Type Description Boolean ReadBytes Declaration public long ReadBytes { get; } Property Value Type Description Int64 Methods Dispose() Declaration public void Dispose() FillBufferAsync(CancellationToken) Declaration public Task FillBufferAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < Boolean > Flush() Declaration public void Flush() FlushAsync(CancellationToken) Declaration public Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task PeekByteAsync(Int32, CancellationToken) Declaration public Task PeekByteAsync(int index, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Int32 index CancellationToken cancellationToken Returns Type Description Task < Int32 > PeekByteFromBuffer(Int32) Declaration public byte PeekByteFromBuffer(int index) Parameters Type Name Description Int32 index Returns Type Description Byte Read(Byte[], Int32, Int32) Declaration public int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Returns Type Description Int32 ReadAsync(Byte[], Int32, Int32, CancellationToken) Declaration public Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count CancellationToken cancellationToken Returns Type Description Task < Int32 > ReadByteFromBuffer() Declaration public byte ReadByteFromBuffer() Returns Type Description Byte ReadLineAsync(CancellationToken) Declaration public Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < String > Implements ICustomStreamReader System.IDisposable" }, "api/StreamExtended.Network.CustomBufferedStream.html": { "href": "api/StreamExtended.Network.CustomBufferedStream.html", "title": "Class CustomBufferedStream | Stream Extended", - "keywords": "Class CustomBufferedStream A custom network stream inherited from stream with an underlying buffer Inheritance Object MarshalByRefObject Stream CustomBufferedStream Implements IDisposable ICustomStreamReader Inherited Members Stream.Null Stream.CopyToAsync(Stream) Stream.CopyToAsync(Stream, Int32) Stream.CopyTo(Stream) Stream.CopyTo(Stream, Int32) Stream.Close() Stream.Dispose() Stream.FlushAsync() Stream.CreateWaitHandle() Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndRead(IAsyncResult) Stream.ReadAsync(Byte[], Int32, Int32) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndWrite(IAsyncResult) Stream.WriteAsync(Byte[], Int32, Int32) Stream.Synchronized(Stream) Stream.ObjectInvariant() MarshalByRefObject.MemberwiseClone(Boolean) MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.CreateObjRef(Type) Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class CustomBufferedStream : Stream, IDisposable, ICustomStreamReader Constructors CustomBufferedStream(Stream, Int32, Boolean) Initializes a new instance of the CustomBufferedStream class. Declaration public CustomBufferedStream(Stream baseStream, int bufferSize, bool leaveOpen = false) Parameters Type Name Description Stream baseStream The base stream. Int32 bufferSize Size of the buffer. Boolean leaveOpen true to leave the stream open after disposing the CustomBufferedStream object; otherwise, false . Properties Available Gets the available data size. Declaration public int Available { get; } Property Value Type Description Int32 BufferSize Declaration public int BufferSize { get; } Property Value Type Description Int32 CanRead When overridden in a derived class, gets a value indicating whether the current stream supports reading. Declaration public override bool CanRead { get; } Property Value Type Description Boolean Overrides Stream.CanRead CanSeek When overridden in a derived class, gets a value indicating whether the current stream supports seeking. Declaration public override bool CanSeek { get; } Property Value Type Description Boolean Overrides Stream.CanSeek CanTimeout Gets a value that determines whether the current stream can time out. Declaration public override bool CanTimeout { get; } Property Value Type Description Boolean Overrides Stream.CanTimeout CanWrite When overridden in a derived class, gets a value indicating whether the current stream supports writing. Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Overrides Stream.CanWrite DataAvailable Gets a value indicating whether data is available. Declaration public bool DataAvailable { get; } Property Value Type Description Boolean Length When overridden in a derived class, gets the length in bytes of the stream. Declaration public override long Length { get; } Property Value Type Description Int64 Overrides Stream.Length Position When overridden in a derived class, gets or sets the position within the current stream. Declaration public override long Position { get; set; } Property Value Type Description Int64 Overrides Stream.Position ReadTimeout Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out. Declaration public override int ReadTimeout { get; set; } Property Value Type Description Int32 Overrides Stream.ReadTimeout WriteTimeout Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out. Declaration public override int WriteTimeout { get; set; } Property Value Type Description Int32 Overrides Stream.WriteTimeout Methods CopyToAsync(Stream, Int32, CancellationToken) Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token. Declaration public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Stream destination The stream to which the contents of the current stream will be copied. Int32 bufferSize The size, in bytes, of the buffer. This value must be greater than zero. The default size is 81920. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous copy operation. Overrides Stream.CopyToAsync(Stream, Int32, CancellationToken) Dispose(Boolean) Releases the unmanaged resources used by the Stream and optionally releases the managed resources. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Stream.Dispose(Boolean) FillBuffer() Fills the buffer. Declaration public bool FillBuffer() Returns Type Description Boolean FillBufferAsync(CancellationToken) Fills the buffer asynchronous. Declaration public Task FillBufferAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task < Boolean > Flush() When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device. Declaration public override void Flush() Overrides Stream.Flush() FlushAsync(CancellationToken) Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests. Declaration public override Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous flush operation. Overrides Stream.FlushAsync(CancellationToken) OnDataRead(Byte[], Int32, Int32) Declaration protected virtual void OnDataRead(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count OnDataWrite(Byte[], Int32, Int32) Declaration protected virtual void OnDataWrite(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count PeekByteAsync(Int32, CancellationToken) Peeks a byte asynchronous. Declaration public Task PeekByteAsync(int index, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Int32 index The index. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < Int32 > PeekByteFromBuffer(Int32) Peeks a byte from buffer. Declaration public byte PeekByteFromBuffer(int index) Parameters Type Name Description Int32 index The index. Returns Type Description Byte Exceptions Type Condition System.Exception Index is out of buffer size Read(Byte[], Int32, Int32) When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. Declaration public override int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and ( offset + count - 1) replaced by the bytes read from the current source. Int32 offset The zero-based byte offset in buffer at which to begin storing the data read from the current stream. Int32 count The maximum number of bytes to be read from the current stream. Returns Type Description Int32 The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. Overrides Stream.Read(Byte[], Int32, Int32) ReadAndIgnoreAllLinesAsync(CancellationToken) Read until the last new line, ignores the result Declaration public Task ReadAndIgnoreAllLinesAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task ReadAsync(Byte[], Int32, Int32, CancellationToken) Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests. Declaration public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer The buffer to write the data into. Int32 offset The byte offset in buffer at which to begin writing data from the stream. Int32 count The maximum number of bytes to read. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task < Int32 > A task that represents the asynchronous read operation. The value of the parameter contains the total number of bytes read into the buffer. The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached. Overrides Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadByte() Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream. Declaration public override int ReadByte() Returns Type Description Int32 The unsigned byte cast to an Int32, or -1 if at the end of the stream. Overrides Stream.ReadByte() ReadByteFromBuffer() Reads a byte from buffer. Declaration public byte ReadByteFromBuffer() Returns Type Description Byte Exceptions Type Condition System.Exception Buffer is empty ReadLineAsync(CancellationToken) Read a line from the byte stream Declaration public Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < String > Seek(Int64, SeekOrigin) When overridden in a derived class, sets the position within the current stream. Declaration public override long Seek(long offset, SeekOrigin origin) Parameters Type Name Description Int64 offset A byte offset relative to the origin parameter. SeekOrigin origin A value of type SeekOrigin indicating the reference point used to obtain the new position. Returns Type Description Int64 The new position within the current stream. Overrides Stream.Seek(Int64, SeekOrigin) SetLength(Int64) When overridden in a derived class, sets the length of the current stream. Declaration public override void SetLength(long value) Parameters Type Name Description Int64 value The desired length of the current stream in bytes. Overrides Stream.SetLength(Int64) Write(Byte[], Int32, Int32) When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. Declaration public override void Write(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer An array of bytes. This method copies count bytes from buffer to the current stream. Int32 offset The zero-based byte offset in buffer at which to begin copying bytes to the current stream. Int32 count The number of bytes to be written to the current stream. Overrides Stream.Write(Byte[], Int32, Int32) WriteAsync(Byte[], Int32, Int32, CancellationToken) Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests. Declaration public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer The buffer to write data from. Int32 offset The zero-based byte offset in buffer from which to begin copying bytes to the stream. Int32 count The maximum number of bytes to write. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous write operation. Overrides Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteByte(Byte) Writes a byte to the current position in the stream and advances the position within the stream by one byte. Declaration public override void WriteByte(byte value) Parameters Type Name Description Byte value The byte to write to the stream. Overrides Stream.WriteByte(Byte) Events DataRead Declaration public event EventHandler DataRead Event Type Type Description EventHandler < DataEventArgs > DataWrite Declaration public event EventHandler DataWrite Event Type Type Description EventHandler < DataEventArgs > Implements System.IDisposable ICustomStreamReader See Also Stream" + "keywords": "Class CustomBufferedStream A custom network stream inherited from stream with an underlying read buffer supporting both read/write of UTF-8 encoded string or raw bytes asynchronously from last read position. Inheritance Object MarshalByRefObject Stream CustomBufferedStream Implements IDisposable ICustomStreamReader Inherited Members Stream.Null Stream.CopyToAsync(Stream) Stream.CopyToAsync(Stream, Int32) Stream.CopyTo(Stream) Stream.CopyTo(Stream, Int32) Stream.Close() Stream.Dispose() Stream.FlushAsync() Stream.CreateWaitHandle() Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndRead(IAsyncResult) Stream.ReadAsync(Byte[], Int32, Int32) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndWrite(IAsyncResult) Stream.WriteAsync(Byte[], Int32, Int32) Stream.Synchronized(Stream) Stream.ObjectInvariant() MarshalByRefObject.MemberwiseClone(Boolean) MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.CreateObjRef(Type) Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class CustomBufferedStream : Stream, IDisposable, ICustomStreamReader Constructors CustomBufferedStream(Stream, IBufferPool, Int32, Boolean) Initializes a new instance of the CustomBufferedStream class. Declaration public CustomBufferedStream(Stream baseStream, IBufferPool bufferPool, int bufferSize, bool leaveOpen = false) Parameters Type Name Description Stream baseStream The base stream. IBufferPool bufferPool Bufferpool. Int32 bufferSize Size of the buffer. Boolean leaveOpen true to leave the stream open after disposing the CustomBufferedStream object; otherwise, false . Properties Available Gets the available data size. Declaration public int Available { get; } Property Value Type Description Int32 BufferSize Declaration public int BufferSize { get; } Property Value Type Description Int32 CanRead When overridden in a derived class, gets a value indicating whether the current stream supports reading. Declaration public override bool CanRead { get; } Property Value Type Description Boolean Overrides Stream.CanRead CanSeek When overridden in a derived class, gets a value indicating whether the current stream supports seeking. Declaration public override bool CanSeek { get; } Property Value Type Description Boolean Overrides Stream.CanSeek CanTimeout Gets a value that determines whether the current stream can time out. Declaration public override bool CanTimeout { get; } Property Value Type Description Boolean Overrides Stream.CanTimeout CanWrite When overridden in a derived class, gets a value indicating whether the current stream supports writing. Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Overrides Stream.CanWrite DataAvailable Gets a value indicating whether data is available. Declaration public bool DataAvailable { get; } Property Value Type Description Boolean Length When overridden in a derived class, gets the length in bytes of the stream. Declaration public override long Length { get; } Property Value Type Description Int64 Overrides Stream.Length Position When overridden in a derived class, gets or sets the position within the current stream. Declaration public override long Position { get; set; } Property Value Type Description Int64 Overrides Stream.Position ReadTimeout Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out. Declaration public override int ReadTimeout { get; set; } Property Value Type Description Int32 Overrides Stream.ReadTimeout WriteTimeout Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out. Declaration public override int WriteTimeout { get; set; } Property Value Type Description Int32 Overrides Stream.WriteTimeout Methods CopyToAsync(Stream, Int32, CancellationToken) Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token. Declaration public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Stream destination The stream to which the contents of the current stream will be copied. Int32 bufferSize The size, in bytes, of the buffer. This value must be greater than zero. The default size is 81920. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous copy operation. Overrides Stream.CopyToAsync(Stream, Int32, CancellationToken) Dispose(Boolean) Releases the unmanaged resources used by the Stream and optionally releases the managed resources. Declaration protected override void Dispose(bool disposing) Parameters Type Name Description Boolean disposing true to release both managed and unmanaged resources; false to release only unmanaged resources. Overrides Stream.Dispose(Boolean) FillBuffer() Fills the buffer. Declaration public bool FillBuffer() Returns Type Description Boolean FillBufferAsync(CancellationToken) Fills the buffer asynchronous. Declaration public Task FillBufferAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The cancellation token. Returns Type Description Task < Boolean > Flush() When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device. Declaration public override void Flush() Overrides Stream.Flush() FlushAsync(CancellationToken) Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests. Declaration public override Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous flush operation. Overrides Stream.FlushAsync(CancellationToken) OnDataRead(Byte[], Int32, Int32) Declaration protected virtual void OnDataRead(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count OnDataWrite(Byte[], Int32, Int32) Declaration protected virtual void OnDataWrite(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count PeekByteAsync(Int32, CancellationToken) Peeks a byte asynchronous. Declaration public Task PeekByteAsync(int index, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Int32 index The index. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < Int32 > PeekByteFromBuffer(Int32) Peeks a byte from buffer. Declaration public byte PeekByteFromBuffer(int index) Parameters Type Name Description Int32 index The index. Returns Type Description Byte Exceptions Type Condition System.Exception Index is out of buffer size Read(Byte[], Int32, Int32) When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. Declaration public override int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and ( offset + count - 1) replaced by the bytes read from the current source. Int32 offset The zero-based byte offset in buffer at which to begin storing the data read from the current stream. Int32 count The maximum number of bytes to be read from the current stream. Returns Type Description Int32 The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. Overrides Stream.Read(Byte[], Int32, Int32) ReadAndIgnoreAllLinesAsync(CancellationToken) Read until the last new line, ignores the result Declaration public Task ReadAndIgnoreAllLinesAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task ReadAsync(Byte[], Int32, Int32, CancellationToken) Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests. Declaration public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer The buffer to write the data into. Int32 offset The byte offset in buffer at which to begin writing data from the stream. Int32 count The maximum number of bytes to read. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task < Int32 > A task that represents the asynchronous read operation. The value of the parameter contains the total number of bytes read into the buffer. The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached. Overrides Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadByte() Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream. Declaration public override int ReadByte() Returns Type Description Int32 The unsigned byte cast to an Int32, or -1 if at the end of the stream. Overrides Stream.ReadByte() ReadByteFromBuffer() Reads a byte from buffer. Declaration public byte ReadByteFromBuffer() Returns Type Description Byte Exceptions Type Condition System.Exception Buffer is empty ReadLineAsync(CancellationToken) Read a line from the byte stream Declaration public Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < String > Seek(Int64, SeekOrigin) When overridden in a derived class, sets the position within the current stream. Declaration public override long Seek(long offset, SeekOrigin origin) Parameters Type Name Description Int64 offset A byte offset relative to the origin parameter. SeekOrigin origin A value of type SeekOrigin indicating the reference point used to obtain the new position. Returns Type Description Int64 The new position within the current stream. Overrides Stream.Seek(Int64, SeekOrigin) SetLength(Int64) When overridden in a derived class, sets the length of the current stream. Declaration public override void SetLength(long value) Parameters Type Name Description Int64 value The desired length of the current stream in bytes. Overrides Stream.SetLength(Int64) Write(Byte[], Int32, Int32) When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. Declaration public override void Write(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer An array of bytes. This method copies count bytes from buffer to the current stream. Int32 offset The zero-based byte offset in buffer at which to begin copying bytes to the current stream. Int32 count The number of bytes to be written to the current stream. Overrides Stream.Write(Byte[], Int32, Int32) WriteAsync(Byte[], Int32, Int32, CancellationToken) Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests. Declaration public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer The buffer to write data from. Int32 offset The zero-based byte offset in buffer from which to begin copying bytes to the stream. Int32 count The maximum number of bytes to write. CancellationToken cancellationToken The token to monitor for cancellation requests. The default value is System.Threading.CancellationToken.None . Returns Type Description Task A task that represents the asynchronous write operation. Overrides Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteByte(Byte) Writes a byte to the current position in the stream and advances the position within the stream by one byte. Declaration public override void WriteByte(byte value) Parameters Type Name Description Byte value The byte to write to the stream. Overrides Stream.WriteByte(Byte) Events DataRead Declaration public event EventHandler DataRead Event Type Type Description EventHandler < DataEventArgs > DataWrite Declaration public event EventHandler DataWrite Event Type Type Description EventHandler < DataEventArgs > Implements System.IDisposable ICustomStreamReader See Also Stream" + }, + "api/StreamExtended.Network.DataEventArgs.html": { + "href": "api/StreamExtended.Network.DataEventArgs.html", + "title": "Class DataEventArgs | Stream Extended", + "keywords": "Class DataEventArgs Wraps the data sent/received event argument. Inheritance Object EventArgs DataEventArgs Inherited Members EventArgs.Empty Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class DataEventArgs : EventArgs Constructors DataEventArgs(Byte[], Int32, Int32) Declaration public DataEventArgs(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Properties Buffer The buffer with data. Declaration public byte[] Buffer { get; } Property Value Type Description Byte [] Count Length from offset in buffer with valid data. Declaration public int Count { get; } Property Value Type Description Int32 Offset Offset in buffer from which valid data begins. Declaration public int Offset { get; } Property Value Type Description Int32" }, "api/StreamExtended.Network.html": { "href": "api/StreamExtended.Network.html", "title": "Namespace StreamExtended.Network | Stream Extended", - "keywords": "Namespace StreamExtended.Network Classes ClientHelloAlpnAdderStream CustomBufferedPeekStream CustomBufferedStream A custom network stream inherited from stream with an underlying buffer ServerHelloAlpnAdderStream" + "keywords": "Namespace StreamExtended.Network Classes CopyStream Copies the source stream to destination stream. But this let users to peek and read the copying process. CustomBufferedStream A custom network stream inherited from stream with an underlying read buffer supporting both read/write of UTF-8 encoded string or raw bytes asynchronously from last read position. DataEventArgs Wraps the data sent/received event argument. Interfaces ICustomStreamReader This concrete implemetation of interface acts as the source stream for CopyStream class. ICustomStreamWriter A concrete implementation of this interface is required when calling CopyStream." + }, + "api/StreamExtended.Network.ICustomStreamReader.html": { + "href": "api/StreamExtended.Network.ICustomStreamReader.html", + "title": "Interface ICustomStreamReader | Stream Extended", + "keywords": "Interface ICustomStreamReader This concrete implemetation of interface acts as the source stream for CopyStream class. Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public interface ICustomStreamReader Properties Available Declaration int Available { get; } Property Value Type Description Int32 BufferSize Declaration int BufferSize { get; } Property Value Type Description Int32 DataAvailable Declaration bool DataAvailable { get; } Property Value Type Description Boolean Methods FillBufferAsync(CancellationToken) Fills the buffer asynchronous. Declaration Task FillBufferAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < Boolean > PeekByteAsync(Int32, CancellationToken) Peeks a byte asynchronous. Declaration Task PeekByteAsync(int index, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Int32 index The index. CancellationToken cancellationToken The cancellation token. Returns Type Description Task < Int32 > PeekByteFromBuffer(Int32) Peeks a byte from buffer. Declaration byte PeekByteFromBuffer(int index) Parameters Type Name Description Int32 index The index. Returns Type Description Byte Exceptions Type Condition System.Exception Index is out of buffer size Read(Byte[], Int32, Int32) When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. Declaration int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and ( offset + count - 1) replaced by the bytes read from the current source. Int32 offset The zero-based byte offset in buffer at which to begin storing the data read from the current stream. Int32 count The maximum number of bytes to be read from the current stream. Returns Type Description Int32 The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. ReadAsync(Byte[], Int32, Int32, CancellationToken) Read the specified number (or less) of raw bytes from the base stream to the given buffer to the specified offset Declaration Task ReadAsync(byte[] buffer, int offset, int bytesToRead, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description Byte [] buffer Int32 offset Int32 bytesToRead CancellationToken cancellationToken Returns Type Description Task < Int32 > The number of bytes read ReadByteFromBuffer() Declaration byte ReadByteFromBuffer() Returns Type Description Byte ReadLineAsync(CancellationToken) Read a line from the byte stream Declaration Task ReadLineAsync(CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CancellationToken cancellationToken Returns Type Description Task < String >" }, - "api/StreamExtended.Network.ServerHelloAlpnAdderStream.html": { - "href": "api/StreamExtended.Network.ServerHelloAlpnAdderStream.html", - "title": "Class ServerHelloAlpnAdderStream | Stream Extended", - "keywords": "Class ServerHelloAlpnAdderStream Inheritance Object MarshalByRefObject Stream ServerHelloAlpnAdderStream Implements IDisposable Inherited Members Stream.Null Stream.CopyToAsync(Stream) Stream.CopyToAsync(Stream, Int32) Stream.CopyToAsync(Stream, Int32, CancellationToken) Stream.CopyTo(Stream) Stream.CopyTo(Stream, Int32) Stream.Close() Stream.Dispose() Stream.Dispose(Boolean) Stream.FlushAsync() Stream.FlushAsync(CancellationToken) Stream.CreateWaitHandle() Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndRead(IAsyncResult) Stream.ReadAsync(Byte[], Int32, Int32) Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.EndWrite(IAsyncResult) Stream.WriteAsync(Byte[], Int32, Int32) Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken) Stream.ReadByte() Stream.WriteByte(Byte) Stream.Synchronized(Stream) Stream.ObjectInvariant() Stream.CanTimeout Stream.ReadTimeout Stream.WriteTimeout MarshalByRefObject.MemberwiseClone(Boolean) MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.CreateObjRef(Type) Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public class ServerHelloAlpnAdderStream : Stream, IDisposable Constructors ServerHelloAlpnAdderStream(CustomBufferedStream) Declaration public ServerHelloAlpnAdderStream(CustomBufferedStream stream) Parameters Type Name Description CustomBufferedStream stream Properties CanRead Declaration public override bool CanRead { get; } Property Value Type Description Boolean Overrides Stream.CanRead CanSeek Declaration public override bool CanSeek { get; } Property Value Type Description Boolean Overrides Stream.CanSeek CanWrite Declaration public override bool CanWrite { get; } Property Value Type Description Boolean Overrides Stream.CanWrite Length Declaration public override long Length { get; } Property Value Type Description Int64 Overrides Stream.Length Position Declaration public override long Position { get; set; } Property Value Type Description Int64 Overrides Stream.Position Methods Flush() Declaration public override void Flush() Overrides Stream.Flush() Read(Byte[], Int32, Int32) Declaration public override int Read(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Returns Type Description Int32 Overrides Stream.Read(Byte[], Int32, Int32) Seek(Int64, SeekOrigin) Declaration public override long Seek(long offset, SeekOrigin origin) Parameters Type Name Description Int64 offset SeekOrigin origin Returns Type Description Int64 Overrides Stream.Seek(Int64, SeekOrigin) SetLength(Int64) Declaration public override void SetLength(long value) Parameters Type Name Description Int64 value Overrides Stream.SetLength(Int64) Write(Byte[], Int32, Int32) Declaration public override void Write(byte[] buffer, int offset, int count) Parameters Type Name Description Byte [] buffer Int32 offset Int32 count Overrides Stream.Write(Byte[], Int32, Int32) Implements System.IDisposable" + "api/StreamExtended.Network.ICustomStreamWriter.html": { + "href": "api/StreamExtended.Network.ICustomStreamWriter.html", + "title": "Interface ICustomStreamWriter | Stream Extended", + "keywords": "Interface ICustomStreamWriter A concrete implementation of this interface is required when calling CopyStream. Namespace : StreamExtended.Network Assembly : StreamExtended.dll Syntax public interface ICustomStreamWriter Methods Write(Byte[], Int32, Int32) Declaration void Write(byte[] buffer, int i, int bufferLength) Parameters Type Name Description Byte [] buffer Int32 i Int32 bufferLength WriteAsync(Byte[], Int32, Int32, CancellationToken) Declaration Task WriteAsync(byte[] buffer, int i, int bufferLength, CancellationToken cancellationToken) Parameters Type Name Description Byte [] buffer Int32 i Int32 bufferLength CancellationToken cancellationToken Returns Type Description Task" }, "api/StreamExtended.ServerHelloInfo.html": { "href": "api/StreamExtended.ServerHelloInfo.html", "title": "Class ServerHelloInfo | Stream Extended", - "keywords": "Class ServerHelloInfo Inheritance Object ServerHelloInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class ServerHelloInfo Properties CipherSuite Declaration public int CipherSuite { get; set; } Property Value Type Description Int32 CompressionMethod Declaration public byte CompressionMethod { get; set; } Property Value Type Description Byte Extensions Declaration public Dictionary Extensions { get; set; } Property Value Type Description Dictionary < String , SslExtension > HandshakeVersion Declaration public int HandshakeVersion { get; set; } Property Value Type Description Int32 MajorVersion Declaration public int MajorVersion { get; set; } Property Value Type Description Int32 MinorVersion Declaration public int MinorVersion { get; set; } Property Value Type Description Int32 Random Declaration public byte[] Random { get; set; } Property Value Type Description Byte [] SessionId Declaration public byte[] SessionId { get; set; } Property Value Type Description Byte [] Time Declaration public DateTime Time { get; } Property Value Type Description DateTime Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString()" + "keywords": "Class ServerHelloInfo Wraps up the server SSL hello information. Inheritance Object ServerHelloInfo Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class ServerHelloInfo Properties CipherSuite Declaration public int CipherSuite { get; set; } Property Value Type Description Int32 CompressionMethod Declaration public byte CompressionMethod { get; set; } Property Value Type Description Byte Extensions Declaration public Dictionary Extensions { get; set; } Property Value Type Description Dictionary < String , SslExtension > HandshakeVersion Declaration public int HandshakeVersion { get; set; } Property Value Type Description Int32 MajorVersion Declaration public int MajorVersion { get; set; } Property Value Type Description Int32 MinorVersion Declaration public int MinorVersion { get; set; } Property Value Type Description Int32 Random Declaration public byte[] Random { get; set; } Property Value Type Description Byte [] SessionId Declaration public byte[] SessionId { get; set; } Property Value Type Description Byte [] Time Declaration public DateTime Time { get; } Property Value Type Description DateTime Methods ToString() Returns a String that represents this instance. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString()" }, "api/StreamExtended.SslTools.html": { "href": "api/StreamExtended.SslTools.html", "title": "Class SslTools | Stream Extended", - "keywords": "Class SslTools Inheritance Object SslTools Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class SslTools Methods IsClientHello(CustomBufferedStream, CancellationToken) Declaration public static Task IsClientHello(CustomBufferedStream stream, CancellationToken cancellationToken) Parameters Type Name Description CustomBufferedStream stream CancellationToken cancellationToken Returns Type Description Task < Boolean > IsServerHello(CustomBufferedStream, CancellationToken) Declaration public static Task IsServerHello(CustomBufferedStream stream, CancellationToken cancellationToken) Parameters Type Name Description CustomBufferedStream stream CancellationToken cancellationToken Returns Type Description Task < Boolean > PeekClientHello(CustomBufferedStream, CancellationToken) Declaration public static Task PeekClientHello(CustomBufferedStream clientStream, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CustomBufferedStream clientStream CancellationToken cancellationToken Returns Type Description Task < ClientHelloInfo > PeekServerHello(CustomBufferedStream, CancellationToken) Declaration public static Task PeekServerHello(CustomBufferedStream serverStream, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CustomBufferedStream serverStream CancellationToken cancellationToken Returns Type Description Task < ServerHelloInfo >" + "keywords": "Class SslTools Use this class to peek SSL client/server hello information. Inheritance Object SslTools Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : StreamExtended Assembly : StreamExtended.dll Syntax public class SslTools Methods IsClientHello(CustomBufferedStream, IBufferPool, CancellationToken) Is the given stream starts with an SSL client hello? Declaration public static Task IsClientHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken) Parameters Type Name Description CustomBufferedStream stream IBufferPool bufferPool CancellationToken cancellationToken Returns Type Description Task < Boolean > IsServerHello(CustomBufferedStream, IBufferPool, CancellationToken) Is the given stream starts with an SSL client hello? Declaration public static Task IsServerHello(CustomBufferedStream stream, IBufferPool bufferPool, CancellationToken cancellationToken) Parameters Type Name Description CustomBufferedStream stream IBufferPool bufferPool CancellationToken cancellationToken Returns Type Description Task < Boolean > PeekClientHello(CustomBufferedStream, IBufferPool, CancellationToken) Peek the SSL client hello information. Declaration public static Task PeekClientHello(CustomBufferedStream clientStream, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CustomBufferedStream clientStream IBufferPool bufferPool CancellationToken cancellationToken Returns Type Description Task < ClientHelloInfo > PeekServerHello(CustomBufferedStream, IBufferPool, CancellationToken) Peek the SSL client hello information. Declaration public static Task PeekServerHello(CustomBufferedStream serverStream, IBufferPool bufferPool, CancellationToken cancellationToken = default(CancellationToken)) Parameters Type Name Description CustomBufferedStream serverStream IBufferPool bufferPool CancellationToken cancellationToken Returns Type Description Task < ServerHelloInfo >" } } diff --git a/docs/xrefmap.yml b/docs/xrefmap.yml index ce95f34..d33b322 100644 --- a/docs/xrefmap.yml +++ b/docs/xrefmap.yml @@ -143,47 +143,89 @@ references: isSpec: "True" fullName: StreamExtended.ClientHelloInfo.ToString nameWithType: ClientHelloInfo.ToString -- uid: StreamExtended.Helpers - name: StreamExtended.Helpers - href: api/StreamExtended.Helpers.html - commentId: N:StreamExtended.Helpers - fullName: StreamExtended.Helpers - nameWithType: StreamExtended.Helpers -- uid: StreamExtended.Helpers.BufferPool - name: BufferPool - href: api/StreamExtended.Helpers.BufferPool.html - commentId: T:StreamExtended.Helpers.BufferPool - fullName: StreamExtended.Helpers.BufferPool - nameWithType: BufferPool -- uid: StreamExtended.Helpers.BufferPool.GetBuffer(System.Int32) +- uid: StreamExtended.DefaultBufferPool + name: DefaultBufferPool + href: api/StreamExtended.DefaultBufferPool.html + commentId: T:StreamExtended.DefaultBufferPool + fullName: StreamExtended.DefaultBufferPool + nameWithType: DefaultBufferPool +- uid: StreamExtended.DefaultBufferPool.Dispose + name: Dispose() + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_Dispose + commentId: M:StreamExtended.DefaultBufferPool.Dispose + fullName: StreamExtended.DefaultBufferPool.Dispose() + nameWithType: DefaultBufferPool.Dispose() +- uid: StreamExtended.DefaultBufferPool.Dispose* + name: Dispose + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_Dispose_ + commentId: Overload:StreamExtended.DefaultBufferPool.Dispose + isSpec: "True" + fullName: StreamExtended.DefaultBufferPool.Dispose + nameWithType: DefaultBufferPool.Dispose +- uid: StreamExtended.DefaultBufferPool.GetBuffer(System.Int32) + name: GetBuffer(Int32) + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_GetBuffer_System_Int32_ + commentId: M:StreamExtended.DefaultBufferPool.GetBuffer(System.Int32) + fullName: StreamExtended.DefaultBufferPool.GetBuffer(System.Int32) + nameWithType: DefaultBufferPool.GetBuffer(Int32) +- uid: StreamExtended.DefaultBufferPool.GetBuffer* + name: GetBuffer + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_GetBuffer_ + commentId: Overload:StreamExtended.DefaultBufferPool.GetBuffer + isSpec: "True" + fullName: StreamExtended.DefaultBufferPool.GetBuffer + nameWithType: DefaultBufferPool.GetBuffer +- uid: StreamExtended.DefaultBufferPool.ReturnBuffer(System.Byte[]) + name: ReturnBuffer(Byte[]) + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_ReturnBuffer_System_Byte___ + commentId: M:StreamExtended.DefaultBufferPool.ReturnBuffer(System.Byte[]) + name.vb: ReturnBuffer(Byte()) + fullName: StreamExtended.DefaultBufferPool.ReturnBuffer(System.Byte[]) + fullName.vb: StreamExtended.DefaultBufferPool.ReturnBuffer(System.Byte()) + nameWithType: DefaultBufferPool.ReturnBuffer(Byte[]) + nameWithType.vb: DefaultBufferPool.ReturnBuffer(Byte()) +- uid: StreamExtended.DefaultBufferPool.ReturnBuffer* + name: ReturnBuffer + href: api/StreamExtended.DefaultBufferPool.html#StreamExtended_DefaultBufferPool_ReturnBuffer_ + commentId: Overload:StreamExtended.DefaultBufferPool.ReturnBuffer + isSpec: "True" + fullName: StreamExtended.DefaultBufferPool.ReturnBuffer + nameWithType: DefaultBufferPool.ReturnBuffer +- uid: StreamExtended.IBufferPool + name: IBufferPool + href: api/StreamExtended.IBufferPool.html + commentId: T:StreamExtended.IBufferPool + fullName: StreamExtended.IBufferPool + nameWithType: IBufferPool +- uid: StreamExtended.IBufferPool.GetBuffer(System.Int32) name: GetBuffer(Int32) - href: api/StreamExtended.Helpers.BufferPool.html#StreamExtended_Helpers_BufferPool_GetBuffer_System_Int32_ - commentId: M:StreamExtended.Helpers.BufferPool.GetBuffer(System.Int32) - fullName: StreamExtended.Helpers.BufferPool.GetBuffer(System.Int32) - nameWithType: BufferPool.GetBuffer(Int32) -- uid: StreamExtended.Helpers.BufferPool.GetBuffer* + href: api/StreamExtended.IBufferPool.html#StreamExtended_IBufferPool_GetBuffer_System_Int32_ + commentId: M:StreamExtended.IBufferPool.GetBuffer(System.Int32) + fullName: StreamExtended.IBufferPool.GetBuffer(System.Int32) + nameWithType: IBufferPool.GetBuffer(Int32) +- uid: StreamExtended.IBufferPool.GetBuffer* name: GetBuffer - href: api/StreamExtended.Helpers.BufferPool.html#StreamExtended_Helpers_BufferPool_GetBuffer_ - commentId: Overload:StreamExtended.Helpers.BufferPool.GetBuffer + href: api/StreamExtended.IBufferPool.html#StreamExtended_IBufferPool_GetBuffer_ + commentId: Overload:StreamExtended.IBufferPool.GetBuffer isSpec: "True" - fullName: StreamExtended.Helpers.BufferPool.GetBuffer - nameWithType: BufferPool.GetBuffer -- uid: StreamExtended.Helpers.BufferPool.ReturnBuffer(System.Byte[]) + fullName: StreamExtended.IBufferPool.GetBuffer + nameWithType: IBufferPool.GetBuffer +- uid: StreamExtended.IBufferPool.ReturnBuffer(System.Byte[]) name: ReturnBuffer(Byte[]) - href: api/StreamExtended.Helpers.BufferPool.html#StreamExtended_Helpers_BufferPool_ReturnBuffer_System_Byte___ - commentId: M:StreamExtended.Helpers.BufferPool.ReturnBuffer(System.Byte[]) + href: api/StreamExtended.IBufferPool.html#StreamExtended_IBufferPool_ReturnBuffer_System_Byte___ + commentId: M:StreamExtended.IBufferPool.ReturnBuffer(System.Byte[]) name.vb: ReturnBuffer(Byte()) - fullName: StreamExtended.Helpers.BufferPool.ReturnBuffer(System.Byte[]) - fullName.vb: StreamExtended.Helpers.BufferPool.ReturnBuffer(System.Byte()) - nameWithType: BufferPool.ReturnBuffer(Byte[]) - nameWithType.vb: BufferPool.ReturnBuffer(Byte()) -- uid: StreamExtended.Helpers.BufferPool.ReturnBuffer* + fullName: StreamExtended.IBufferPool.ReturnBuffer(System.Byte[]) + fullName.vb: StreamExtended.IBufferPool.ReturnBuffer(System.Byte()) + nameWithType: IBufferPool.ReturnBuffer(Byte[]) + nameWithType.vb: IBufferPool.ReturnBuffer(Byte()) +- uid: StreamExtended.IBufferPool.ReturnBuffer* name: ReturnBuffer - href: api/StreamExtended.Helpers.BufferPool.html#StreamExtended_Helpers_BufferPool_ReturnBuffer_ - commentId: Overload:StreamExtended.Helpers.BufferPool.ReturnBuffer + href: api/StreamExtended.IBufferPool.html#StreamExtended_IBufferPool_ReturnBuffer_ + commentId: Overload:StreamExtended.IBufferPool.ReturnBuffer isSpec: "True" - fullName: StreamExtended.Helpers.BufferPool.ReturnBuffer - nameWithType: BufferPool.ReturnBuffer + fullName: StreamExtended.IBufferPool.ReturnBuffer + nameWithType: IBufferPool.ReturnBuffer - uid: StreamExtended.Models name: StreamExtended.Models href: api/StreamExtended.Models.html @@ -267,192 +309,225 @@ references: commentId: N:StreamExtended.Network fullName: StreamExtended.Network nameWithType: StreamExtended.Network -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream - name: ClientHelloAlpnAdderStream - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html - commentId: T:StreamExtended.Network.ClientHelloAlpnAdderStream - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream - nameWithType: ClientHelloAlpnAdderStream -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.#ctor(StreamExtended.Network.CustomBufferedStream) - name: ClientHelloAlpnAdderStream(CustomBufferedStream) - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream__ctor_StreamExtended_Network_CustomBufferedStream_ - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.#ctor(StreamExtended.Network.CustomBufferedStream) - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.ClientHelloAlpnAdderStream(StreamExtended.Network.CustomBufferedStream) - nameWithType: ClientHelloAlpnAdderStream.ClientHelloAlpnAdderStream(CustomBufferedStream) -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.#ctor* - name: ClientHelloAlpnAdderStream - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream__ctor_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.#ctor - isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.ClientHelloAlpnAdderStream - nameWithType: ClientHelloAlpnAdderStream.ClientHelloAlpnAdderStream -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead - name: CanRead - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanRead - commentId: P:StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead - nameWithType: ClientHelloAlpnAdderStream.CanRead -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead* - name: CanRead - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanRead_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead +- uid: StreamExtended.Network.CopyStream + name: CopyStream + href: api/StreamExtended.Network.CopyStream.html + commentId: T:StreamExtended.Network.CopyStream + fullName: StreamExtended.Network.CopyStream + nameWithType: CopyStream +- uid: StreamExtended.Network.CopyStream.#ctor(StreamExtended.Network.ICustomStreamReader,StreamExtended.Network.ICustomStreamWriter,StreamExtended.IBufferPool,System.Int32) + name: CopyStream(ICustomStreamReader, ICustomStreamWriter, IBufferPool, Int32) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream__ctor_StreamExtended_Network_ICustomStreamReader_StreamExtended_Network_ICustomStreamWriter_StreamExtended_IBufferPool_System_Int32_ + commentId: M:StreamExtended.Network.CopyStream.#ctor(StreamExtended.Network.ICustomStreamReader,StreamExtended.Network.ICustomStreamWriter,StreamExtended.IBufferPool,System.Int32) + fullName: StreamExtended.Network.CopyStream.CopyStream(StreamExtended.Network.ICustomStreamReader, StreamExtended.Network.ICustomStreamWriter, StreamExtended.IBufferPool, System.Int32) + nameWithType: CopyStream.CopyStream(ICustomStreamReader, ICustomStreamWriter, IBufferPool, Int32) +- uid: StreamExtended.Network.CopyStream.#ctor* + name: CopyStream + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream__ctor_ + commentId: Overload:StreamExtended.Network.CopyStream.#ctor + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.CopyStream + nameWithType: CopyStream.CopyStream +- uid: StreamExtended.Network.CopyStream.Available + name: Available + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Available + commentId: P:StreamExtended.Network.CopyStream.Available + fullName: StreamExtended.Network.CopyStream.Available + nameWithType: CopyStream.Available +- uid: StreamExtended.Network.CopyStream.Available* + name: Available + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Available_ + commentId: Overload:StreamExtended.Network.CopyStream.Available isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanRead - nameWithType: ClientHelloAlpnAdderStream.CanRead -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek - name: CanSeek - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanSeek - commentId: P:StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek - nameWithType: ClientHelloAlpnAdderStream.CanSeek -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek* - name: CanSeek - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanSeek_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek + fullName: StreamExtended.Network.CopyStream.Available + nameWithType: CopyStream.Available +- uid: StreamExtended.Network.CopyStream.BufferSize + name: BufferSize + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_BufferSize + commentId: P:StreamExtended.Network.CopyStream.BufferSize + fullName: StreamExtended.Network.CopyStream.BufferSize + nameWithType: CopyStream.BufferSize +- uid: StreamExtended.Network.CopyStream.BufferSize* + name: BufferSize + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_BufferSize_ + commentId: Overload:StreamExtended.Network.CopyStream.BufferSize isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanSeek - nameWithType: ClientHelloAlpnAdderStream.CanSeek -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite - name: CanWrite - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanWrite - commentId: P:StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite - nameWithType: ClientHelloAlpnAdderStream.CanWrite -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite* - name: CanWrite - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_CanWrite_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite + fullName: StreamExtended.Network.CopyStream.BufferSize + nameWithType: CopyStream.BufferSize +- uid: StreamExtended.Network.CopyStream.DataAvailable + name: DataAvailable + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_DataAvailable + commentId: P:StreamExtended.Network.CopyStream.DataAvailable + fullName: StreamExtended.Network.CopyStream.DataAvailable + nameWithType: CopyStream.DataAvailable +- uid: StreamExtended.Network.CopyStream.DataAvailable* + name: DataAvailable + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_DataAvailable_ + commentId: Overload:StreamExtended.Network.CopyStream.DataAvailable + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.DataAvailable + nameWithType: CopyStream.DataAvailable +- uid: StreamExtended.Network.CopyStream.Dispose + name: Dispose() + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Dispose + commentId: M:StreamExtended.Network.CopyStream.Dispose + fullName: StreamExtended.Network.CopyStream.Dispose() + nameWithType: CopyStream.Dispose() +- uid: StreamExtended.Network.CopyStream.Dispose* + name: Dispose + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Dispose_ + commentId: Overload:StreamExtended.Network.CopyStream.Dispose + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.Dispose + nameWithType: CopyStream.Dispose +- uid: StreamExtended.Network.CopyStream.FillBufferAsync(System.Threading.CancellationToken) + name: FillBufferAsync(CancellationToken) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_FillBufferAsync_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.CopyStream.FillBufferAsync(System.Threading.CancellationToken) + fullName: StreamExtended.Network.CopyStream.FillBufferAsync(System.Threading.CancellationToken) + nameWithType: CopyStream.FillBufferAsync(CancellationToken) +- uid: StreamExtended.Network.CopyStream.FillBufferAsync* + name: FillBufferAsync + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_FillBufferAsync_ + commentId: Overload:StreamExtended.Network.CopyStream.FillBufferAsync isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.CanWrite - nameWithType: ClientHelloAlpnAdderStream.CanWrite -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Flush + fullName: StreamExtended.Network.CopyStream.FillBufferAsync + nameWithType: CopyStream.FillBufferAsync +- uid: StreamExtended.Network.CopyStream.Flush name: Flush() - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Flush - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.Flush - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Flush() - nameWithType: ClientHelloAlpnAdderStream.Flush() -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Flush* + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Flush + commentId: M:StreamExtended.Network.CopyStream.Flush + fullName: StreamExtended.Network.CopyStream.Flush() + nameWithType: CopyStream.Flush() +- uid: StreamExtended.Network.CopyStream.Flush* name: Flush - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Flush_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Flush + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Flush_ + commentId: Overload:StreamExtended.Network.CopyStream.Flush isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Flush - nameWithType: ClientHelloAlpnAdderStream.Flush -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Length - name: Length - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Length - commentId: P:StreamExtended.Network.ClientHelloAlpnAdderStream.Length - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Length - nameWithType: ClientHelloAlpnAdderStream.Length -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Length* - name: Length - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Length_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Length + fullName: StreamExtended.Network.CopyStream.Flush + nameWithType: CopyStream.Flush +- uid: StreamExtended.Network.CopyStream.FlushAsync(System.Threading.CancellationToken) + name: FlushAsync(CancellationToken) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_FlushAsync_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.CopyStream.FlushAsync(System.Threading.CancellationToken) + fullName: StreamExtended.Network.CopyStream.FlushAsync(System.Threading.CancellationToken) + nameWithType: CopyStream.FlushAsync(CancellationToken) +- uid: StreamExtended.Network.CopyStream.FlushAsync* + name: FlushAsync + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_FlushAsync_ + commentId: Overload:StreamExtended.Network.CopyStream.FlushAsync isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Length - nameWithType: ClientHelloAlpnAdderStream.Length -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Position - name: Position - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Position - commentId: P:StreamExtended.Network.ClientHelloAlpnAdderStream.Position - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Position - nameWithType: ClientHelloAlpnAdderStream.Position -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Position* - name: Position - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Position_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Position + fullName: StreamExtended.Network.CopyStream.FlushAsync + nameWithType: CopyStream.FlushAsync +- uid: StreamExtended.Network.CopyStream.PeekByteAsync(System.Int32,System.Threading.CancellationToken) + name: PeekByteAsync(Int32, CancellationToken) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_PeekByteAsync_System_Int32_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.CopyStream.PeekByteAsync(System.Int32,System.Threading.CancellationToken) + fullName: StreamExtended.Network.CopyStream.PeekByteAsync(System.Int32, System.Threading.CancellationToken) + nameWithType: CopyStream.PeekByteAsync(Int32, CancellationToken) +- uid: StreamExtended.Network.CopyStream.PeekByteAsync* + name: PeekByteAsync + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_PeekByteAsync_ + commentId: Overload:StreamExtended.Network.CopyStream.PeekByteAsync + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.PeekByteAsync + nameWithType: CopyStream.PeekByteAsync +- uid: StreamExtended.Network.CopyStream.PeekByteFromBuffer(System.Int32) + name: PeekByteFromBuffer(Int32) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_PeekByteFromBuffer_System_Int32_ + commentId: M:StreamExtended.Network.CopyStream.PeekByteFromBuffer(System.Int32) + fullName: StreamExtended.Network.CopyStream.PeekByteFromBuffer(System.Int32) + nameWithType: CopyStream.PeekByteFromBuffer(Int32) +- uid: StreamExtended.Network.CopyStream.PeekByteFromBuffer* + name: PeekByteFromBuffer + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_PeekByteFromBuffer_ + commentId: Overload:StreamExtended.Network.CopyStream.PeekByteFromBuffer isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Position - nameWithType: ClientHelloAlpnAdderStream.Position -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Read(System.Byte[],System.Int32,System.Int32) + fullName: StreamExtended.Network.CopyStream.PeekByteFromBuffer + nameWithType: CopyStream.PeekByteFromBuffer +- uid: StreamExtended.Network.CopyStream.Read(System.Byte[],System.Int32,System.Int32) name: Read(Byte[], Int32, Int32) - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Read_System_Byte___System_Int32_System_Int32_ - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.Read(System.Byte[],System.Int32,System.Int32) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Read_System_Byte___System_Int32_System_Int32_ + commentId: M:StreamExtended.Network.CopyStream.Read(System.Byte[],System.Int32,System.Int32) name.vb: Read(Byte(), Int32, Int32) - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Read(System.Byte[], System.Int32, System.Int32) - fullName.vb: StreamExtended.Network.ClientHelloAlpnAdderStream.Read(System.Byte(), System.Int32, System.Int32) - nameWithType: ClientHelloAlpnAdderStream.Read(Byte[], Int32, Int32) - nameWithType.vb: ClientHelloAlpnAdderStream.Read(Byte(), Int32, Int32) -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Read* + fullName: StreamExtended.Network.CopyStream.Read(System.Byte[], System.Int32, System.Int32) + fullName.vb: StreamExtended.Network.CopyStream.Read(System.Byte(), System.Int32, System.Int32) + nameWithType: CopyStream.Read(Byte[], Int32, Int32) + nameWithType.vb: CopyStream.Read(Byte(), Int32, Int32) +- uid: StreamExtended.Network.CopyStream.Read* name: Read - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Read_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Read + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_Read_ + commentId: Overload:StreamExtended.Network.CopyStream.Read isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Read - nameWithType: ClientHelloAlpnAdderStream.Read -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Seek(System.Int64,System.IO.SeekOrigin) - name: Seek(Int64, SeekOrigin) - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Seek_System_Int64_System_IO_SeekOrigin_ - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.Seek(System.Int64,System.IO.SeekOrigin) - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Seek(System.Int64, System.IO.SeekOrigin) - nameWithType: ClientHelloAlpnAdderStream.Seek(Int64, SeekOrigin) -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Seek* - name: Seek - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Seek_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Seek - isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Seek - nameWithType: ClientHelloAlpnAdderStream.Seek -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength(System.Int64) - name: SetLength(Int64) - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_SetLength_System_Int64_ - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength(System.Int64) - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength(System.Int64) - nameWithType: ClientHelloAlpnAdderStream.SetLength(Int64) -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength* - name: SetLength - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_SetLength_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength + fullName: StreamExtended.Network.CopyStream.Read + nameWithType: CopyStream.Read +- uid: StreamExtended.Network.CopyStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name: ReadAsync(Byte[], Int32, Int32, CancellationToken) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadAsync_System_Byte___System_Int32_System_Int32_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.CopyStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name.vb: ReadAsync(Byte(), Int32, Int32, CancellationToken) + fullName: StreamExtended.Network.CopyStream.ReadAsync(System.Byte[], System.Int32, System.Int32, System.Threading.CancellationToken) + fullName.vb: StreamExtended.Network.CopyStream.ReadAsync(System.Byte(), System.Int32, System.Int32, System.Threading.CancellationToken) + nameWithType: CopyStream.ReadAsync(Byte[], Int32, Int32, CancellationToken) + nameWithType.vb: CopyStream.ReadAsync(Byte(), Int32, Int32, CancellationToken) +- uid: StreamExtended.Network.CopyStream.ReadAsync* + name: ReadAsync + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadAsync_ + commentId: Overload:StreamExtended.Network.CopyStream.ReadAsync isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.SetLength - nameWithType: ClientHelloAlpnAdderStream.SetLength -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Write(System.Byte[],System.Int32,System.Int32) - name: Write(Byte[], Int32, Int32) - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Write_System_Byte___System_Int32_System_Int32_ - commentId: M:StreamExtended.Network.ClientHelloAlpnAdderStream.Write(System.Byte[],System.Int32,System.Int32) - name.vb: Write(Byte(), Int32, Int32) - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Write(System.Byte[], System.Int32, System.Int32) - fullName.vb: StreamExtended.Network.ClientHelloAlpnAdderStream.Write(System.Byte(), System.Int32, System.Int32) - nameWithType: ClientHelloAlpnAdderStream.Write(Byte[], Int32, Int32) - nameWithType.vb: ClientHelloAlpnAdderStream.Write(Byte(), Int32, Int32) -- uid: StreamExtended.Network.ClientHelloAlpnAdderStream.Write* - name: Write - href: api/StreamExtended.Network.ClientHelloAlpnAdderStream.html#StreamExtended_Network_ClientHelloAlpnAdderStream_Write_ - commentId: Overload:StreamExtended.Network.ClientHelloAlpnAdderStream.Write - isSpec: "True" - fullName: StreamExtended.Network.ClientHelloAlpnAdderStream.Write - nameWithType: ClientHelloAlpnAdderStream.Write -- uid: StreamExtended.Network.CustomBufferedPeekStream - name: CustomBufferedPeekStream - href: api/StreamExtended.Network.CustomBufferedPeekStream.html - commentId: T:StreamExtended.Network.CustomBufferedPeekStream - fullName: StreamExtended.Network.CustomBufferedPeekStream - nameWithType: CustomBufferedPeekStream -- uid: StreamExtended.Network.CustomBufferedPeekStream.Available - name: Available - href: api/StreamExtended.Network.CustomBufferedPeekStream.html#StreamExtended_Network_CustomBufferedPeekStream_Available - commentId: P:StreamExtended.Network.CustomBufferedPeekStream.Available - fullName: StreamExtended.Network.CustomBufferedPeekStream.Available - nameWithType: CustomBufferedPeekStream.Available -- uid: StreamExtended.Network.CustomBufferedPeekStream.Available* - name: Available - href: api/StreamExtended.Network.CustomBufferedPeekStream.html#StreamExtended_Network_CustomBufferedPeekStream_Available_ - commentId: Overload:StreamExtended.Network.CustomBufferedPeekStream.Available + fullName: StreamExtended.Network.CopyStream.ReadAsync + nameWithType: CopyStream.ReadAsync +- uid: StreamExtended.Network.CopyStream.ReadByteFromBuffer + name: ReadByteFromBuffer() + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadByteFromBuffer + commentId: M:StreamExtended.Network.CopyStream.ReadByteFromBuffer + fullName: StreamExtended.Network.CopyStream.ReadByteFromBuffer() + nameWithType: CopyStream.ReadByteFromBuffer() +- uid: StreamExtended.Network.CopyStream.ReadByteFromBuffer* + name: ReadByteFromBuffer + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadByteFromBuffer_ + commentId: Overload:StreamExtended.Network.CopyStream.ReadByteFromBuffer + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.ReadByteFromBuffer + nameWithType: CopyStream.ReadByteFromBuffer +- uid: StreamExtended.Network.CopyStream.ReadBytes + name: ReadBytes + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadBytes + commentId: P:StreamExtended.Network.CopyStream.ReadBytes + fullName: StreamExtended.Network.CopyStream.ReadBytes + nameWithType: CopyStream.ReadBytes +- uid: StreamExtended.Network.CopyStream.ReadBytes* + name: ReadBytes + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadBytes_ + commentId: Overload:StreamExtended.Network.CopyStream.ReadBytes + isSpec: "True" + fullName: StreamExtended.Network.CopyStream.ReadBytes + nameWithType: CopyStream.ReadBytes +- uid: StreamExtended.Network.CopyStream.ReadLineAsync(System.Threading.CancellationToken) + name: ReadLineAsync(CancellationToken) + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadLineAsync_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.CopyStream.ReadLineAsync(System.Threading.CancellationToken) + fullName: StreamExtended.Network.CopyStream.ReadLineAsync(System.Threading.CancellationToken) + nameWithType: CopyStream.ReadLineAsync(CancellationToken) +- uid: StreamExtended.Network.CopyStream.ReadLineAsync* + name: ReadLineAsync + href: api/StreamExtended.Network.CopyStream.html#StreamExtended_Network_CopyStream_ReadLineAsync_ + commentId: Overload:StreamExtended.Network.CopyStream.ReadLineAsync isSpec: "True" - fullName: StreamExtended.Network.CustomBufferedPeekStream.Available - nameWithType: CustomBufferedPeekStream.Available + fullName: StreamExtended.Network.CopyStream.ReadLineAsync + nameWithType: CopyStream.ReadLineAsync - uid: StreamExtended.Network.CustomBufferedStream name: CustomBufferedStream href: api/StreamExtended.Network.CustomBufferedStream.html commentId: T:StreamExtended.Network.CustomBufferedStream fullName: StreamExtended.Network.CustomBufferedStream nameWithType: CustomBufferedStream -- uid: StreamExtended.Network.CustomBufferedStream.#ctor(System.IO.Stream,System.Int32,System.Boolean) - name: CustomBufferedStream(Stream, Int32, Boolean) - href: api/StreamExtended.Network.CustomBufferedStream.html#StreamExtended_Network_CustomBufferedStream__ctor_System_IO_Stream_System_Int32_System_Boolean_ - commentId: M:StreamExtended.Network.CustomBufferedStream.#ctor(System.IO.Stream,System.Int32,System.Boolean) - fullName: StreamExtended.Network.CustomBufferedStream.CustomBufferedStream(System.IO.Stream, System.Int32, System.Boolean) - nameWithType: CustomBufferedStream.CustomBufferedStream(Stream, Int32, Boolean) +- uid: StreamExtended.Network.CustomBufferedStream.#ctor(System.IO.Stream,StreamExtended.IBufferPool,System.Int32,System.Boolean) + name: CustomBufferedStream(Stream, IBufferPool, Int32, Boolean) + href: api/StreamExtended.Network.CustomBufferedStream.html#StreamExtended_Network_CustomBufferedStream__ctor_System_IO_Stream_StreamExtended_IBufferPool_System_Int32_System_Boolean_ + commentId: M:StreamExtended.Network.CustomBufferedStream.#ctor(System.IO.Stream,StreamExtended.IBufferPool,System.Int32,System.Boolean) + fullName: StreamExtended.Network.CustomBufferedStream.CustomBufferedStream(System.IO.Stream, StreamExtended.IBufferPool, System.Int32, System.Boolean) + nameWithType: CustomBufferedStream.CustomBufferedStream(Stream, IBufferPool, Int32, Boolean) - uid: StreamExtended.Network.CustomBufferedStream.#ctor* name: CustomBufferedStream href: api/StreamExtended.Network.CustomBufferedStream.html#StreamExtended_Network_CustomBufferedStream__ctor_ @@ -906,161 +981,247 @@ references: isSpec: "True" fullName: StreamExtended.Network.CustomBufferedStream.WriteTimeout nameWithType: CustomBufferedStream.WriteTimeout -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream - name: ServerHelloAlpnAdderStream - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html - commentId: T:StreamExtended.Network.ServerHelloAlpnAdderStream - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream - nameWithType: ServerHelloAlpnAdderStream -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.#ctor(StreamExtended.Network.CustomBufferedStream) - name: ServerHelloAlpnAdderStream(CustomBufferedStream) - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream__ctor_StreamExtended_Network_CustomBufferedStream_ - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.#ctor(StreamExtended.Network.CustomBufferedStream) - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.ServerHelloAlpnAdderStream(StreamExtended.Network.CustomBufferedStream) - nameWithType: ServerHelloAlpnAdderStream.ServerHelloAlpnAdderStream(CustomBufferedStream) -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.#ctor* - name: ServerHelloAlpnAdderStream - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream__ctor_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.#ctor - isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.ServerHelloAlpnAdderStream - nameWithType: ServerHelloAlpnAdderStream.ServerHelloAlpnAdderStream -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead - name: CanRead - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanRead - commentId: P:StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead - nameWithType: ServerHelloAlpnAdderStream.CanRead -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead* - name: CanRead - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanRead_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead +- uid: StreamExtended.Network.DataEventArgs + name: DataEventArgs + href: api/StreamExtended.Network.DataEventArgs.html + commentId: T:StreamExtended.Network.DataEventArgs + fullName: StreamExtended.Network.DataEventArgs + nameWithType: DataEventArgs +- uid: StreamExtended.Network.DataEventArgs.#ctor(System.Byte[],System.Int32,System.Int32) + name: DataEventArgs(Byte[], Int32, Int32) + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs__ctor_System_Byte___System_Int32_System_Int32_ + commentId: M:StreamExtended.Network.DataEventArgs.#ctor(System.Byte[],System.Int32,System.Int32) + name.vb: DataEventArgs(Byte(), Int32, Int32) + fullName: StreamExtended.Network.DataEventArgs.DataEventArgs(System.Byte[], System.Int32, System.Int32) + fullName.vb: StreamExtended.Network.DataEventArgs.DataEventArgs(System.Byte(), System.Int32, System.Int32) + nameWithType: DataEventArgs.DataEventArgs(Byte[], Int32, Int32) + nameWithType.vb: DataEventArgs.DataEventArgs(Byte(), Int32, Int32) +- uid: StreamExtended.Network.DataEventArgs.#ctor* + name: DataEventArgs + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs__ctor_ + commentId: Overload:StreamExtended.Network.DataEventArgs.#ctor + isSpec: "True" + fullName: StreamExtended.Network.DataEventArgs.DataEventArgs + nameWithType: DataEventArgs.DataEventArgs +- uid: StreamExtended.Network.DataEventArgs.Buffer + name: Buffer + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Buffer + commentId: P:StreamExtended.Network.DataEventArgs.Buffer + fullName: StreamExtended.Network.DataEventArgs.Buffer + nameWithType: DataEventArgs.Buffer +- uid: StreamExtended.Network.DataEventArgs.Buffer* + name: Buffer + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Buffer_ + commentId: Overload:StreamExtended.Network.DataEventArgs.Buffer + isSpec: "True" + fullName: StreamExtended.Network.DataEventArgs.Buffer + nameWithType: DataEventArgs.Buffer +- uid: StreamExtended.Network.DataEventArgs.Count + name: Count + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Count + commentId: P:StreamExtended.Network.DataEventArgs.Count + fullName: StreamExtended.Network.DataEventArgs.Count + nameWithType: DataEventArgs.Count +- uid: StreamExtended.Network.DataEventArgs.Count* + name: Count + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Count_ + commentId: Overload:StreamExtended.Network.DataEventArgs.Count + isSpec: "True" + fullName: StreamExtended.Network.DataEventArgs.Count + nameWithType: DataEventArgs.Count +- uid: StreamExtended.Network.DataEventArgs.Offset + name: Offset + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Offset + commentId: P:StreamExtended.Network.DataEventArgs.Offset + fullName: StreamExtended.Network.DataEventArgs.Offset + nameWithType: DataEventArgs.Offset +- uid: StreamExtended.Network.DataEventArgs.Offset* + name: Offset + href: api/StreamExtended.Network.DataEventArgs.html#StreamExtended_Network_DataEventArgs_Offset_ + commentId: Overload:StreamExtended.Network.DataEventArgs.Offset + isSpec: "True" + fullName: StreamExtended.Network.DataEventArgs.Offset + nameWithType: DataEventArgs.Offset +- uid: StreamExtended.Network.ICustomStreamReader + name: ICustomStreamReader + href: api/StreamExtended.Network.ICustomStreamReader.html + commentId: T:StreamExtended.Network.ICustomStreamReader + fullName: StreamExtended.Network.ICustomStreamReader + nameWithType: ICustomStreamReader +- uid: StreamExtended.Network.ICustomStreamReader.Available + name: Available + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_Available + commentId: P:StreamExtended.Network.ICustomStreamReader.Available + fullName: StreamExtended.Network.ICustomStreamReader.Available + nameWithType: ICustomStreamReader.Available +- uid: StreamExtended.Network.ICustomStreamReader.Available* + name: Available + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_Available_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.Available isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanRead - nameWithType: ServerHelloAlpnAdderStream.CanRead -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek - name: CanSeek - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanSeek - commentId: P:StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek - nameWithType: ServerHelloAlpnAdderStream.CanSeek -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek* - name: CanSeek - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanSeek_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek + fullName: StreamExtended.Network.ICustomStreamReader.Available + nameWithType: ICustomStreamReader.Available +- uid: StreamExtended.Network.ICustomStreamReader.BufferSize + name: BufferSize + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_BufferSize + commentId: P:StreamExtended.Network.ICustomStreamReader.BufferSize + fullName: StreamExtended.Network.ICustomStreamReader.BufferSize + nameWithType: ICustomStreamReader.BufferSize +- uid: StreamExtended.Network.ICustomStreamReader.BufferSize* + name: BufferSize + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_BufferSize_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.BufferSize isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanSeek - nameWithType: ServerHelloAlpnAdderStream.CanSeek -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite - name: CanWrite - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanWrite - commentId: P:StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite - nameWithType: ServerHelloAlpnAdderStream.CanWrite -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite* - name: CanWrite - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_CanWrite_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite + fullName: StreamExtended.Network.ICustomStreamReader.BufferSize + nameWithType: ICustomStreamReader.BufferSize +- uid: StreamExtended.Network.ICustomStreamReader.DataAvailable + name: DataAvailable + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_DataAvailable + commentId: P:StreamExtended.Network.ICustomStreamReader.DataAvailable + fullName: StreamExtended.Network.ICustomStreamReader.DataAvailable + nameWithType: ICustomStreamReader.DataAvailable +- uid: StreamExtended.Network.ICustomStreamReader.DataAvailable* + name: DataAvailable + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_DataAvailable_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.DataAvailable isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.CanWrite - nameWithType: ServerHelloAlpnAdderStream.CanWrite -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Flush - name: Flush() - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Flush - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.Flush - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Flush() - nameWithType: ServerHelloAlpnAdderStream.Flush() -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Flush* - name: Flush - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Flush_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Flush + fullName: StreamExtended.Network.ICustomStreamReader.DataAvailable + nameWithType: ICustomStreamReader.DataAvailable +- uid: StreamExtended.Network.ICustomStreamReader.FillBufferAsync(System.Threading.CancellationToken) + name: FillBufferAsync(CancellationToken) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_FillBufferAsync_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.ICustomStreamReader.FillBufferAsync(System.Threading.CancellationToken) + fullName: StreamExtended.Network.ICustomStreamReader.FillBufferAsync(System.Threading.CancellationToken) + nameWithType: ICustomStreamReader.FillBufferAsync(CancellationToken) +- uid: StreamExtended.Network.ICustomStreamReader.FillBufferAsync* + name: FillBufferAsync + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_FillBufferAsync_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.FillBufferAsync isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Flush - nameWithType: ServerHelloAlpnAdderStream.Flush -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Length - name: Length - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Length - commentId: P:StreamExtended.Network.ServerHelloAlpnAdderStream.Length - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Length - nameWithType: ServerHelloAlpnAdderStream.Length -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Length* - name: Length - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Length_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Length + fullName: StreamExtended.Network.ICustomStreamReader.FillBufferAsync + nameWithType: ICustomStreamReader.FillBufferAsync +- uid: StreamExtended.Network.ICustomStreamReader.PeekByteAsync(System.Int32,System.Threading.CancellationToken) + name: PeekByteAsync(Int32, CancellationToken) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_PeekByteAsync_System_Int32_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.ICustomStreamReader.PeekByteAsync(System.Int32,System.Threading.CancellationToken) + fullName: StreamExtended.Network.ICustomStreamReader.PeekByteAsync(System.Int32, System.Threading.CancellationToken) + nameWithType: ICustomStreamReader.PeekByteAsync(Int32, CancellationToken) +- uid: StreamExtended.Network.ICustomStreamReader.PeekByteAsync* + name: PeekByteAsync + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_PeekByteAsync_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.PeekByteAsync isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Length - nameWithType: ServerHelloAlpnAdderStream.Length -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Position - name: Position - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Position - commentId: P:StreamExtended.Network.ServerHelloAlpnAdderStream.Position - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Position - nameWithType: ServerHelloAlpnAdderStream.Position -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Position* - name: Position - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Position_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Position + fullName: StreamExtended.Network.ICustomStreamReader.PeekByteAsync + nameWithType: ICustomStreamReader.PeekByteAsync +- uid: StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer(System.Int32) + name: PeekByteFromBuffer(Int32) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_PeekByteFromBuffer_System_Int32_ + commentId: M:StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer(System.Int32) + fullName: StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer(System.Int32) + nameWithType: ICustomStreamReader.PeekByteFromBuffer(Int32) +- uid: StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer* + name: PeekByteFromBuffer + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_PeekByteFromBuffer_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Position - nameWithType: ServerHelloAlpnAdderStream.Position -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Read(System.Byte[],System.Int32,System.Int32) + fullName: StreamExtended.Network.ICustomStreamReader.PeekByteFromBuffer + nameWithType: ICustomStreamReader.PeekByteFromBuffer +- uid: StreamExtended.Network.ICustomStreamReader.Read(System.Byte[],System.Int32,System.Int32) name: Read(Byte[], Int32, Int32) - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Read_System_Byte___System_Int32_System_Int32_ - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.Read(System.Byte[],System.Int32,System.Int32) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_Read_System_Byte___System_Int32_System_Int32_ + commentId: M:StreamExtended.Network.ICustomStreamReader.Read(System.Byte[],System.Int32,System.Int32) name.vb: Read(Byte(), Int32, Int32) - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Read(System.Byte[], System.Int32, System.Int32) - fullName.vb: StreamExtended.Network.ServerHelloAlpnAdderStream.Read(System.Byte(), System.Int32, System.Int32) - nameWithType: ServerHelloAlpnAdderStream.Read(Byte[], Int32, Int32) - nameWithType.vb: ServerHelloAlpnAdderStream.Read(Byte(), Int32, Int32) -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Read* + fullName: StreamExtended.Network.ICustomStreamReader.Read(System.Byte[], System.Int32, System.Int32) + fullName.vb: StreamExtended.Network.ICustomStreamReader.Read(System.Byte(), System.Int32, System.Int32) + nameWithType: ICustomStreamReader.Read(Byte[], Int32, Int32) + nameWithType.vb: ICustomStreamReader.Read(Byte(), Int32, Int32) +- uid: StreamExtended.Network.ICustomStreamReader.Read* name: Read - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Read_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Read + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_Read_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.Read isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Read - nameWithType: ServerHelloAlpnAdderStream.Read -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Seek(System.Int64,System.IO.SeekOrigin) - name: Seek(Int64, SeekOrigin) - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Seek_System_Int64_System_IO_SeekOrigin_ - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.Seek(System.Int64,System.IO.SeekOrigin) - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Seek(System.Int64, System.IO.SeekOrigin) - nameWithType: ServerHelloAlpnAdderStream.Seek(Int64, SeekOrigin) -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Seek* - name: Seek - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Seek_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Seek + fullName: StreamExtended.Network.ICustomStreamReader.Read + nameWithType: ICustomStreamReader.Read +- uid: StreamExtended.Network.ICustomStreamReader.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name: ReadAsync(Byte[], Int32, Int32, CancellationToken) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadAsync_System_Byte___System_Int32_System_Int32_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.ICustomStreamReader.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name.vb: ReadAsync(Byte(), Int32, Int32, CancellationToken) + fullName: StreamExtended.Network.ICustomStreamReader.ReadAsync(System.Byte[], System.Int32, System.Int32, System.Threading.CancellationToken) + fullName.vb: StreamExtended.Network.ICustomStreamReader.ReadAsync(System.Byte(), System.Int32, System.Int32, System.Threading.CancellationToken) + nameWithType: ICustomStreamReader.ReadAsync(Byte[], Int32, Int32, CancellationToken) + nameWithType.vb: ICustomStreamReader.ReadAsync(Byte(), Int32, Int32, CancellationToken) +- uid: StreamExtended.Network.ICustomStreamReader.ReadAsync* + name: ReadAsync + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadAsync_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.ReadAsync isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Seek - nameWithType: ServerHelloAlpnAdderStream.Seek -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength(System.Int64) - name: SetLength(Int64) - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_SetLength_System_Int64_ - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength(System.Int64) - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength(System.Int64) - nameWithType: ServerHelloAlpnAdderStream.SetLength(Int64) -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength* - name: SetLength - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_SetLength_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength + fullName: StreamExtended.Network.ICustomStreamReader.ReadAsync + nameWithType: ICustomStreamReader.ReadAsync +- uid: StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer + name: ReadByteFromBuffer() + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadByteFromBuffer + commentId: M:StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer + fullName: StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer() + nameWithType: ICustomStreamReader.ReadByteFromBuffer() +- uid: StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer* + name: ReadByteFromBuffer + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadByteFromBuffer_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.SetLength - nameWithType: ServerHelloAlpnAdderStream.SetLength -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Write(System.Byte[],System.Int32,System.Int32) + fullName: StreamExtended.Network.ICustomStreamReader.ReadByteFromBuffer + nameWithType: ICustomStreamReader.ReadByteFromBuffer +- uid: StreamExtended.Network.ICustomStreamReader.ReadLineAsync(System.Threading.CancellationToken) + name: ReadLineAsync(CancellationToken) + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadLineAsync_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.ICustomStreamReader.ReadLineAsync(System.Threading.CancellationToken) + fullName: StreamExtended.Network.ICustomStreamReader.ReadLineAsync(System.Threading.CancellationToken) + nameWithType: ICustomStreamReader.ReadLineAsync(CancellationToken) +- uid: StreamExtended.Network.ICustomStreamReader.ReadLineAsync* + name: ReadLineAsync + href: api/StreamExtended.Network.ICustomStreamReader.html#StreamExtended_Network_ICustomStreamReader_ReadLineAsync_ + commentId: Overload:StreamExtended.Network.ICustomStreamReader.ReadLineAsync + isSpec: "True" + fullName: StreamExtended.Network.ICustomStreamReader.ReadLineAsync + nameWithType: ICustomStreamReader.ReadLineAsync +- uid: StreamExtended.Network.ICustomStreamWriter + name: ICustomStreamWriter + href: api/StreamExtended.Network.ICustomStreamWriter.html + commentId: T:StreamExtended.Network.ICustomStreamWriter + fullName: StreamExtended.Network.ICustomStreamWriter + nameWithType: ICustomStreamWriter +- uid: StreamExtended.Network.ICustomStreamWriter.Write(System.Byte[],System.Int32,System.Int32) name: Write(Byte[], Int32, Int32) - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Write_System_Byte___System_Int32_System_Int32_ - commentId: M:StreamExtended.Network.ServerHelloAlpnAdderStream.Write(System.Byte[],System.Int32,System.Int32) + href: api/StreamExtended.Network.ICustomStreamWriter.html#StreamExtended_Network_ICustomStreamWriter_Write_System_Byte___System_Int32_System_Int32_ + commentId: M:StreamExtended.Network.ICustomStreamWriter.Write(System.Byte[],System.Int32,System.Int32) name.vb: Write(Byte(), Int32, Int32) - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Write(System.Byte[], System.Int32, System.Int32) - fullName.vb: StreamExtended.Network.ServerHelloAlpnAdderStream.Write(System.Byte(), System.Int32, System.Int32) - nameWithType: ServerHelloAlpnAdderStream.Write(Byte[], Int32, Int32) - nameWithType.vb: ServerHelloAlpnAdderStream.Write(Byte(), Int32, Int32) -- uid: StreamExtended.Network.ServerHelloAlpnAdderStream.Write* + fullName: StreamExtended.Network.ICustomStreamWriter.Write(System.Byte[], System.Int32, System.Int32) + fullName.vb: StreamExtended.Network.ICustomStreamWriter.Write(System.Byte(), System.Int32, System.Int32) + nameWithType: ICustomStreamWriter.Write(Byte[], Int32, Int32) + nameWithType.vb: ICustomStreamWriter.Write(Byte(), Int32, Int32) +- uid: StreamExtended.Network.ICustomStreamWriter.Write* name: Write - href: api/StreamExtended.Network.ServerHelloAlpnAdderStream.html#StreamExtended_Network_ServerHelloAlpnAdderStream_Write_ - commentId: Overload:StreamExtended.Network.ServerHelloAlpnAdderStream.Write + href: api/StreamExtended.Network.ICustomStreamWriter.html#StreamExtended_Network_ICustomStreamWriter_Write_ + commentId: Overload:StreamExtended.Network.ICustomStreamWriter.Write + isSpec: "True" + fullName: StreamExtended.Network.ICustomStreamWriter.Write + nameWithType: ICustomStreamWriter.Write +- uid: StreamExtended.Network.ICustomStreamWriter.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name: WriteAsync(Byte[], Int32, Int32, CancellationToken) + href: api/StreamExtended.Network.ICustomStreamWriter.html#StreamExtended_Network_ICustomStreamWriter_WriteAsync_System_Byte___System_Int32_System_Int32_System_Threading_CancellationToken_ + commentId: M:StreamExtended.Network.ICustomStreamWriter.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) + name.vb: WriteAsync(Byte(), Int32, Int32, CancellationToken) + fullName: StreamExtended.Network.ICustomStreamWriter.WriteAsync(System.Byte[], System.Int32, System.Int32, System.Threading.CancellationToken) + fullName.vb: StreamExtended.Network.ICustomStreamWriter.WriteAsync(System.Byte(), System.Int32, System.Int32, System.Threading.CancellationToken) + nameWithType: ICustomStreamWriter.WriteAsync(Byte[], Int32, Int32, CancellationToken) + nameWithType.vb: ICustomStreamWriter.WriteAsync(Byte(), Int32, Int32, CancellationToken) +- uid: StreamExtended.Network.ICustomStreamWriter.WriteAsync* + name: WriteAsync + href: api/StreamExtended.Network.ICustomStreamWriter.html#StreamExtended_Network_ICustomStreamWriter_WriteAsync_ + commentId: Overload:StreamExtended.Network.ICustomStreamWriter.WriteAsync isSpec: "True" - fullName: StreamExtended.Network.ServerHelloAlpnAdderStream.Write - nameWithType: ServerHelloAlpnAdderStream.Write + fullName: StreamExtended.Network.ICustomStreamWriter.WriteAsync + nameWithType: ICustomStreamWriter.WriteAsync - uid: StreamExtended.ServerHelloInfo name: ServerHelloInfo href: api/StreamExtended.ServerHelloInfo.html @@ -1203,12 +1364,12 @@ references: commentId: T:StreamExtended.SslTools fullName: StreamExtended.SslTools nameWithType: SslTools -- uid: StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - name: IsClientHello(CustomBufferedStream, CancellationToken) - href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsClientHello_StreamExtended_Network_CustomBufferedStream_System_Threading_CancellationToken_ - commentId: M:StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - fullName: StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream, System.Threading.CancellationToken) - nameWithType: SslTools.IsClientHello(CustomBufferedStream, CancellationToken) +- uid: StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + name: IsClientHello(CustomBufferedStream, IBufferPool, CancellationToken) + href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsClientHello_StreamExtended_Network_CustomBufferedStream_StreamExtended_IBufferPool_System_Threading_CancellationToken_ + commentId: M:StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + fullName: StreamExtended.SslTools.IsClientHello(StreamExtended.Network.CustomBufferedStream, StreamExtended.IBufferPool, System.Threading.CancellationToken) + nameWithType: SslTools.IsClientHello(CustomBufferedStream, IBufferPool, CancellationToken) - uid: StreamExtended.SslTools.IsClientHello* name: IsClientHello href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsClientHello_ @@ -1216,12 +1377,12 @@ references: isSpec: "True" fullName: StreamExtended.SslTools.IsClientHello nameWithType: SslTools.IsClientHello -- uid: StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - name: IsServerHello(CustomBufferedStream, CancellationToken) - href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsServerHello_StreamExtended_Network_CustomBufferedStream_System_Threading_CancellationToken_ - commentId: M:StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - fullName: StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream, System.Threading.CancellationToken) - nameWithType: SslTools.IsServerHello(CustomBufferedStream, CancellationToken) +- uid: StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + name: IsServerHello(CustomBufferedStream, IBufferPool, CancellationToken) + href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsServerHello_StreamExtended_Network_CustomBufferedStream_StreamExtended_IBufferPool_System_Threading_CancellationToken_ + commentId: M:StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + fullName: StreamExtended.SslTools.IsServerHello(StreamExtended.Network.CustomBufferedStream, StreamExtended.IBufferPool, System.Threading.CancellationToken) + nameWithType: SslTools.IsServerHello(CustomBufferedStream, IBufferPool, CancellationToken) - uid: StreamExtended.SslTools.IsServerHello* name: IsServerHello href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_IsServerHello_ @@ -1229,12 +1390,12 @@ references: isSpec: "True" fullName: StreamExtended.SslTools.IsServerHello nameWithType: SslTools.IsServerHello -- uid: StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - name: PeekClientHello(CustomBufferedStream, CancellationToken) - href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekClientHello_StreamExtended_Network_CustomBufferedStream_System_Threading_CancellationToken_ - commentId: M:StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - fullName: StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream, System.Threading.CancellationToken) - nameWithType: SslTools.PeekClientHello(CustomBufferedStream, CancellationToken) +- uid: StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + name: PeekClientHello(CustomBufferedStream, IBufferPool, CancellationToken) + href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekClientHello_StreamExtended_Network_CustomBufferedStream_StreamExtended_IBufferPool_System_Threading_CancellationToken_ + commentId: M:StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + fullName: StreamExtended.SslTools.PeekClientHello(StreamExtended.Network.CustomBufferedStream, StreamExtended.IBufferPool, System.Threading.CancellationToken) + nameWithType: SslTools.PeekClientHello(CustomBufferedStream, IBufferPool, CancellationToken) - uid: StreamExtended.SslTools.PeekClientHello* name: PeekClientHello href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekClientHello_ @@ -1242,12 +1403,12 @@ references: isSpec: "True" fullName: StreamExtended.SslTools.PeekClientHello nameWithType: SslTools.PeekClientHello -- uid: StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - name: PeekServerHello(CustomBufferedStream, CancellationToken) - href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekServerHello_StreamExtended_Network_CustomBufferedStream_System_Threading_CancellationToken_ - commentId: M:StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream,System.Threading.CancellationToken) - fullName: StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream, System.Threading.CancellationToken) - nameWithType: SslTools.PeekServerHello(CustomBufferedStream, CancellationToken) +- uid: StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + name: PeekServerHello(CustomBufferedStream, IBufferPool, CancellationToken) + href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekServerHello_StreamExtended_Network_CustomBufferedStream_StreamExtended_IBufferPool_System_Threading_CancellationToken_ + commentId: M:StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream,StreamExtended.IBufferPool,System.Threading.CancellationToken) + fullName: StreamExtended.SslTools.PeekServerHello(StreamExtended.Network.CustomBufferedStream, StreamExtended.IBufferPool, System.Threading.CancellationToken) + nameWithType: SslTools.PeekServerHello(CustomBufferedStream, IBufferPool, CancellationToken) - uid: StreamExtended.SslTools.PeekServerHello* name: PeekServerHello href: api/StreamExtended.SslTools.html#StreamExtended_SslTools_PeekServerHello_
              serverStream
              IBufferPoolbufferPool
              CancellationToken cancellationToken