Exemple #1
0
        public static SqlDConfiguration SqlDGo(this Assembly startAssembly, SqlDConfiguration config = null)
        {
            var cfg = config ?? Configuration.SqlDConfig.Get(startAssembly);

            SqlD(cfg, startAssembly);
            return(cfg);
        }
Exemple #2
0
        public static void Set(Assembly entryAssembly, SqlDConfiguration config, string settingsFile = "appsettings.json")
        {
            lock (Synchronise)
            {
                var workingDirectory = entryAssembly.GetDirectory();
                var settingsFilePath = Path.Combine(workingDirectory, settingsFile);

                var json         = File.ReadAllText(settingsFilePath);
                var jsonInstance = JObject.Parse(json);
                jsonInstance["SqlD"] = JObject.Parse(JsonConvert.SerializeObject(config));

                json = JsonConvert.SerializeObject(jsonInstance, Formatting.Indented);
                File.WriteAllText(settingsFilePath, json);
            }
        }
Exemple #3
0
        public static void SqlDStop(SqlDConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            foreach (var childProcess in ChildProcesses)
            {
                try
                {
                    childProcess.Kill();
                    childProcess.Dispose();
                }
                catch (Exception err)
                {
                    Log.Out.Error(err.ToString());
                }
            }

            foreach (var service in config.Services)
            {
                try
                {
                    if (service.Listener != null)
                    {
                        service.DisposeListener();
                    }
                }
                catch (Exception err)
                {
                    Log.Out.Error(err.ToString());
                    throw;
                }
            }
        }
Exemple #4
0
        private static void SqlD(SqlDConfiguration cfg, Assembly startAssembly)
        {
            if (cfg == null)
            {
                Log.Out.Warn($"Configuration is null, are you sure this is what you intended?");
                return;
            }

            if (!cfg.Enabled)
            {
                return;
            }

            foreach (var registry in cfg.Registries)
            {
                Registry.GetOrAdd(registry.ToEndPoint());
            }

            var registryEndPoints = cfg.Registries.Select(x => x.ToEndPoint()).ToList();
            var serviceEndPointsThatAreRegistries    = cfg.Services.Where(x => registryEndPoints.Contains(x.ToEndPoint())).ToList();
            var serviceEndPointsThatAreNotRegistries = cfg.Services.Where(x => !registryEndPoints.Contains(x.ToEndPoint())).ToList();

            foreach (var service in serviceEndPointsThatAreRegistries)
            {
                try
                {
                    var client = NewClient(withRetries: false).ConnectedTo(service.ToEndPoint());
                    if (client.Ping())
                    {
                        Log.Out.Warn($"Skipping the start of registry service '{service.ToEndPoint()}', already up!");
                        continue;
                    }

                    if (cfg.ProcessModel.Distributed)
                    {
                        ChildProcesses.Add(Process.Service.Start(startAssembly, service));
                        EndPointMonitor.WaitUntil(service.ToEndPoint(), EndPointIs.Up);
                    }
                    else
                    {
                        var listener = NewListener().Hosting(startAssembly, service.Name, service.Database, service.Pragma, service.ToEndPoint(), service.ForwardingTo.Select(x => x.ToEndPoint()).ToArray());
                        service.AddListener(listener);
                        EndPointMonitor.WaitUntil(service.ToEndPoint(), EndPointIs.Up);
                        Registry.Register(listener, string.Join(",", service.Tags));
                    }
                }
                catch (Exception err)
                {
                    Console.WriteLine(err.ToString());
                    throw;
                }
            }

            foreach (var service in serviceEndPointsThatAreNotRegistries)
            {
                try
                {
                    var client = NewClient(withRetries: false).ConnectedTo(service.ToEndPoint());
                    if (client.Ping())
                    {
                        Log.Out.Warn($"Skipping the start of sql service '{service.ToEndPoint()}', already up!");
                        continue;
                    }

                    if (cfg.ProcessModel.Distributed)
                    {
                        ChildProcesses.Add(Process.Service.Start(startAssembly, service));
                    }
                    else
                    {
                        var listener = NewListener().Hosting(startAssembly, service.Name, service.Database, service.Pragma, service.ToEndPoint(), service.ForwardingTo.Select(x => x.ToEndPoint()).ToArray());
                        service.AddListener(listener);
                        Registry.Register(listener, string.Join(",", service.Tags));
                    }
                }
                catch (Exception err)
                {
                    Console.WriteLine(err.ToString());
                    throw;
                }
            }
        }
Exemple #5
0
 public void Set(SqlDConfiguration config)
 {
     SqlDConfig.Set(typeof(ConfigService).Assembly, config);
 }
Exemple #6
0
 public IdController(EndPoint serverAddress, SqlDConfiguration configuration)
 {
     authorityAddress = new EndPoint(configuration.Authority, serverAddress.Port);
 }
 public ServiceViewModel(SqlDConfiguration config, List <RegistryEntryViewModel> registryEntries)
 {
     Config          = config;
     RegistryEntries = registryEntries;
 }
 public SurfaceViewModel(SqlDConfiguration config)
 {
     Config = config;
 }
Exemple #9
0
 public RegistryController(DbConnection dbConnection, EndPoint serverAddress, SqlDConfiguration configuration)
 {
     this.dbConnection = dbConnection;
     this.dbConnection.CreateTable <RegistryEntry>();
     this.authorityAddress = new EndPoint(configuration.Authority, serverAddress.Port);
 }