You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
3.9 KiB
162 lines
3.9 KiB
using Newtonsoft.Json.Linq;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CoreAgent.ProtocolClient.Models
|
|
{
|
|
/// <summary>
|
|
/// 源协议日志模型
|
|
/// </summary>
|
|
public record class SourceProtocolLog
|
|
{
|
|
/// <summary>
|
|
/// 消息ID
|
|
/// </summary>
|
|
[JsonProperty("message_id")]
|
|
public int? MessageId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 消息头信息
|
|
/// </summary>
|
|
[JsonProperty("headers")]
|
|
public string[]? Headers { get; set; }
|
|
|
|
/// <summary>
|
|
/// 消息内容
|
|
/// </summary>
|
|
[JsonProperty("message")]
|
|
public string Message { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时间戳
|
|
/// </summary>
|
|
[JsonProperty("time")]
|
|
public double? Time { get; set; }
|
|
|
|
/// <summary>
|
|
/// 日志明细
|
|
/// </summary>
|
|
[JsonProperty("logs")]
|
|
public JToken? Logs { get; set; }
|
|
|
|
/// <summary>
|
|
/// 初始化源协议日志的新实例
|
|
/// </summary>
|
|
public SourceProtocolLog(
|
|
string message,
|
|
string? type,
|
|
string? version,
|
|
double? time,
|
|
double? utc,
|
|
JToken? logs,
|
|
int? messageId,
|
|
string[]? headers)
|
|
{
|
|
Message = message;
|
|
Time = time;
|
|
Logs = logs;
|
|
MessageId = messageId ?? 0;
|
|
Headers = headers;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 源协议日志明细模型
|
|
/// </summary>
|
|
public class SourceProtocolLogDetail
|
|
{
|
|
/// <summary>
|
|
/// 源信息
|
|
/// </summary>
|
|
[JsonProperty("src")]
|
|
public string Src { get; set; }
|
|
|
|
/// <summary>
|
|
/// 索引
|
|
/// </summary>
|
|
[JsonProperty("idx")]
|
|
public int Idx { get; set; }
|
|
|
|
/// <summary>
|
|
/// 日志级别
|
|
/// </summary>
|
|
[JsonProperty("level")]
|
|
public int Level { get; set; }
|
|
|
|
/// <summary>
|
|
/// 方向
|
|
/// </summary>
|
|
[JsonProperty("dir")]
|
|
public string Dir { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时间戳
|
|
/// </summary>
|
|
[JsonProperty("timestamp")]
|
|
public long Timestamp { get; set; }
|
|
|
|
/// <summary>
|
|
/// 小区信息
|
|
/// </summary>
|
|
[JsonProperty("cell")]
|
|
public int? Cell { get; set; }
|
|
|
|
/// <summary>
|
|
/// 数据列表
|
|
/// </summary>
|
|
[JsonProperty("data")]
|
|
public List<string> Data { get; set; }
|
|
|
|
/// <summary>
|
|
/// 层信息
|
|
/// </summary>
|
|
[JsonProperty("layer")]
|
|
public string Layer { get; set; }
|
|
|
|
/// <summary>
|
|
/// UE标识
|
|
/// </summary>
|
|
[JsonProperty("ue_id")]
|
|
public int? UeId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 帧信息
|
|
/// </summary>
|
|
[JsonProperty("frame")]
|
|
public int? Frame { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时隙信息
|
|
/// </summary>
|
|
[JsonProperty("slot")]
|
|
public int? Slot { get; set; }
|
|
|
|
/// <summary>
|
|
/// 帧信息
|
|
/// </summary>
|
|
[JsonProperty("channel")]
|
|
public string? Channel { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时隙信息
|
|
/// </summary>
|
|
[JsonProperty("rnti")]
|
|
public int? Rnti { get; set; }
|
|
|
|
/// <summary>
|
|
/// 深拷贝当前对象
|
|
/// </summary>
|
|
public SourceProtocolLogDetail DeepClone()
|
|
{
|
|
// 通过序列化和反序列化实现深拷贝
|
|
var json = JsonConvert.SerializeObject(this);
|
|
return JsonConvert.DeserializeObject<SourceProtocolLogDetail>(json)
|
|
?? throw new InvalidOperationException("深拷贝失败,反序列化结果为 null");
|
|
}
|
|
}
|
|
}
|
|
|