public KillHelper(IConfiguration configuration, ActorSystem system, IIpcConnection ipcConnection) { _logger = LogManager.GetCurrentClassLogger(); _comHandle = configuration["ComHandle"]; _system = system; _ipcConnection = (IpcConnection)ipcConnection; _keeper = this; _system.RegisterOnTermination(() => { _ipcConnection.Disconnect(); _keeper = null; }); }
public static IHostBuilder StartNode(this IHostBuilder builder, KillRecpientType type, IpcApplicationType ipcType, Action <IActorApplicationBuilder>?build = null, bool consoleLog = false) { var masterReady = false; if (ipcType != IpcApplicationType.NoIpc) { masterReady = SharmComunicator.MasterIpcReady(IpcName); } var ipc = new IpcConnection(masterReady, ipcType, (s, exception) => LogManager.GetCurrentClassLogger().Error(exception, "Ipc Error: {Info}", s)); return(builder.ConfigureLogging((context, configuration) => { System.Console.Title = context.HostingEnvironment.ApplicationName; if (consoleLog) { configuration.AddConsole(); } }) .ConfigurateNode(ab => { ab.ConfigureAutoFac(cb => { cb.RegisterType <NodeAppService>().As <IHostedService>(); cb.RegisterType <KillHelper>().As <IStartUpAction>(); cb.RegisterInstance(ipc).As <IIpcConnection>(); }) .ConfigureAkkaSystem((_, system) => { switch (type) { case KillRecpientType.Seed: KillSwitch.Setup(system); break; default: KillSwitch.Subscribe(system, type); break; } }); build?.Invoke(ab); })); }
static void Main(string[] args) { Connection = new IpcConnection(); Connection.Connect(); Context = new ClientIpcContext(Connection, "sharpinitctl"); var verb = args[0].ToLower(); if (!Commands.ContainsKey(verb)) { Console.WriteLine($"Unknown verb \"{verb}\"."); Console.WriteLine($"Known verbs are: {string.Join(",", Commands.Keys)}"); Environment.Exit(1); } Commands[verb](verb, args.Skip(1).ToArray()); Connection.Disconnect(); Connection.Tunnel.Close(); Environment.Exit(0); }
public IYamsClient CreateYamsClient(YamsClientConfig config) { var options = _processArgsParser.ParseArgs(config.ProcessArgs); IpcConnection initConnection = null; IpcConnection exitConnection = null; IpcConnection healthConnection = null; if (!string.IsNullOrEmpty(options.InitializationPipeName)) { initConnection = new IpcConnection(new NamedPipeClientAdapter(options.InitializationPipeName)); } if (!string.IsNullOrEmpty(options.ExitPipeName)) { exitConnection = new IpcConnection(new NamedPipeClientAdapter(options.ExitPipeName)); } if (!string.IsNullOrEmpty(options.HealthPipeName)) { healthConnection = new IpcConnection(new NamedPipeClientAdapter(options.HealthPipeName)); } return(new YamsClient(config, initConnection, exitConnection, healthConnection)); }