protected abstract Task SubscribeAsyncImpl(Type messageType, Func <object, CancellationToken, Task> handler, SubscribeOptions subscribeOptions, CancellationToken cancellationToken);
public Task SubscribeAsync(Type messageType, Func <object, CancellationToken, Task> handler, SubscribeOptions subscribeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { if (!_options.AutoStart && _isRunning) { throw new CaraBusException("Should be stopped"); } Task SubFunc() => SubscribeAsyncImpl(messageType, handler, subscribeOptions ?? SubscribeOptions.NonExclusive(), cancellationToken); if (_options.AutoStart) { return(SubFunc()); } _subscribeActions.Add(SubFunc); return(Task.CompletedTask); }
public static Task SubscribeAsync <T>(this ICaraBus caraBus, Func <T, CancellationToken, Task> handler, SubscribeOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class { return(caraBus.SubscribeAsync(typeof(T), (message, token) => handler((T)message, token), options, cancellationToken)); }
public static void Subscribe <T>(this ICaraBus caraBus, Func <T, Task> handler, SubscribeOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class { caraBus.SubscribeAsync(typeof(T), (message, token) => handler((T)message), options, cancellationToken).ConfigureAwait(false).GetAwaiter().GetResult(); }
public static void Subscribe(this ICaraBus caraBus, Type messageType, Func <object, Task> handler, SubscribeOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { caraBus.SubscribeAsync(messageType, (message, token) => handler(message), options, cancellationToken).ConfigureAwait(false).GetAwaiter().GetResult(); }
public static void Subscribe(this ICaraBus caraBus, Type messageType, Action <object> handler, SubscribeOptions options = null) { caraBus.SubscribeAsync(messageType, (message, token) => { handler(message); return(Task.CompletedTask); }, options).ConfigureAwait(false).GetAwaiter().GetResult(); }