Files
masiton 9b5a0d7ea5
All checks were successful
Pack and Push NuGet Package / publish (push) Successful in 43s
SubscriptionClient carried over.
2025-07-05 04:38:31 +02:00

52 lines
1.3 KiB
C#

using MessengerApi.Model.Messages;
namespace MessengerApi.Model
{
/// <summary>
/// See <see cref="SubscriptionClient"/> if you need to subscribe. It will give you one of these upon subscribing.
/// Also see <see cref="OnMessage"/> for what happens where you actually receive message for this sub.
/// </summary>
public class Subscription : IDisposable
{
public string MessageTypeMask { get; private set; }
public event EventHandler<InboxMessage> OnMessage;
internal SubscriptionClient client;
private bool isDisposed;
internal Subscription(string messageTypeMask, SubscriptionClient client)
{
MessageTypeMask = messageTypeMask;
this.client = client;
}
internal void Message(InboxMessage message)
{
OnMessage?.Invoke(this, message);
}
public void Dispose()
{
if (isDisposed)
{
return;
}
AssertNotDisposedOrThrow();
client.Unsubscribe(this);
Dispose();
isDisposed = true;
}
private void AssertNotDisposedOrThrow()
{
if (isDisposed)
{
throw new ObjectDisposedException(MessageTypeMask);
}
}
}
}