public void Initialize()
        {
            L.W("ADA SCK", "Initializing Socket manager");
            var a = typeof(AdaSocketManager).GetTypeInfo().Assembly;
            var l = a.Location;

            l = Path.GetDirectoryName(l);
            var m = Path.Combine(l, "providers");

            this.LoadedAssemblies = new Dictionary <string, Assembly>();
            FrameworkAssemblyLoader.ResolvingAssembly += ResolvingProvider;

            if (Directory.Exists(m))
            {
                var x = Directory.GetFiles(m, "*.dll", SearchOption.TopDirectoryOnly);
                foreach (var xx in x)
                {
                    L.W("ADA SCK", "Loaded provider file '{0}'", xx);
                    var xa = FrameworkAssemblyLoader.LoadFile(xx);
                    this.LoadedAssemblies[xa.GetName().Name] = xa;
                }

                var tpi = typeof(IWebSocketProvider);
                var tpp = this.LoadedAssemblies.SelectMany(xa => xa.Value.ExportedTypes).FirstOrDefault(xt => tpi.IsAssignableFrom(xt) && !xt.GetTypeInfo().IsInterface);
                if (tpp != null)
                {
                    var sp = (IWebSocketProvider)Activator.CreateInstance(tpp);
                    this.SocketProvider = sp;
                    L.W("ADA SCK", "Loaded socket provider: '{0}'", sp.GetType().ToString());
                }
            }

            L.W("ADA SCK", "Done");
        }
示例#2
0
        public void LoadAssemblies()
        {
            L.W("ADA PLG", "Loading all plugin assemblies");
            this.LoadedAssemblies = new Dictionary <string, Assembly>();
            var a = typeof(AdaPlugin).GetTypeInfo().Assembly;

            this.LoadedAssemblies.Add(a.GetName().Name, a);
            this.MainAssembly = a;
            var l = a.Location;

            l = Path.GetDirectoryName(l);

            var r = Path.Combine(l, "references");

            if (Directory.Exists(r))
            {
                var x = Directory.GetFiles(r, "*.dll", SearchOption.TopDirectoryOnly);
                foreach (var xx in x)
                {
                    L.W("ADA PLG", "Loaded reference file '{0}'", xx);
                    var xa = FrameworkAssemblyLoader.LoadFile(xx);
                    this.LoadedAssemblies.Add(xa.GetName().Name, xa);
                }
            }

            l = Path.Combine(l, "plugins");
            if (Directory.Exists(l))
            {
                var x = Directory.GetFiles(l, "*.dll", SearchOption.TopDirectoryOnly);
                foreach (var xx in x)
                {
                    L.W("ADA PLG", "Loaded file '{0}'", xx);
                    var xa = FrameworkAssemblyLoader.LoadFile(xx);
                    this.LoadedAssemblies.Add(xa.GetName().Name, xa);
                }
            }
            L.W("ADA PLG", "Registering plugin dependency resolver");
            FrameworkAssemblyLoader.ResolvingAssembly += ResolvePlugin;
            L.W("ADA PLG", "Done");
        }