in src/Microsoft.Azure.SignalR.Protocols/ServiceMessage.cs [168:218]
internal void ReadExtensionMembers(ref MessagePackReader reader)
{
int count = reader.ReadMapHeader();
for (int i = 0; i < count; i++)
{
switch (reader.ReadInt32())
{
case TracingId:
if (this is IMessageWithTracingId withTracingId)
{
withTracingId.TracingId = reader.ReadUInt64();
}
break;
case Ttl:
if (this is IHasTtl hasTtl)
{
hasTtl.Ttl = reader.ReadInt32();
}
break;
case Protocol:
if (this is IHasProtocol hasProtocol)
{
hasProtocol.Protocol = reader.ReadString();
}
break;
case Filter:
if (this is IHasSubscriberFilter hasFilter)
{
hasFilter.Filter = reader.ReadString();
}
break;
case DataMessageType:
if (this is IHasDataMessageType hasDataMessageType)
{
hasDataMessageType.Type = (DataMessageType)reader.ReadInt32();
}
break;
case IsPartial:
if (this is IPartializable canPartial)
{
canPartial.IsPartial = reader.ReadBoolean();
}
break;
// todo : more optional fields
default:
// bypass unknown member.
reader.Skip();
break;
}
}
}