Akka.Persistence.Serialization.SnapshotSerializer.Serialize C# (CSharp) Method

Serialize() private method

private Serialize ( object snapshot ) : byte[]
snapshot object
return byte[]
        private byte[] Serialize(object snapshot)
        {
            var serializer = system.Serialization.FindSerializerFor(snapshot);
            byte[] headerBytes;
            using (var headerOut = new MemoryStream())
            {
                WriteInt(headerOut, serializer.Identifier);
                if (serializer is SerializerWithStringManifest)
                {
                    var manifest = ((SerializerWithStringManifest) serializer).Manifest(snapshot);
                    if (!string.IsNullOrEmpty(manifest))
                    {
                        var manifestBinary = Encoding.UTF8.GetBytes(manifest);
                        headerOut.Write(manifestBinary, 0, manifestBinary.Length);
                    }
                }
                else if (serializer.IncludeManifest)
                {
                    var snapshotTypeBinary = Encoding.UTF8.GetBytes(TypeQualifiedNameForManifest(snapshot.GetType()));
                    headerOut.Write(snapshotTypeBinary, 0, snapshotTypeBinary.Length);
                }

                headerBytes = headerOut.ToArray();
            }

            using (var output = new MemoryStream())
            {
                WriteInt(output, headerBytes.Length);
                output.Write(headerBytes, 0, headerBytes.Length);

                var snapshotBytes = serializer.ToBinary(snapshot);
                output.Write(snapshotBytes, 0, snapshotBytes.Length);

                return output.ToArray();
            }
        }