Beispiel #1
0
        public bool Start(int port, bool ssl)
        {
            HttpPort = port;
            UDPPort  = port;

            InitHttpServer(HttpPort, ssl);

            RegionHandle = Utils.UIntsToLong(REGION_X, REGION_Y);

            try
            {
                // Load all of the extensions
                List <string> references = new List <string>();
                references.Add("OpenMetaverseTypes.dll");
                references.Add("OpenMetaverse.dll");
                references.Add("Simian.exe");

                List <FieldInfo> assignables = ExtensionLoader <Simian> .GetInterfaces(this);

                ExtensionLoader <Simian> .LoadAllExtensions(Assembly.GetExecutingAssembly(),
                                                            AppDomain.CurrentDomain.BaseDirectory, this, references,
                                                            "Simian.*.dll", "Simian.*.cs", this, assignables);
            }
            catch (ExtensionException ex)
            {
                Logger.Log("Interface loading failed, shutting down: " + ex.Message, Helpers.LogLevel.Error);
                Stop();
                return(false);
            }

            foreach (IExtension <Simian> extension in ExtensionLoader <Simian> .Extensions)
            {
                // Track all of the extensions with persistence
                if (extension is IPersistable)
                {
                    PersistentExtensions.Add((IPersistable)extension);
                }
            }

            foreach (IExtension <Simian> extension in ExtensionLoader <Simian> .Extensions)
            {
                // Start all extensions except for persistence providers
                if (!(extension is IPersistenceProvider))
                {
                    Logger.DebugLog("Loading extension " + extension.GetType().Name);
                    extension.Start(this);
                }
            }

            foreach (IExtension <Simian> extension in ExtensionLoader <Simian> .Extensions)
            {
                // Start the persistence provider(s) after all other extensions are loaded
                if (extension is IPersistenceProvider)
                {
                    Logger.DebugLog("Loading persistance provider " + extension.GetType().Name);
                    extension.Start(this);
                }
            }

            return(true);
        }