static void RunOptionsAndReturnExitCode(Options opts) { if (opts.GenerateConfig) { const string cTemplate = ".\\config_template.xml"; new AkkaNodeConfig().ToFile <AkkaNodeConfig>(cTemplate); Console.WriteLine(@"Template config file ""{0}"" created.", cTemplate); System.Environment.Exit(0); } try { var config = NodeConfig.FromFile <AkkaNodeConfig>(opts.ConfigPath); using (var system = AkkaXmlMessageSystem.Create(config)) { system.Start(config); var exitHandler = new WinExitSignal(opts.NotInteractive, system); if (opts.NotInteractive) { exitHandler.Exit += (sender, args) => System.Environment.Exit(0); // Waits forever _quitEvent.WaitOne(); } else { Console.CancelKeyPress += (sender, e) => { _quitEvent.Set(); e.Cancel = true; }; Console.Title = config.NodeId; Console.WriteLine("Press Control-C to exit, Enter to clear screen."); bool exit = false; do { if (Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) { Console.Clear(); } } exit = _quitEvent.WaitOne(100); } while (!exit); } } System.Environment.Exit(0); } catch (Exception ex) { if (!opts.NotInteractive) { Console.WriteLine("Error : {0}", ex.Message); } System.Environment.Exit(1); } }
MessageSystem <XmlMessage, XmlMessagePattern> CreateSystem(AkkaNodeConfig config) { switch (ImplType) { case EImplType.Akka: return(AkkaXmlMessageSystem.Create(config)); default: throw new ArgumentException("only Akka implementation type is handled"); } }
private void Join(RoleName from, RoleName to) { RunOn(() => { Cluster.Join(Node(to).Address); _nodeConfig = new AkkaNodeConfig(from.Name) { GossipTimeFrameInSeconds = 5 }; _messageSystem = AkkaXmlMessageSystem.Create(this.Sys); }, from); EnterBarrier(from.Name + "-joined"); }
protected override void EndProcessing() { var config = Hexagon.NodeConfig.FromFile <AkkaNodeConfig>(NodeConfig); MessageSystem <XmlMessage, XmlMessagePattern> xmlMessageSystem = null; switch (ImplType) { case EImplType.Akka: xmlMessageSystem = AkkaXmlMessageSystem.Create(config); break; default: throw new ArgumentException("only Akka implementation type is handled"); } xmlMessageSystem.Start(config); WriteObject(xmlMessageSystem); }
private void Join(RoleName from, RoleName to) { RunOn(() => { Cluster.Join(Node(to).Address); _nodeConfig = new AkkaNodeConfig(from.Name) { GossipTimeFrameInSeconds = 5 }; if (from.Name == "deployer") { _nodeConfig.AddThisAssembly(); _nodeConfig.SetProcessingUnitProps(new NodeConfig.ProcessingUnitProps("routed") { RouteOnNodeRole = "routeHere", TotalMaxClusterRoutees = 3, AllowLocalRoutee = true }); } _messageSystem = AkkaXmlMessageSystem.Create(this.Sys); }, from); EnterBarrier(from.Name + "-joined"); }
static void RunOptionsAndReturnExitCode(Options opts) { if (opts.GenerateConfig) { const string cTemplate = ".\\config_template.xml"; new Config().ToFile(cTemplate); Console.WriteLine(@"Template config file ""{0}"" created.", cTemplate); System.Environment.Exit(0); } Console.CancelKeyPress += (sender, e) => { _quitEvent.Set(); e.Cancel = true; }; try { var config = Config.FromFile(opts.ConfigPath); RestRequestConvertersRegistry <XmlMessage> convertersRegistry = new RestRequestConvertersRegistry <XmlMessage>(); if (config.Assemblies.Any()) { foreach (var assembly in config.Assemblies) { convertersRegistry.AddConvertersFromAssembly(assembly); } } // We don't want to load message handlers in the Rest server config.NodeConfig.Assemblies.Clear(); using (var messageSystem = AkkaXmlMessageSystem.Create(config.NodeConfig)) using (var restServer = new HttpServer()) { messageSystem.Start(config.NodeConfig); StartRestServer( messageSystem, restServer, config.Port, TimeSpan.FromSeconds(config.RequestTimeoutInSeconds), convertersRegistry); Console.WriteLine("Press Control-C to exit, Enter to clear screen."); bool exit = false; do { if (Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) { Console.Clear(); } } exit = _quitEvent.WaitOne(100); } while (!exit); } System.Environment.Exit(0); } catch (Exception ex) { Console.WriteLine("Error : {0}", ex.Message); System.Environment.Exit(1); } }