private bool HandleActivity(PersistentQueueProcessor <ActivityWithTarget> queue, ActivityWithTarget activity)
        {
            bool result;

            try
            {
                ActivitySubscriber subscriber;
                if (this.activitySubscribers.TryGetValue(activity.Target, out subscriber) && subscriber.Enabled)
                {
                    result = subscriber.HandleActivity(new Activity[]
                    {
                        activity.Activity
                    });
                }
                else
                {
                    result = true;
                }
            }
            catch (Exception ex)
            {
                LoggerWrapper.Logger.Error("MultiSubscriberActivityDispatcher", ex);
                result = false;
            }
            return(result);
        }
 public AbstractActivityDispatcher(ActivitySubscriberConfig subscriberConfig)
 {
     Guard.ArgumentNotNull <ActivitySubscriberConfig>(subscriberConfig);
     Guard.ArgumentNotEmpty(subscriberConfig.Name);
     this.Name           = subscriberConfig.Name;
     this.Enabled        = subscriberConfig.Enabled;
     this.activityFilter = new ActivityFilterList(subscriberConfig.ActivityFilters);
     this.activityQueue  = new PersistentQueueProcessor <Activity>(subscriberConfig.Name, TryHandleActivity);
     if (this.Enabled)
     {
         this.activityQueue.Start();
     }
 }
        private bool TryHandleActivity(PersistentQueueProcessor <Activity> queue, Activity activity)
        {
            bool result;

            try
            {
                result = this.HandleActivity(queue, activity);
            }
            catch (Exception ex)
            {
                LoggerWrapper.Logger.Error("AbstractActivityDispatcher", ex);
                result = false;
            }
            return(result);
        }
 protected abstract bool HandleActivity(PersistentQueueProcessor <Activity> queue, Activity activity);
 public MultiSubscriberActivityDispatcher()
 {
     this.BuildActivitySubscribers();
     this.activityQueue = new PersistentQueueProcessor <ActivityWithTarget>(this.Name, new PersistentQueueProcessor <ActivityWithTarget> .QueueItemHandler(this.HandleActivity));
     this.activityQueue.Start();
 }