static async Task Main(string[] args) { var id = System.Guid.NewGuid().ToString(); var name = id; var desc = ""; Reg regs = new(); var catsFilePath = "categories.json"; var tcpPort = 0; var readRegSRsFromStdIn = false; string regFilePath = "regs.json"; //null; for (var i = 0; i < args.Length; i++) { try { if (args[i].StartsWith("id")) { id = args[i].Split('=')[1]; } else if (args[i].StartsWith("name")) { name = args[i].Split('=')[1]; } else if (args[i].StartsWith("desc")) { desc = args[i].Split('=')[1]; } else if (args[i].StartsWith("cats")) { catsFilePath = args[i].Split('=')[1]; } else if (args[i].StartsWith("port")) { tcpPort = int.Parse(args[i].Split('=')[1]); } else if (args[i].StartsWith("regstdin")) { readRegSRsFromStdIn = true; } else if (args[i].StartsWith("regfile")) { regFilePath = args[i].Split('=')[1]; } } catch (System.Exception) { } } if (readRegSRsFromStdIn && Console.IsInputRedirected) { var regsJson = new System.Text.StringBuilder(); while (true) { var s = Console.ReadLine(); if (s == null) { break; } else { regsJson.Append(s); } } regs = DeserializeRegs(regsJson.ToString()); } else if (regFilePath != null) { var regsJson = System.IO.File.ReadAllText(regFilePath); regs = DeserializeRegs(regsJson.ToString()); } using var conMan = new Common.ConnectionManager(); var restorer = new Common.Restorer(); var registry = new ServiceRegistry { Restorer = restorer, CategoriesFilePath = catsFilePath, Id = id, Name = name, Description = desc }; conMan.Bind(IPAddress.Any, tcpPort, restorer); restorer.TcpPort = conMan.Port; Console.WriteLine("Started ServiceRegistry with these Categories:"); foreach (var cat in registry.Categories) { Console.WriteLine(cat.Id); } var registrySturdyRef = restorer.Save(BareProxy.FromImpl(registry)).SturdyRef; Console.WriteLine($"registry_sr: {registrySturdyRef}"); await TryRegisterService(conMan, regs.registry, registry); var registrar = new ServiceRegistry.Registrar(registry, restorer); var regSturdyRef = restorer.Save(BareProxy.FromImpl(registrar)).SturdyRef; Console.WriteLine($"registrar_sr: {regSturdyRef}"); //await TryRegisterService(conMan, regs.registrar, registrar); var registryAdmin = new ServiceRegistry.Admin(registry); var registryAdminSturdyRef = restorer.Save(BareProxy.FromImpl(registryAdmin)).SturdyRef; Console.WriteLine($"registry_admin_sr: {registryAdminSturdyRef}"); //await TryRegisterService(conMan, regs.registry_admin, registryAdmin); var serviceAdmin = new Service.Admin(registry, (info) => { registry.Id = info.Id; registry.Name = info.Name; registry.Description = info.Description; }); var serviceAdminSturdyRef = restorer.Save(BareProxy.FromImpl(serviceAdmin)).SturdyRef; Console.WriteLine($"service_admin_sr: {serviceAdminSturdyRef}"); //await TryRegisterService(conMan, regs.service_admin, serviceAdmin); while (true) { System.Threading.Thread.Sleep(1000); } //Console.WriteLine("Press RETURN to stop listening"); //Console.ReadLine(); }
public Registrar(ServiceRegistry reg, Common.Restorer restorer) { _registry = reg; _restorer = restorer; }