コード例 #1
0
        public byte[] Serialize <T>(T instance)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }

            var data    = instance.SmartSerializeCompress(out bool compressed);
            var builder = new FlatBufferBuilder(data.Length + 255);

            // allocate payload
            var payload = RedisData.CreatePayloadVector(builder, data);
            var typeId  = GetTypeId(instance, builder);

            RedisData.StartRedisData(builder);
            RedisData.AddCompressed(builder, compressed);
            RedisData.AddType(builder, typeId);
            RedisData.AddPayload(builder, payload);
            int message = RedisData.EndRedisData(builder);

            RedisData.FinishRedisDataBuffer(builder, message);

            using var memoryStream = memoryStreamManager.GetStream("Redis.FlatBuffers", builder.DataBuffer.Data, builder.DataBuffer.Position, builder.Offset);
            return(memoryStream.ToArray());
        }