static async Task Main(string[] args) { SopronTypeJsonConverter.InitializeTypes(); MessageSourceRegistry.Initialize(); var server = new Server(); var listener = new JsonListener(IPAddress.Loopback, 3131); listener.Start(); server.StartListening(); server.StartProcessing(); server.StartHandlingMessages(); server.AddListener(listener); if (Directory.Exists("sources")) { var message_source_files = Directory.GetFiles("sources", "*.json"); foreach (var file in message_source_files) { var fs = File.OpenRead(file); var obj = JToken.ReadFrom(new JsonTextReader(new StreamReader(fs))); fs.Close(); if (obj is JArray) { foreach (JObject source_obj in obj as JArray) { server.AddMessageSource(MessageSourceRegistry.GetMessageSource(source_obj)); } } else { server.AddMessageSource(MessageSourceRegistry.GetMessageSource(obj as JObject)); } } } await Task.Delay(-1); }
static async Task Main(string[] args) { SopronTypeJsonConverter.InitializeTypes(); Console.WriteLine("ModuleHost starting..."); if (!Directory.Exists("modules")) { return; } var files = Directory.GetFiles("modules", "*.dll", SearchOption.AllDirectories); foreach (var file in files) { var assembly = Assembly.LoadFrom(file); var types = assembly.GetExportedTypes(); var module_types = types.Where(t => t.IsSubclassOf(typeof(BursaModule))); foreach (var type in module_types) { var module = Activator.CreateInstance(type) as BursaModule; Console.Write($"Loading {module.HumanReadableName} {module.Version} from {Path.GetFileName(file)}..."); module.Initialize(); await module.Connect(new Uri("json://127.0.0.1:3131/")); await module.Handshake(); module.HandleMessages(); Modules.Add(module); Console.WriteLine("success"); } } Console.WriteLine($"Loaded {Modules.Count} modules"); await Task.Delay(-1); }