コード例 #1
0
 public Market()
 {
     Vehicles           = new List <Vehicle>();
     DispatcherSettings = new DispatcherSettings();
     MarketTariff       = new Tariff();
     Region             = new MapRegion();
 }
コード例 #2
0
 private static DispatcherSettings ConfigureDispatcherFor(string dispatcherId)
 {
     var dispatcherSettings = new DispatcherSettings
     {
         DispatcherId = DispatcherId.FromString(dispatcherId),
         DispatcherLifeSpan = new DispatcherLifeSpan
         {
             Mode = DispatcherLifeSpanMode.UntilTimedOut,
             Timeout = TimeSpan.FromSeconds(30)
         },
         IntervalForCheckingUnfinishedJobs = TimeSpan.FromMilliseconds(800),
         MaximumNumberOfProcessingJobs = 1,
     };
     var jobConfiguration = new JobConfiguration
     {
         JobAndWorkerType =
         {
             JobType = RuntimeType.From(typeof (SampleJob)),
             WorkerType = RuntimeType.From(typeof (SampleWorker))
         },
         RequestMaxAttempts = 3,
         RequestTimeout = TimeSpan.FromSeconds(10)
     };
     dispatcherSettings.JobConfigurations.Add(jobConfiguration);
     return dispatcherSettings;
 }
コード例 #3
0
        public void Initialize(DispatcherSettings settings)
        {
            try
            {
                if (!DependencyResolver.IsInitialized)
                    throw new InvalidOperationException("The DependencyResolver must be initialized before initializing the Dispatcher!");

                settings.Validate();

                Repository = new DispatcherRepository(settings);
                Repository.SubscribeToPoisonPill(TakePoisonPill);
                Repository.SubscribeToPendingJobs(ReceiveJob);
                Repository.StartSendingLifeSignal();

                StartCheckingIfDispatcherShouldBeKeptAliveThatMuchTimeAfterInitialized();

                ConfirmInitialization();

                IsDisposed = false;
            }
            catch (Exception e)
            {
                Log.Error(e, "Could not initialize the Dispatcher.");
                throw new InvalidOperationException("Could not initialize the Dispatcher.", e);
            }
        }
        public void TestWriteToXmlAndReadFromXmlOnDispatcherSettings()
        {
            DependencyResolver.Reset();
            DependencyResolver.Initialize();
            
            var dispatcherSettings = DummyDispatcherSettings();

            var firstWrite = new XmlDocument();
            firstWrite.AppendChild(firstWrite.CreateElement("DispatcherSettings"));
            dispatcherSettings.WriteTo(firstWrite.DocumentElement);

            var anotherDispatcherSettings = new DispatcherSettings();
            anotherDispatcherSettings.ReadFrom(firstWrite.DocumentElement);

            var secondWrite = new XmlDocument();
            secondWrite.AppendChild(secondWrite.CreateElement("DispatcherSettings"));
            anotherDispatcherSettings.WriteTo(secondWrite.DocumentElement);

            var firstString = new StringBuilder();
            var firstText = XmlWriter.Create(firstString);
            firstWrite.Save(firstText);

            var secondString = new StringBuilder();
            var secondText = XmlWriter.Create(secondString);
            secondWrite.Save(secondText);

            secondString.ToString().Should().BeEquivalentTo(firstString.ToString());
        }
 public DispatcherRepository(DispatcherSettings settings)
 {
     Settings = settings;
     SubscriptionBus = DependencyResolver.Get<ISubscriptionBus>();
     PublishingBus = DependencyResolver.Get<IPublishingBus>();
     ReceivingBus = DependencyResolver.Get<IReceivingBus>();
     RequestBus = DependencyResolver.Get<IRequestBus>();
     SendingBus = DependencyResolver.Get<ISendingBus>();
     ResponseBus = DependencyResolver.Get<IResponseBus>();
 }
 private static DispatcherSettings DummyDispatcherSettings()
 {
     var dispatcherSettings = new DispatcherSettings
     {
         DispatcherId = DispatcherId.FromString("MyDispatcherId"),
         IntervalForCheckingUnfinishedJobs = TimeSpan.FromMilliseconds(999),
         MaximumNumberOfProcessingJobs = 9
     };
     dispatcherSettings.JobConfigurations.Add(JobConfigurationTests.DummyJobConfiguration());
     dispatcherSettings.JobConfigurations.Add(JobConfigurationTests.DummyJobConfiguration());
     dispatcherSettings.JobConfigurations.Add(JobConfigurationTests.DummyJobConfiguration());
     return dispatcherSettings;
 }
        protected virtual void LaunchComputationalUnit(DispatcherSettings settings)
        {
            var dispatcherSettingsFileName = Path.GetTempFileName();
            using (var stream = new FileStream(dispatcherSettingsFileName, FileMode.Create, FileAccess.Write))
            {
                settings.SaveTo(stream);
            }

            var showConsoleWindow = Configuration.ConfigurationFiles.Settings.ReactiveServices.ShowConsoleWindow;

            new Process().Start(
                ComputationalUnitExeName, 
                ComputationalUnitArgumentsFor(dispatcherSettingsFileName), 
                showConsoleWindow,
                settings.RequireAdministratorPriviledges
                );
        }
