Exemple #1
0
        //--- 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}");
            }
        }
Exemple #2
0
        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}");
            }
        }
Exemple #3
0
        public async ValueTask DisposeAsync()
        {
            await DisableSubscriptionAsync();

            Status = EventBusSubscriptionStatus.Disposed;
        }