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); }