This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace ShrinkNetwork
|
||||
{
|
||||
public readonly struct ShrinkRequestToken : IEquatable<ShrinkRequestToken>
|
||||
{
|
||||
public static readonly ShrinkRequestToken Default = new(0);
|
||||
|
||||
public ShrinkRequestToken(int value)
|
||||
{
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public int Value { get; }
|
||||
public bool IsDefault => Value == 0;
|
||||
|
||||
public bool Equals(ShrinkRequestToken other) => Value == other.Value;
|
||||
public override bool Equals(object? obj) => obj is ShrinkRequestToken other && Equals(other);
|
||||
public override int GetHashCode() => Value;
|
||||
public override string ToString() => Value.ToString();
|
||||
|
||||
public static bool operator ==(ShrinkRequestToken left, ShrinkRequestToken right) => left.Equals(right);
|
||||
public static bool operator !=(ShrinkRequestToken left, ShrinkRequestToken right) => !left.Equals(right);
|
||||
public static explicit operator int(ShrinkRequestToken token) => token.Value;
|
||||
public static explicit operator ShrinkRequestToken(int value) => new(value);
|
||||
}
|
||||
|
||||
public sealed class ShrinkRpcCallOptions
|
||||
{
|
||||
public int TimeoutMs { get; set; } = 10000;
|
||||
public string? RouteOverride { get; set; }
|
||||
public ShrinkRequestToken? RequestTokenOverride { get; set; }
|
||||
public string? DebugLabel { get; set; }
|
||||
public CancellationToken CancellationToken { get; set; } = default;
|
||||
}
|
||||
|
||||
public sealed class ShrinkRpcException : Exception
|
||||
{
|
||||
public int ErrorCode { get; }
|
||||
|
||||
public ShrinkRpcException(int errorCode, string message)
|
||||
: base(message)
|
||||
{
|
||||
ErrorCode = errorCode;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ShrinkRpcErrorCode
|
||||
{
|
||||
public const int Unknown = 1;
|
||||
public const int Timeout = 2;
|
||||
public const int Canceled = 3;
|
||||
public const int HandlerException = 4;
|
||||
public const int InvalidResponse = 5;
|
||||
public const int PermissionDenied = 6;
|
||||
public const int ConnectionClosed = 7;
|
||||
public const int ProtocolMismatch = 8;
|
||||
public const int AuthenticationFailed = 9;
|
||||
public const int SessionTokenExpired = 10;
|
||||
}
|
||||
|
||||
public abstract class ShrinkRpcResponseBase : IShrinkNetworkResponse
|
||||
{
|
||||
public int ErrorCode { get; set; }
|
||||
public string ErrorMessage { get; set; } = string.Empty;
|
||||
|
||||
public bool IsSuccess => ErrorCode == 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user