Example #1
0
        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);
        }
Example #2
0
        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);
        }