Extract INatsClient interface from NatsClient to enable internal clients (SYSTEM, ACCOUNT) to participate in the subscription system without requiring a socket connection. Change Subscription.Client from concrete NatsClient to INatsClient, keeping IMessageRouter and RemoveClient using the concrete type since only socket clients need those paths.
20 lines
544 B
C#
20 lines
544 B
C#
using NATS.Server.Auth;
|
|
using NATS.Server.Protocol;
|
|
|
|
namespace NATS.Server;
|
|
|
|
public interface INatsClient
|
|
{
|
|
ulong Id { get; }
|
|
ClientKind Kind { get; }
|
|
bool IsInternal => Kind.IsInternal();
|
|
Account? Account { get; }
|
|
ClientOptions? ClientOpts { get; }
|
|
ClientPermissions? Permissions { get; }
|
|
|
|
void SendMessage(string subject, string sid, string? replyTo,
|
|
ReadOnlyMemory<byte> headers, ReadOnlyMemory<byte> payload);
|
|
bool QueueOutbound(ReadOnlyMemory<byte> data);
|
|
void RemoveSubscription(string sid);
|
|
}
|