Files
MoShiro/backend/fleet/src/Fleet.Core/ErrorCode.cs
T
justme 1ff847e45a
ci/woodpecker/push/main-amd64-build Pipeline was successful
feat: declare every protocol method's direction and enforce it in the router; add the zero-trust design [CI]
Methods, roles and binary channels are declared in one table per plane (node and peer). RpcRouter checks direction, kind and role when handlers are registered, when messages arrive (fleet_protocol_violation, disconnect after repeated violations) and before sending. NodeConnection is split by responsibility.
2026-10-07 16:17:02 +08:00

31 lines
1.7 KiB
C#

namespace Fleet.Core;
/// <summary>
/// 错误码:snake_case 字符串。框架的错误码以 <c>fleet_</c> 开头,产品可以扩展自己的错误码。
/// </summary>
public readonly record struct ErrorCode(string Value)
{
public override string ToString() => Value;
}
public static class FleetErrors
{
public static readonly ErrorCode Unauthorized = new("fleet_unauthorized");
public static readonly ErrorCode Forbidden = new("fleet_forbidden");
public static readonly ErrorCode Unsupported = new("fleet_unsupported");
/// <summary>方法没有声明、方向不对、类型不对或角色不允许:对方违反了协议。</summary>
public static readonly ErrorCode ProtocolViolation = new("fleet_protocol_violation");
public static readonly ErrorCode InvalidParams = new("fleet_invalid_params");
public static readonly ErrorCode NotFound = new("fleet_not_found");
public static readonly ErrorCode Internal = new("fleet_internal");
public static readonly ErrorCode Timeout = new("fleet_timeout");
public static readonly ErrorCode NodeOffline = new("fleet_node_offline");
public static readonly ErrorCode NodePending = new("fleet_node_pending");
public static readonly ErrorCode NodeDisabled = new("fleet_node_disabled");
public static readonly ErrorCode NameConflict = new("fleet_name_conflict");
public static readonly ErrorCode JoinTokenInvalid = new("fleet_join_token_invalid");
public static readonly ErrorCode JoinTokenExpired = new("fleet_join_token_expired");
public static readonly ErrorCode ProofInvalid = new("fleet_proof_invalid");
public static readonly ErrorCode FrameTooLarge = new("fleet_frame_too_large");
}