//--- Methods --- public async Task EnableSubscriptionAsync() { switch (Status) { case EventBusSubscriptionStatus.Enabled: // nothing to do break; case EventBusSubscriptionStatus.Disabled: await _client.OpenConnectionAsync(); // update state and notify event bus Status = EventBusSubscriptionStatus.Enabled; await _client.EnableSubscriptionAsync(this); break; case EventBusSubscriptionStatus.Disposed: throw new ObjectDisposedException(Name); case EventBusSubscriptionStatus.Error: throw new InvalidOperationException("EventBus subscription is in Error state"); default: throw new InvalidOperationException($"Unexpected status: {Status}"); } }
public async Task DisableSubscriptionAsync() { switch (Status) { case EventBusSubscriptionStatus.Enabled: // update state and notify event bus Status = EventBusSubscriptionStatus.Disabled; await _client.DisableSubscriptionAsync(this); break; case EventBusSubscriptionStatus.Disabled: case EventBusSubscriptionStatus.Disposed: case EventBusSubscriptionStatus.Error: // nothing to do return; default: throw new InvalidOperationException($"Unexpected status: {Status}"); } }
public async ValueTask DisposeAsync() { await DisableSubscriptionAsync(); Status = EventBusSubscriptionStatus.Disposed; }