This commit is contained in:
2026-01-18 17:59:01 +08:00
parent ef2e821611
commit b9daa46b0a
22 changed files with 1048 additions and 0 deletions

59
Models/Msg.cs Normal file
View File

@@ -0,0 +1,59 @@
namespace CatLink.Models
{
public class Msg
{
public int Version { get; set; } = 1;
public int Cmd { get; set; }
public int Proto { get; set; }
public int Sid { get; set; }
public uint Src { get; set; }
public ushort SrcPort { get; set; }
public uint Dst { get; set; }
public ushort DstPort { get; set; }
public string? Data { get; set; }
public static Msg FromString(string line)
{
if (string.IsNullOrWhiteSpace(line))
{
throw new ArgumentException("Line cannot be null or empty", nameof(line));
}
var parts = line.Split(',');
var msg = new Msg();
if (parts.Length > 0 && !string.IsNullOrWhiteSpace(parts[0])) msg.Version = int.Parse(parts[0]);
if (parts.Length > 1 && !string.IsNullOrWhiteSpace(parts[1])) msg.Cmd = int.Parse(parts[1]);
if (parts.Length > 2 && !string.IsNullOrWhiteSpace(parts[2])) msg.Proto = int.Parse(parts[2]);
if (parts.Length > 3 && !string.IsNullOrWhiteSpace(parts[3])) msg.Sid = int.Parse(parts[3]);
if (parts.Length > 4 && !string.IsNullOrWhiteSpace(parts[4])) msg.Src = uint.Parse(parts[4]);
if (parts.Length > 5 && !string.IsNullOrWhiteSpace(parts[5])) msg.SrcPort = ushort.Parse(parts[5]);
if (parts.Length > 6 && !string.IsNullOrWhiteSpace(parts[6])) msg.Dst = uint.Parse(parts[6]);
if (parts.Length > 7 && !string.IsNullOrWhiteSpace(parts[7])) msg.DstPort = ushort.Parse(parts[7]);
if (parts.Length > 16 && !string.IsNullOrWhiteSpace(parts[16])) msg.Data = parts[16];
return msg;
}
public override string ToString()
{
return $"{Version},{Cmd},{Proto},{Sid},{Src},{SrcPort},{Dst},{DstPort},,,,,,,,,,{Data}";
}
public Msg CloneWithNewData(string? newData)
{
return new Msg
{
Version = Version,
Cmd = Cmd,
Proto = Proto,
Sid = Sid,
Src = Src,
SrcPort = SrcPort,
Dst = Dst,
DstPort = DstPort,
Data = newData
};
}
}
}