in src/Microsoft.Azure.SignalR.Protocols/ServiceMessage.cs [96:166]
internal void WriteExtensionMembers(ref MessagePackWriter writer)
{
int count = 0;
var tracingId = (this as IMessageWithTracingId)?.TracingId;
if (tracingId != null)
{
count++;
}
var ttl = (this as IHasTtl)?.Ttl;
if (ttl != null)
{
count++;
}
var protocol = (this as IHasProtocol)?.Protocol;
if (protocol != null)
{
count++;
}
var filter = (this as IHasSubscriberFilter)?.Filter;
if (filter != null)
{
count++;
}
var dataMessageType = (this as IHasDataMessageType)?.Type ?? default;
if (dataMessageType != default)
{
count++;
}
var isPartial = (this as IPartializable)?.IsPartial ?? false;
if (isPartial)
{
count++;
}
// todo : count more optional fields.
writer.WriteMapHeader(count);
if (tracingId != null)
{
writer.Write(TracingId);
writer.Write(tracingId.Value);
}
if (ttl != null)
{
writer.Write(Ttl);
writer.Write(ttl.Value);
}
if (protocol != null)
{
writer.Write(Protocol);
writer.Write(protocol);
}
if (filter != null)
{
writer.Write(Filter);
writer.Write(filter);
}
if (dataMessageType != default)
{
writer.Write(DataMessageType);
writer.Write((int)dataMessageType);
}
if (isPartial)
{
writer.Write(IsPartial);
writer.Write(isPartial);
}
// todo : write more optional fields.
}