示例#1
0
        /// <summary>
        /// Determines mode and starts process-pair mechanisms
        /// </summary>
        /// <param name="args"> Command line arguments, indicate mode </param>
        /// <param name="form"> The actual window </param>
        public Regulator(string[] args, Form1 form)
        {
            m_started = false;
            m_form    = form;
            if (args.Length == 1)
            {   // backup cmd parameters: <tcpport>
                m_disp              = null;
                m_proc              = new BackupProcessNotifier(Convert.ToInt32(args[0]));
                m_proc.ProcessDied += ((e) =>
                                       m_form.AddHistoryMsg(e.Time.ToLongTimeString() + ": Primary stopped working, turning primary")
                                       );
                m_proc.ProcessDied += TurnPrimary;
                m_form.InternSetMode(false);
            }
            else
            {   // No args: primary, default port 55555
                m_disp = new OrderDispatcher(false);
                m_disp.ElevNumberChanged += m_form.SetElevCount;
                m_disp.EventHappened     += ((e) => m_form.AddHistoryMsg(e.GetInfoString()));

                m_proc              = new PrimaryProcessNotifier();
                m_proc.ProcessDied += ((e) => m_form.AddHistoryMsg(e.Time.ToLongTimeString() +
                                                                   ": Backup stopped working, restarting backup"));
                m_proc.ProcessDied += ((e) => m_proc.Start());
            }
            m_proc.Start();
        }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting...");


            ILogger           logger           = new SerilogLogger();
            ISerializer       serializer       = new ProtobufSerializer();
            IMessagePublisher messagePublisher = new MessagePublisher(logger, serializer);
            IOutgoingQueue    outgoingQueue    = new OutgoingQueue(logger, messagePublisher);

            messagePublisher.Start(9193);
            outgoingQueue.Start();

            IOrderRepository          orderRepository          = new OrderRepository();
            IOrderDispatcher          orderDispatcher          = new OrderDispatcher(outgoingQueue, logger, new DateService(), orderRepository);
            IIncomingMessageProcessor incomingMessageProcessor = new IncomingMessageProcessor(orderRepository, outgoingQueue, new DateService(), orderDispatcher, new ProtobufSerializer());
            IPerformanceRecorder      performanceRecorder      = new PerformanceRecorderDirectConsoleOutput(new DateService());
            IIncomingMessageQueue     incomingMessageQueue     = new IncomingMessageQueue(logger, incomingMessageProcessor, performanceRecorder);
            IClientMessagePuller      clientMessagePuller      = new ClientMessagePuller(logger, new ProtobufSerializer(), incomingMessageQueue);

            incomingMessageQueue.Start();
            clientMessagePuller.Start(9192);

            Console.WriteLine("Started. Hit any key to quit.");
            Console.ReadKey();

            Console.WriteLine("Stopping...");

            clientMessagePuller.Stop();
            incomingMessageQueue.Stop();
            outgoingQueue.Stop();
            messagePublisher.Stop();

            Console.WriteLine("Stopped");
        }
示例#3
0
        private void TurnPrimary(ProcessDiedEventArgs evArg)
        {
            m_form.SetMode(true);

            m_disp = new OrderDispatcher(true);
            m_disp.ElevNumberChanged += m_form.SetElevCount;
            m_disp.EventHappened     += ((e) => m_form.AddHistoryMsg(e.GetInfoString()));


            m_proc              = new PrimaryProcessNotifier();
            m_proc.ProcessDied += ((e) => m_form.AddHistoryMsg(e.Time.ToLongTimeString() + ": Backup stopped working, restarting backup"));
            m_proc.ProcessDied += ((e) => m_proc.Start());

            StartProgram();
            m_proc.Start();
        }
示例#4
0
        static void Main(string[] args)
        {
            Console.WriteLine("开始执行任务... ...");
            var run = new OrderDispatcher();

            Task.Factory.StartNew(() =>
            {
                run.StartDispatcher();
            });
            Thread.Sleep(2000);
            Task.Factory.StartNew(() =>
            {
                run.OrderDelivery();
            });
            Task.Factory.StartNew(() =>
            {
                run.HandleMq();
            });
            Console.ReadLine();
        }
示例#5
0
 public void Clear()
 {
     OrderDispatcher.FreeOrder(m_order);
     m_order = null;
 }