private Payload PayloadToProto(object message)
{
var serializer = system.Serialization.FindSerializerFor(message);
var builder = Payload.CreateBuilder()
.SetEnclosedMessage(ByteString.CopyFrom(serializer.ToBinary(message)))
.SetSerializerId(serializer.Identifier);
SerializerWithStringManifest serializerWithManifest;
if ((serializerWithManifest = serializer as SerializerWithStringManifest) != null)
{
var manifest = serializerWithManifest.Manifest(message);
if (!string.IsNullOrEmpty(manifest))
builder.SetMessageManifest(ByteString.CopyFromUtf8(manifest));
}
else
{
if (serializer.IncludeManifest)
builder.SetMessageManifest(ByteString.CopyFromUtf8(message.GetType().FullName));
}
return builder.Build();
}