Files
MoShiro/backend/shared/MoShiro.Protocol/Ids/MoShiroIds.cs
T
justme f4aa3f2482 docs: audit the docs, merge the Fleet docs into backend/fleet/README.md and add TODO.md [CI SKIP]
Drop the unimplemented fleet updater design, the stale project-layout sections and broken references, fix the API table, and rename the four Monitor*.cs files left over from the rename.
2026-10-07 03:29:05 +08:00

72 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Text.Json.Serialization;
using Fleet.Core;
namespace MoShiro.Protocol;
[JsonConverter(typeof(ProbeIdJsonConverter))]
public readonly record struct ProbeId(string Value)
{
public const string Prefix = "prb";
public override string ToString() => Value;
}
[JsonConverter(typeof(TaskIdJsonConverter))]
public readonly record struct TaskId(string Value)
{
public const string Prefix = "tsk";
public override string ToString() => Value;
}
[JsonConverter(typeof(TestIdJsonConverter))]
public readonly record struct TestId(string Value)
{
public const string Prefix = "tst";
public override string ToString() => Value;
}
/// <summary>原始块 ID(UUIDv7,同时是发件箱的 msg_id)。</summary>
[JsonConverter(typeof(ChunkIdJsonConverter))]
public readonly record struct ChunkId(Guid Value)
{
public static ChunkId New(TimeProvider time) => new(Guid.CreateVersion7(time.GetUtcNow()));
public override string ToString() => Value.ToString();
}
public static class AgentIds
{
/// <summary>Agent 就是 Fleet 节点,ID 前缀为 <c>agt</c>。</summary>
public const string Prefix = "agt";
}
public sealed class ProbeIdJsonConverter : StringIdJsonConverter<ProbeId>
{
protected override ProbeId Create(string value) => new(value);
protected override string GetValue(ProbeId id) => id.Value;
}
public sealed class TaskIdJsonConverter : StringIdJsonConverter<TaskId>
{
protected override TaskId Create(string value) => new(value);
protected override string GetValue(TaskId id) => id.Value;
}
public sealed class TestIdJsonConverter : StringIdJsonConverter<TestId>
{
protected override TestId Create(string value) => new(value);
protected override string GetValue(TestId id) => id.Value;
}
public sealed class ChunkIdJsonConverter : StringIdJsonConverter<ChunkId>
{
protected override ChunkId Create(string value) => new(Guid.Parse(value));
protected override string GetValue(ChunkId id) => id.Value.ToString();
}