Exemplo n.º 1
0
        public void frame_with_extension_properties_can_be_codec()
        {
            var bufferManager = new BufferManager(8192, 1);
            var context       = new WriterContext(bufferManager);
            var buffer        = bufferManager.Dequeue();

            bufferManager.Enqueue(buffer);
            var sut = new HandshakeFrame();

            sut.Identity           = "Client";
            sut.OptionalExtensions = new[] { new HandshakeExtension("json", new Dictionary <string, string> {
                    { "Key", "Value" }
                }), new HandshakeExtension("ack") };
            sut.RequiredExtensions = new[] { new HandshakeExtension("dotnet") };
            sut.VersionMajor       = 1;
            sut.Write(context);
            sut.ResetWrite(context);

            var offset       = buffer.Offset;
            var receiveFrame = new HandshakeFrame();
            var len          = context.GetPackets()[0].Count;

            receiveFrame.Read(buffer.Array, ref offset, ref len);

            receiveFrame.OptionalExtensions[0].Properties["Key"].Should().Be("Value");
        }
Exemplo n.º 2
0
        public void frame_Should_be_able_to_parse_multiple_incoming_buffers_if_reseted_in_between()
        {
            var bufferManager = new BufferManager(8192, 1);
            var context       = new WriterContext(bufferManager);
            var buffer        = bufferManager.Dequeue();

            bufferManager.Enqueue(buffer);
            var sut = new HandshakeFrame();

            sut.Identity           = "Client";
            sut.OptionalExtensions = new[] { new HandshakeExtension("json"), new HandshakeExtension("ack") };
            sut.RequiredExtensions = new[] { new HandshakeExtension("dotnet") };
            sut.VersionMajor       = 1;
            sut.Write(context);
            sut.ResetWrite(context);

            var offset = buffer.Offset;
            var len    = context.GetPackets()[0].Count;

            sut.Read(buffer.Array, ref offset, ref len);
            sut.ResetRead();
            offset = buffer.Offset;
            len    = context.GetPackets()[0].Count;
            sut.Read(buffer.Array, ref offset, ref len);

            len.Should().Be(0);
        }
Exemplo n.º 3
0
 public void Reset()
 {
     _handshakeFrame.ResetRead();
     _handshakeFrame.ResetWrite(_writerContext);
     _writeQueue.Clear();
     _frameType = FrameType.Unknown;
     _inboundMessage.ResetRead();
     _pendingWriteBufferCount = 0;
     Interlocked.CompareExchange(ref _writerCount, 0, 1);
     _handshakeCompleted = false;
     _extensionFrameProcessor.ResetRead();
 }