コード例 #1
0
        public override byte[] CreateBody()
        {
            var buffer = new List <byte>();

            foreach (var mutate in _builder.GetEnumerator())
            {
                var opcode     = (byte)mutate.OpCode;
                var flags      = (byte)(mutate.CreateParents ? 0x01 : 0x00);
                var pathLength = Encoding.UTF8.GetByteCount(mutate.Path);
                var fragment   = mutate.Value == null ? new byte[0] : Transcoder.Serializer.Serialize(mutate.Value);

                var spec = new byte[pathLength + 8];
                Converter.FromByte(opcode, spec, 0);
                Converter.FromByte(flags, spec, 1);
                Converter.FromUInt16((ushort)pathLength, spec, 2);
                Converter.FromUInt32((uint)fragment.Length, spec, 4);
                Converter.FromString(mutate.Path, spec, 8);

                buffer.AddRange(spec);
                buffer.AddRange(fragment);
                _lookupCommands.Add(mutate);
            }
            return(buffer.ToArray());
        }