public static async Task MonitorReader(IReader reader, IHandleStateChanged <ReaderStateChanged> handler) { await Task.Yield(); var state = ReaderState.Disconnected; while (!reader.IsFinalState(state)) { var stateChanged = await reader.StateChangedFrom(state, handler.CancellationToken).ConfigureAwait(false); state = stateChanged.ReaderState; try { await handler.OnStateChanged(stateChanged, handler.CancellationToken).ConfigureAwait(false); } catch { // Ignore } } }
public IReaderBuilder <TMessage> StateChangedHandler(IHandleStateChanged <ReaderStateChanged> handler) { _stateChangedHandler = handler; return(this); }
public IProducerBuilder StateChangedHandler(Func <ProducerStateChanged, CancellationToken, ValueTask> handler, CancellationToken cancellationToken) { _stateChangedHandler = new FuncStateChangedHandler <ProducerStateChanged>(handler, cancellationToken); return(this); }
public IProducerBuilder StateChangedHandler(Action <ProducerStateChanged, CancellationToken> handler, CancellationToken cancellationToken) { _stateChangedHandler = new ActionStateChangedHandler <ProducerStateChanged>(handler, cancellationToken); return(this); }
public IProducerBuilder StateChangedHandler(IHandleStateChanged <ProducerStateChanged> handler) { _stateChangedHandler = handler; return(this); }
public IConsumerBuilder StateChangedHandler(IHandleStateChanged <ConsumerStateChanged> handler) { _stateChangedHandler = handler; return(this); }