This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
|
||||
namespace ShrinkNetwork
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
|
||||
public sealed class ShrinkNetworkMessageAttribute : Attribute
|
||||
{
|
||||
public int Opcode { get; }
|
||||
public string? Route { get; }
|
||||
|
||||
public ShrinkNetworkMessageAttribute(int opcode, string? route = null)
|
||||
{
|
||||
Opcode = opcode;
|
||||
Route = string.IsNullOrWhiteSpace(route) ? null : route.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
|
||||
public sealed class ShrinkNetworkSubscriberAttribute : Attribute
|
||||
{
|
||||
}
|
||||
|
||||
public enum ShrinkNetworkStateSyncRole
|
||||
{
|
||||
JoinRequest = 0,
|
||||
JoinResponse = 1,
|
||||
Command = 2,
|
||||
StateDelta = 3,
|
||||
LeaveNotice = 4,
|
||||
Heartbeat = 5
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
|
||||
public sealed class ShrinkNetworkStateSyncAttribute : Attribute
|
||||
{
|
||||
public string Group { get; }
|
||||
public ShrinkNetworkStateSyncRole Role { get; }
|
||||
|
||||
public ShrinkNetworkStateSyncAttribute(string group, ShrinkNetworkStateSyncRole role)
|
||||
{
|
||||
Group = string.IsNullOrWhiteSpace(group) ? string.Empty : group.Trim();
|
||||
Role = role;
|
||||
}
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
|
||||
public sealed class ShrinkNetworkSubscribeAttribute : Attribute
|
||||
{
|
||||
public ShrinkNetworkAuthority Authority { get; set; } = ShrinkNetworkAuthority.Any;
|
||||
public string? Permission { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user