public Task <IAsyncDisposable> RegisterSubscriber(object instance, ISubscriberRegistrationInterceptor interceptor) { return(AggregateSubscriberEventHandlers(instance, interceptor)); }
private Task <IAsyncDisposable> AggregateSubscriberEventHandlers(object instance, ISubscriberRegistrationInterceptor interceptor) { if (instance == null) { throw new ArgumentNullException(nameof(instance)); } IEnumerable <Type> typesToExplore = GetTypesToExplore(instance); List <Task <IAsyncDisposable> > tasks = new List <Task <IAsyncDisposable> >(); foreach (Type type in typesToExplore) { foreach (MethodInfo method in type.GetPublicInstanceMethods()) { if (interceptor.IsSubscriberHandler(method)) { string topicUri = interceptor.GetTopicUri(method); SubscribeOptions subscribeOptions = interceptor.GetSubscribeOptions(method); IWampTopicProxy topicProxy = mProxy.TopicContainer.GetTopicByUri(topicUri); IWampRawTopicClientSubscriber methodInfoSubscriber = new MethodInfoSubscriber(instance, method, topicUri); Task <IAsyncDisposable> task = topicProxy.Subscribe(methodInfoSubscriber, subscribeOptions); tasks.Add(task); } } } Task <IAsyncDisposable> result = tasks.ToAsyncDisposableTask(); return(result); }
public Task <IAsyncDisposable> RegisterSubscriber(object instance, ISubscriberRegistrationInterceptor interceptor) { return(mSubscriberRegistrar.RegisterSubscriber(instance, interceptor)); }