using System; using System.Threading; using Cysharp.Threading.Tasks; namespace MessagePipe { public interface IDistributedPublisher { UniTask PublishAsync(TKey key, TMessage message, CancellationToken cancellationToken = default); } public interface IDistributedSubscriber { UniTask SubscribeAsync(TKey key, IMessageHandler handler, CancellationToken cancellationToken = default); UniTask SubscribeAsync(TKey key, IMessageHandler handler, MessageHandlerFilter[] filters, CancellationToken cancellationToken = default); UniTask SubscribeAsync(TKey key, IAsyncMessageHandler handler, CancellationToken cancellationToken = default); UniTask SubscribeAsync(TKey key, IAsyncMessageHandler handler, AsyncMessageHandlerFilter[] filters, CancellationToken cancellationToken = default); } }