private void DoWork(object context) { var controller = (ServerController)context; using (var results = new MessageRouterResults(controller.Log, controller.Model.Settings.TargetQueueConfig)) { controller.Log.Info("Connecting to {0}", controller.Model.Settings.CameraConnection.Title); var mjpegConnection = new MJPEGStream { Source = controller.Model.Settings.CameraConnection.Uri, Login = controller.Model.Settings.CameraConnection.User, Password = controller.Model.Settings.CameraConnection.Password, }; mjpegConnection.NewFrame += (x, y) => OnNewFrame(controller, results, y); mjpegConnection.Start(); try { while (true) { Thread.Sleep(100); } } catch (ThreadAbortException e) { mjpegConnection.Stop(); } } }
static void Main(string[] args) { var serverSettings = ServerSettingsHelper.Load(Path.Combine(SettingsFileLocator.LocateConfigurationFolder(), ConfigurationFile)); var consoleLog = new ConsoleLog(); consoleLog.Open(); if (args.Length == 0) { Console.WriteLine("Router was started.\nHere you can see messages it forwards to listeners"); StartProcessorsAndSubscribers(serverSettings); new DemoRouterServer(consoleLog, serverSettings) .Start(); Console.ReadLine(); } else if (args[0] == WorkerArgument) { Console.WriteLine("Worker process.\nType message and press <Enter> to send it to subscribers."); using (var results = new MessageRouterResults(consoleLog, serverSettings.Server)) { while (true) { var text = Console.ReadLine(); if (string.IsNullOrEmpty(text)) { break; } results.SendText(text); } } } else { Console.WriteLine("{0} is started.\nHere you can see messages sent by message router.", args[0]); var config = serverSettings.Listeners.FirstOrDefault(item => item.Name == args[0]); new DemoMessageRouterSubscriber(consoleLog, config) .Start(); } }