Example #1
0
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public static void Main()
        {
            ThreadPool.SetMinThreads(Environment.ProcessorCount * 2, 0);
            Console.WriteLine("Welcome to the pasta pricer (powered by the Michonne library).");
            Console.WriteLine("Conflation Y/N?");
            var  option            = Console.ReadLine();
            bool conflationEnabled = false;

            if (option.ToUpper().StartsWith("Y"))
            {
                conflationEnabled = true;
                Console.WriteLine("Conflation enabled!\n");
            }
            else
            {
                Console.WriteLine("NO Conflation\n");
            }

            Console.WriteLine("         Type 'Enter' to start market data inputs.");
            Console.WriteLine("         Then type 'Enter' again, to stop market data inputs.");

            Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.DarkGray;

            var publisher = new ConsolePastaPricerPublisher();

            var marketDataProvider = new AggresiveMarketDataProvider(aggressionFactor: 10, timerPeriodInMsec: 1);

            var unitOfExecutionsFactory = new UnitOfExecutionsFactory();

            ThreadPool.SetMaxThreads(Environment.ProcessorCount * 2, 0);
            ThreadPool.SetMinThreads(Environment.ProcessorCount * 2, 0);

            var pastaPricer = new PastaPricerEngine(unitOfExecutionsFactory.GetPool(), RecipeHelper.GenerateConfigurations(), marketDataProvider, publisher, conflationEnabled);

            pastaPricer.Start();

            // Turns on market data
            marketDataProvider.Start();

            Console.ReadLine();

            Console.WriteLine("----------------\nMarket data is stopping.\n----------------\n");

            marketDataProvider.Stop();
            publisher.CountPublish();

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("----------------\nMarket data stopped. Wait a while, and type 'Enter' to exit.\n----------------\n");

            Console.ReadLine();

            Console.WriteLine("{0} late prices have been published since we stopped the market data.", publisher.PublicationCounter);

            Console.WriteLine("Type Enter to exit the program.");

            Console.ReadLine();
        }
Example #2
0
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public static void Main(string[] args)
        {
            Console.WriteLine("Welcome to the pasta pricer (powered by the Michonne library).");
            Console.WriteLine("Conflation Y/N?");
            var option = Console.ReadLine();
            bool conflationEnabled = false;

            if (option.ToUpper().StartsWith("Y"))
            {
                conflationEnabled = true;
                Console.WriteLine("Conflation enabled!\n");
            }
            else
            {
                Console.WriteLine("NO Conflation\n");
            }

            Console.WriteLine("         Type 'Enter' to start market data inputs.");
            Console.WriteLine("         Then type 'Enter' again, to stop market data inputs.");

            Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.DarkGray;

            var publisher = new ConsolePastaPricerPublisher();

            var marketDataProvider = new AggresiveMarketDataProvider(aggressionFactor: 50, timerPeriodInMsec:2);

            //var marketDataProvider = new MarketDataProvider();
            var pastasConfiguration = new[]
                                      {
                                          "gnocchi(eggs-potatoes-flour)",
                                          "spaghetti(eggs-flour)",
                                          "organic spaghetti(organic eggs-flour)",
                                          "spinach farfalle(eggs-flour-spinach)",
                                          "tagliatelle(eggs-flour)",
                                      };

            var unitOfExecutionsFactory = new UnitOfExecutionsFactory();

            var pastaPricer = new PastaPricerEngine(unitOfExecutionsFactory.GetPool(), pastasConfiguration, marketDataProvider, publisher, conflationEnabled);
            pastaPricer.Start();

            // Turns on market data
            marketDataProvider.Start();

            Console.ReadLine();

            Console.WriteLine("----------------\nMarket data is stopping.\n----------------\n");

            marketDataProvider.Stop();
            publisher.CountPublish();

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("----------------\nMarket data stopped. Wait a while, and type 'Enter' to exit.\n----------------\n");

            Console.ReadLine();

            Console.WriteLine("{0} late prices have been published since we stopped the market data.", publisher.PublicationCounter);

            Console.WriteLine("Type Enter to exit the program.");
        }