コード例 #1
0
        public int GetLength()
        {
            var length = Amf0Decoder.GetLength(Name);

            foreach (var index in Enumerable.Range(0, GetPropertyCount()))
            {
                length += Amf0Decoder.GetLength(GetProperty(index));
            }
            return(length);
        }
コード例 #2
0
        public void Encode(Span <byte> buffer)
        {
            var length = Amf0Decoder.Encode(buffer, Name);

            buffer = buffer.Slice(length);
            foreach (var index in Enumerable.Range(0, GetPropertyCount()))
            {
                object value          = GetProperty(index);
                var    propertyLength = Amf0Decoder.Encode(buffer, value);
                length += propertyLength;
                buffer  = buffer.Slice(propertyLength);
            }
        }
コード例 #3
0
        public void Decode(ReadOnlySpan <byte> buffer)
        {
            var(length, commandName) = Amf0Decoder.Decode(buffer);
            Name = commandName as string;

            foreach (var index in Enumerable.Range(0, GetPropertyCount()))
            {
                buffer = buffer.Slice(length);
                if (buffer.Length == 0)
                {
                    break;
                }
                object value;
                (length, value) = Amf0Decoder.Decode(buffer);
                SetProperty(index, value);
            }
        }