コード例 #8
0
        public static DispatcherSettings Build()
        {
            var settings = new DispatcherSettings();

            var configuration = new JobConfiguration
            {
                JobAndWorkerType =
                {
                    JobType = RuntimeType.From(typeof (DummyJob)),
                    WorkerType = RuntimeType.From(typeof (DummyWorker))
                },
                RequestMaxAttempts = 3,
                RequestTimeout = TimeSpan.FromSeconds(10)
            };

            settings.JobConfigurations.Add(configuration);

            settings.IntervalForCheckingUnfinishedJobs = TimeSpan.FromMilliseconds(800);

            return settings;
        }
コード例 #9
0
        private static void Load(string settingsFileName)
        {
            var settings = new DispatcherSettings();

            try
            {
                //System.Threading.Thread.Sleep(3000);//DEBUG

                if (File.Exists(settingsFileName))
                {
                    using (var stream = new FileStream(settingsFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                        settings.LoadFrom(stream);
                }
                else
                {
                    var errorMessage = String.Format("Invalid script file: {0}", settingsFileName);
                    Log.Info(errorMessage);
                    Console.WriteLine(errorMessage);
                    return;
                }

                settings.Validate();

                Dispatcher = new Dispatcher();
                Dispatcher.Disposed += (s, e) =>
                {
                    Environment.Exit(0);
                };

                Dispatcher.Initialize(settings);
            }
            catch (Exception ex)
            {
                var errorMessage = String.Format("Could not load Computational Unit for {0}!", settings.DispatcherId);
                Log.Error(ex, errorMessage);
                Console.WriteLine(errorMessage);
                Environment.Exit(0);
            }
        }
コード例 #10
0
 public CompanyMarketSettingsResponse()
 {
     DispatcherSettings = new DispatcherSettings();
 }
コード例 #11
0
        internal void ConfigureBaseSettingsForMultipleDispatchers(int numberOfDispatchers)
        {
            for (var i = 0; i < numberOfDispatchers; i++)
            {
                var settings = new DispatcherSettings
                {
                    //DispatcherId = DispatcherId.FromString("Dispatcher" + i.ToString("00")),
                    DispatcherId = DispatcherId.FromString(String.Format("WorkDispatcher_{0}_{1}", i, Guid.NewGuid())),
                    IntervalForCheckingUnfinishedJobs = TimeSpan.FromMilliseconds(800),
                    MaximumNumberOfProcessingJobs = 1
                };

                ListOfSettingsForMultipleDispatchers.Add(settings);
            }
        }
コード例 #12
0
        internal void ConfigureConnectionsForAnotherWorkDispatcher()
        {
            AnotherSettings = new DispatcherSettings
            {
                DispatcherId = DispatcherId.FromString(String.Format("AnotherWorkDispatcher_{0}", Guid.NewGuid())),
                IntervalForCheckingUnfinishedJobs = TimeSpan.FromMilliseconds(800),
                MaximumNumberOfProcessingJobs = 10
            };

            DeleteQueuesAndExchanges();
        }
 public void Launch(DispatcherSettings settings)
 {
     RegisterLaunchRequestFor(settings.DispatcherId);
     LaunchComputationalUnit(settings);
 }
        protected override void LaunchComputationalUnit(DispatcherSettings settings)
        {
            var dispatcher = new Dispatcher();
            dispatcher.Initialize(settings);

            /*
             * Atention: 
             * These dispatcher continue to live after the InProcessDispatcherLauncher is disposed
             * They will be disposed only after they receive a poison pill
             */
        }
 public DispatcherSettings AddDispatcherConfiguration(string dispatcherId)
 {
     var dispatcherSettings = new DispatcherSettings
     {
         DispatcherId = DispatcherId.FromString(dispatcherId)
     };
     DispatcherSettings.Add(dispatcherSettings);
     return dispatcherSettings;
 }
        public void ReadFrom(XmlElement bootstrapSettingsElement)
        {
            //LaunchTimeout
            if (bootstrapSettingsElement.HasAttribute("LaunchTimeout"))
            {
                int launchTimeout;
                LaunchTimeout = Int32.TryParse(bootstrapSettingsElement.GetAttribute("LaunchTimeout"), out launchTimeout)
                    ? TimeSpan.FromMilliseconds(launchTimeout)
                    : TimeSpan.FromSeconds(30);
            }

            //DispatcherSettings
            var dispatchersElements = bootstrapSettingsElement.GetElementsByTagName("Dispatchers")[0].ChildNodes;
            foreach (XmlElement dispatcherSettingsElement in dispatchersElements)
            {
                var dispatcherSettings = new DispatcherSettings();
                dispatcherSettings.ReadFrom(dispatcherSettingsElement);
                DispatcherSettings.Add(dispatcherSettings);
            }

            //BootstrapJobs
            var bootstrapSettingsElementsExists =
                bootstrapSettingsElement.GetElementsByTagName("BootstrapJobs").Count == 1 &&
                bootstrapSettingsElement.GetElementsByTagName("BootstrapJob").Count > 0;

            if (!bootstrapSettingsElementsExists) 
                return;
            var bootstrapJobsElements =
                bootstrapSettingsElement.GetElementsByTagName("BootstrapJobs")[0].ChildNodes;
            foreach (XmlElement bootstrapJobElement in bootstrapJobsElements)
            {
                var bootstrapJob = new BootstrapJob();
                bootstrapJob.ReadFrom(bootstrapJobElement);
                BootstrapJobs.Add(bootstrapJob);
            }
        }