/// <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(); }
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"); }
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(); }
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(); }
public void Clear() { OrderDispatcher.FreeOrder(m_order); m_order = null; }