in src/Microsoft.Azure.SignalR.Serverless.Protocols/Internal/MessagePackReaderExtensions.cs [75:104]
public static object? ReadObject(ref this MessagePackReader reader, string field)
{
switch (reader.NextMessagePackType)
{
case MessagePackType.Binary: return reader.ReadBytes().GetValueOrDefault().ToArray();
case MessagePackType.Integer: return reader.ReadInt64();
case MessagePackType.Boolean: return reader.ReadBoolean();
case MessagePackType.Float: return reader.ReadDouble();
case MessagePackType.String: return reader.ReadString();
case MessagePackType.Array: return reader.ReadArray(field);
case MessagePackType.Map:
var propertyCount = reader.ReadMapHeader();
var map = new Dictionary<string, object?>();
for (var i = 0; i < propertyCount; i++)
{
var key = reader.ReadString().ThrowWhenNull();
var value = reader.ReadObject(field);
map[key] = value;
}
return map;
case MessagePackType.Nil:
reader.ReadNil();
return null;
case MessagePackType.Extension:
case MessagePackType.Unknown:
default:
return null;
}
}