示例#1
0
 protected abstract Task SubscribeAsyncImpl(Type messageType, Func <object, CancellationToken, Task> handler, SubscribeOptions subscribeOptions, CancellationToken cancellationToken);
示例#2
0
        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);
        }
示例#3
0
 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));
 }
示例#4
0
 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();
 }
示例#5
0
 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();
 }
示例#6
0
 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();
 }