Exemple #1
0
        private static void _SerializeMessages(ReusableMemoryStream stream, IEnumerable <Message> messages, SerializationInfo info)
        {
            if (info.CompressionCodec != CompressionCodec.None)
            {
                stream.Write(Basics.Zero64, 0, 8);
                using (var msgsetStream = stream.Pool.Reserve())
                {
                    SerializeMessagesUncompressed(msgsetStream, messages, info.Serializers, info.MessageVersion);

                    using (var compressed = stream.Pool.Reserve())
                    {
                        Basics.CompressStream(msgsetStream, compressed, info.CompressionCodec);

                        var m = new Message
                        {
                            Value     = compressed,
                            TimeStamp = Timestamp.Now
                        };
                        Basics.WriteWithSize(stream, m,
                                             new SerializationInfo
                        {
                            Serializers      = SerializationConfig.ByteArraySerializers,
                            CompressionCodec = info.CompressionCodec,
                            MessageVersion   = info.MessageVersion
                        }, SerializeMessageWithCodec);
                    }
                }
            }
            else
            {
                SerializeMessagesUncompressed(stream, messages, info.Serializers, info.MessageVersion);
            }
        }
Exemple #2
0
        private (int, long, long) SerializeRecordsWithCompression(ReusableMemoryStream target,
                                                                  CompressionCodec compression)
        {
            using (var uncompressedStream = target.Pool.Reserve())
            {
                var resultOffsetAndTimestamps = SerializeRecords(uncompressedStream);
                using (var compressed = target.Pool.Reserve())
                {
                    Basics.CompressStream(uncompressedStream, compressed, compression);
                    using (var tmpBuffer = target.Pool.Reserve())
                    {
                        compressed.Position = 0;
                        compressed.ReusableCopyTo(target, tmpBuffer);
                    }

                    return(resultOffsetAndTimestamps);
                }
            }
        }