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);
            }));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
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));
        }