protected virtual void LoadServiceAndServiceAgents() { // add here necessary stuff to the container var unityContainer = Container.Resolve <IUnityContainer>(); var canalDirectServiceAgent = new CanalDirectServiceAgent(); var configurationDirectServiceAgent = new ConfigurationDirectServiceAgent(); var canalFlowService = new CanalFlowService(); var configurationService = new ConfigurationService(); var canalManager = new CanalManager(); var configurationLoader = new CanalConfigurationLoader(); var sequenceTaskScheduler = new SequenceTaskScheduler(); unityContainer.RegisterInstance <ICanalServiceAgent>(canalDirectServiceAgent); unityContainer.RegisterInstance <IConfigurationServiceAgent>(configurationDirectServiceAgent); unityContainer.RegisterInstance <ICanalFlowService>(canalFlowService); unityContainer.RegisterInstance <IConfigurationService>(configurationService); unityContainer.RegisterInstance <ICanalManager>(canalManager); unityContainer.RegisterInstance <ICanalConfigurationLoader>(configurationLoader); unityContainer.RegisterInstance(sequenceTaskScheduler); // build up everything unityContainer.BuildUp(canalDirectServiceAgent); unityContainer.BuildUp(configurationDirectServiceAgent); unityContainer.BuildUp(canalFlowService); unityContainer.BuildUp(configurationService); unityContainer.BuildUp(configurationLoader); // register for start/connect/etc }
public EventPatternTest(SequenceTaskScheduler scheduler) { Scheduler = scheduler; }
/// <summary> /// Queues an AsyncEventHandler invocation to the SequenceTokenWorkDispatcher. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="eventHandler">The event handler.</param> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> /// <param name="dispatcher">The dispatcher.</param> /// <param name="tokens">The tokens.</param> public static void RaiseQueued <T>(this AsyncEventHandler <T> eventHandler, object sender, T args, SequenceTaskScheduler dispatcher, params object[] tokens) { // queue a task that produces a var task = new Task <Task>(async() => { await eventHandler.RaiseAsync(sender, args); }); dispatcher.EnqueueWorkAsync(task, tokens).ObserveExceptions(); }