private void EmitFlagWord(bool continuationBit)
 {
     NetworkOrderSerializer.WriteUInt16(Memory.Slice(Offset).Span, (ushort)(continuationBit ? (_flagWord | 1) : _flagWord));
     Offset   += 2;
     _flagWord = 0;
     _bitCount = 0;
 }
Exemple #2
0
 private void WriteBits()
 {
     NetworkOrderSerializer.WriteUInt16(Span, _bitAccumulator);
     _offset        += 2;
     _bitMask        = StartBitMask;
     _bitAccumulator = 0;
 }
Exemple #3
0
        internal override int WritePayload(Memory <byte> memory)
        {
            // write protocol class id (2 bytes)
            NetworkOrderSerializer.WriteUInt16(memory, _header.ProtocolClassId);
            // write header (X bytes)
            int bytesWritten = _header.WriteTo(memory.Slice(2), (ulong)_bodyLength);

            return(2 + bytesWritten);
        }
Exemple #4
0
        internal void WriteTo(Memory <byte> memory)
        {
            memory.Span[0] = (byte)Type;
            NetworkOrderSerializer.WriteUInt16(memory.Slice(1), (ushort)Channel);
            int bytesWritten = WritePayload(memory.Slice(7));

            NetworkOrderSerializer.WriteUInt32(memory.Slice(3), (uint)bytesWritten);
            memory.Span[bytesWritten + 7] = Constants.FrameEnd;
            ByteCount = bytesWritten + 8;
        }
Exemple #5
0
        internal override int WritePayload(Memory <byte> memory)
        {
            NetworkOrderSerializer.WriteUInt16(memory, _method.ProtocolClassId);
            NetworkOrderSerializer.WriteUInt16(memory.Slice(2), _method.ProtocolMethodId);
            var argWriter = new MethodArgumentWriter(memory.Slice(4));

            _method.WriteArgumentsTo(ref argWriter);
            argWriter.Flush();
            return(4 + argWriter.Offset);
        }
        public int WriteTo(Memory <byte> memory, ulong bodySize)
        {
            NetworkOrderSerializer.WriteUInt16(memory, ZERO); // Weight - not used
            NetworkOrderSerializer.WriteUInt64(memory.Slice(2), bodySize);

            ContentHeaderPropertyWriter writer = new ContentHeaderPropertyWriter(memory.Slice(10));

            WritePropertiesTo(ref writer);
            return(10 + writer.Offset);
        }
        private static int WriteBaseFrame(Span <byte> span, FrameType type, ushort channel, int payloadLength)
        {
            const int StartFrameType   = 0;
            const int StartChannel     = 1;
            const int StartPayloadSize = 3;

            span[StartFrameType] = (byte)type;
            NetworkOrderSerializer.WriteUInt16(span.Slice(StartChannel), channel);
            NetworkOrderSerializer.WriteUInt32(span.Slice(StartPayloadSize), (uint)payloadLength);
            span[StartPayload + payloadLength] = Constants.FrameEnd;
            return(StartPayload + 1 + payloadLength);
        }
            public static int WriteTo(Span <byte> span, ushort channel, MethodBase method)
            {
                const int StartClassId         = StartPayload;
                const int StartMethodId        = StartPayload + 2;
                const int StartMethodArguments = StartPayload + 4;

                NetworkOrderSerializer.WriteUInt16(span.Slice(StartClassId), method.ProtocolClassId);
                NetworkOrderSerializer.WriteUInt16(span.Slice(StartMethodId), method.ProtocolMethodId);
                var argWriter = new MethodArgumentWriter(span.Slice(StartMethodArguments));

                method.WriteArgumentsTo(ref argWriter);
                return(WriteBaseFrame(span, FrameType.FrameMethod, channel, StartMethodArguments - StartPayload + argWriter.Offset));
            }
            public static int WriteTo(Span <byte> span, ushort channel, ContentHeaderBase header, int bodyLength)
            {
                const int StartClassId         = StartPayload;
                const int StartWeight          = StartPayload + 2;
                const int StartBodyLength      = StartPayload + 4;
                const int StartHeaderArguments = StartPayload + 12;

                NetworkOrderSerializer.WriteUInt16(span.Slice(StartClassId), header.ProtocolClassId);
                NetworkOrderSerializer.WriteUInt16(span.Slice(StartWeight), 0); // Weight - not used
                NetworkOrderSerializer.WriteUInt64(span.Slice(StartBodyLength), (ulong)bodyLength);
                int offset = header.WritePropertiesTo(span.Slice(StartHeaderArguments));

                return(WriteBaseFrame(span, FrameType.FrameHeader, channel, StartHeaderArguments - StartPayload + offset));
            }
 public void TestWriteUInt16()
 {
     byte[] bytes = new byte[2];
     NetworkOrderSerializer.WriteUInt16(bytes, 0x89AB);
     Check(bytes, new byte[] { 0x89, 0xAB });
 }
 public static int WriteShort(Memory <byte> memory, ushort val)
 {
     NetworkOrderSerializer.WriteUInt16(memory, val);
     return(2);
 }
Exemple #12
0
 public static int WriteShort(Span <byte> span, ushort val)
 {
     NetworkOrderSerializer.WriteUInt16(span, val);
     return(2);
 }
 public void TestWriteUInt16()
 {
     byte[] bytes = new byte[2];
     NetworkOrderSerializer.WriteUInt16(ref bytes.AsSpan().GetStart(), 0x89AB);
     Check(bytes, new byte[] { 0x89, 0xAB });
 }