Beispiel #1
0
        static void Main(string[] args)
        {
            byte[]          bytes    = new VariableInteger(12345);
            VariableInteger integer  = bytes;
            UInt64          uinteger = integer;
            int             size     = VariableInteger.Size(bytes[0]);

            InitialPacket packet = new InitialPacket()
            {
                Version                 = 16,
                SourceConnectionId      = 124,
                DestinationConnectionId = 0,
                PacketNumber            = 777521,
                TokenLength             = 0
            };

            packet = new PacketCreator().CreateInitialPacket(124, 0);

            ConnectionCloseFrame frame     = new ConnectionCloseFrame(ErrorCode.SERVER_BUSY, "The server is too busy to process your request.");
            MaxStreamIdFrame     msidframe = new MaxStreamIdFrame(144123, StreamType.ClientUnidirectional);

            //packet.AttachFrame(frame);
            packet.AttachFrame(msidframe);

            byte[] data = packet.Encode();
            string b64  = ToBase64(data);

            byte[] shpdata1 = new byte[] { 1, 1, 2, 3, 5, 8 };
            byte[] shpdata2 = new byte[] { 13, 21, 34, 55, 89, 144 };

            ShortHeaderPacket shp = new ShortHeaderPacket();

            shp.DestinationConnectionId = 124;
            shp.PacketNumber            = 2;

            shp.AttachFrame(new StreamFrame()
            {
                StreamId = 1, Length = new VariableInteger((UInt64)shpdata2.Length), StreamData = shpdata2, Offset = 6, EndOfStream = true
            });
            shp.AttachFrame(new StreamFrame()
            {
                StreamId = 1, Length = new VariableInteger((UInt64)shpdata1.Length), StreamData = shpdata1, Offset = 0
            });

            string shpb64 = ToBase64(shp.Encode());

            packet.Decode(data);

            byte[] ccfData = frame.Encode();
            frame.Decode(new ByteArray(ccfData));

            byte[]   streamIdData = new StreamId(123, StreamType.ClientUnidirectional);
            StreamId streamId     = streamIdData;

            QuicListener listener = new QuicListener(11000);

            listener.OnClientConnected += Listener_OnClientConnected;
            listener.Start();
        }
Beispiel #2
0
        public Frame GetFrame()
        {
            Frame result;
            byte  frameType = _array.PeekByte();

            switch (frameType)
            {
            case 0x00: result = new PaddingFrame(); break;

            case 0x01: result = new RSTStreamFrame(); break;

            case 0x02: result = new ConnectionCloseFrame(); break;

            case 0x06: result = new MaxStreamIdFrame(); break;

            case 0x10: result = new StreamFrame(); break;

            case 0x11: result = new StreamFrame(); break;

            case 0x12: result = new StreamFrame(); break;

            case 0x13: result = new StreamFrame(); break;

            case 0x14: result = new StreamFrame(); break;

            case 0x15: result = new StreamFrame(); break;

            case 0x16: result = new StreamFrame(); break;

            case 0x17: result = new StreamFrame(); break;

            default: result = null; break;
            }

            if (result != null)
            {
                result.Decode(_array);
            }

            return(result);
        }