Files
ChunilENG/Packages/com.tivadar.best.mqtt/Runtime/MQTT/Packets/AuthenticationMessage.cs
정영민 2dd5d814a7 update
2025-02-20 09:59:37 +09:00

30 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using Best.HTTP.Shared.PlatformSupport.Memory;
namespace Best.MQTT.Packets
{
public readonly struct AuthenticationMessage
{
public readonly AuthReasonCodes ReasonCode;
public readonly string Reason;
public readonly string Method;
public readonly BufferSegment Data;
public readonly List<KeyValuePair<string, string>> UserProperties;
internal AuthenticationMessage(Packet packet)
{
this.ReasonCode = (AuthReasonCodes)packet.VariableHeaderFields[0].Integer;
this.Reason = packet.VariableHeaderFields.Properties.TryFindData(PacketProperties.ReasonString, Utils.DataTypes.UTF8String, out var data) ? data.UTF8String.Key : null;
this.Method = packet.VariableHeaderFields.Properties.TryFindData(PacketProperties.AuthenticationMethod, Utils.DataTypes.UTF8String, out data) ? data.UTF8String.Key : null;
this.Data = packet.VariableHeaderFields.Properties.TryFindData(PacketProperties.AuthenticationData, Utils.DataTypes.Binary, out data) ? data.Binary : BufferSegment.Empty;
this.UserProperties = packet.VariableHeaderFields.Properties.ConvertAll<KeyValuePair<string, string>>(PacketProperties.UserProperty, kvp_data => kvp_data.UTF8String);
}
}
}