<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://osimdev.org/wiki/index.php?action=history&amp;feed=atom&amp;title=OpenSimulator_Internals%2FCode_Map%2FScene</id>
	<title>OpenSimulator Internals/Code Map/Scene - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://osimdev.org/wiki/index.php?action=history&amp;feed=atom&amp;title=OpenSimulator_Internals%2FCode_Map%2FScene"/>
	<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;action=history"/>
	<updated>2026-08-04T15:31:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=99&amp;oldid=prev</id>
		<title>Jwbshaw: updates</title>
		<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=99&amp;oldid=prev"/>
		<updated>2026-07-07T13:55:59Z</updated>

		<summary type="html">&lt;p&gt;updates&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:55, 7 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l303&quot;&gt;Line 303:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 303:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map/OpenSim]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map/OpenSim]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/ScenePresence]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/EntityTransferModule]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/HGEntityTransferModule]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/AttachmentsModule]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/AvatarFactoryModule]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Code Map/InventoryAccessModule]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map/Shared]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Code Map/Shared]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Architecture Overview]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Architecture Overview]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Connector Architecture]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenSimulator Internals/Connector Architecture]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Walkthroughs/Avatar Rez In Region]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Walkthroughs/Avatar Logs Out]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenSimulator Internals/Walkthroughs/Avatar Transfer Between Regions]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jwbshaw</name></author>
	</entry>
	<entry>
		<id>http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=98&amp;oldid=prev</id>
		<title>Jwbshaw: wrong paste</title>
		<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=98&amp;oldid=prev"/>
		<updated>2026-07-07T13:52:01Z</updated>

		<summary type="html">&lt;p&gt;wrong paste&lt;/p&gt;
&lt;a href=&quot;http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;amp;diff=98&amp;amp;oldid=50&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Jwbshaw</name></author>
	</entry>
	<entry>
		<id>http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=50&amp;oldid=prev</id>
		<title>Jwbshaw: first</title>
		<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Code_Map/Scene&amp;diff=50&amp;oldid=prev"/>
		<updated>2026-06-29T20:48:46Z</updated>

		<summary type="html">&lt;p&gt;first&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= OpenSimulator Internals/Code Map/OpenSim =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
OpenSim.exe is the region simulator process. It loads configuration, initialises the physics and script engines, loads region modules, connects to ROBUST services, and runs one or more regions.&lt;br /&gt;
&lt;br /&gt;
In standalone mode, service implementations run in-process. In grid mode, service connectors make HTTP calls to ROBUST. The same code runs both ways -- only the config differs.&lt;br /&gt;
&lt;br /&gt;
Class hierarchy:&lt;br /&gt;
&lt;br /&gt;
 OpenSim → OpenSimBase → RegionApplicationBase&lt;br /&gt;
&lt;br /&gt;
Source repository: https://github.com/opensim/opensim&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Entry Point ===&lt;br /&gt;
&lt;br /&gt;
 OpenSim/Region/Application/OpenSim.cs -- class OpenSim, StartupSpecific()&lt;br /&gt;
&lt;br /&gt;
OpenSim.cs handles the interactive simulator layer:&lt;br /&gt;
&lt;br /&gt;
# Sets up console -- local, basic, rest, or GUI-driven based on config&lt;br /&gt;
# Calls base.StartupSpecific() (see OpenSimBase below)&lt;br /&gt;
# Registers HTTP handlers on MainServer.Instance:&lt;br /&gt;
#* /simstatus -- returns &amp;quot;OK&amp;quot;&lt;br /&gt;
#* /SHA1(osSecret) -- extended stats JSON&lt;br /&gt;
#* /userStatsURI -- stats at user-configured path (optional)&lt;br /&gt;
#* /robots.txt -- returns &amp;quot;# go away, Disallow: /&amp;quot;&lt;br /&gt;
#* /index.php -- IndexPHPHandler for viewer login and capability discovery&lt;br /&gt;
# Optional: registers managed stats endpoint&lt;br /&gt;
# Hooks watchdog timeout handler&lt;br /&gt;
# Prints startuplogo.txt if present&lt;br /&gt;
# Selects default console region (root if multiple, the single region if only one)&lt;br /&gt;
# Runs startup command script if configured&lt;br /&gt;
# Starts timed script timer if configured&lt;br /&gt;
&lt;br /&gt;
Console commands registered: force update, change region, save/load xml/xml2/oar, edit scale, rotate/scale/translate scene, kick user, show users/connections/circuits/pending-objects/modules/regions/ratings, backup, create region, restart (disabled), command-script, remove-region, delete-region, estate create/set owner/set name/link region.&lt;br /&gt;
&lt;br /&gt;
Note: restart command is registered but disabled -- marked unreliable in the source.&lt;br /&gt;
&lt;br /&gt;
Shutdown: runs shutdown command script if configured, disposes timed script timer, calls base.ShutdownSpecific().&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== OpenSimBase ===&lt;br /&gt;
&lt;br /&gt;
 OpenSim/Region/Application/OpenSimBase.cs -- class OpenSimBase&lt;br /&gt;
&lt;br /&gt;
StartupSpecific() sequence:&lt;br /&gt;
&lt;br /&gt;
# Refuses to run if CombineContiguousRegions (MegaRegions) is set -- explicitly unsupported, fatal exit&lt;br /&gt;
# Creates PID file if configured&lt;br /&gt;
# Reads Stats_URI, SecurePermissionsLoading, permission modules, managed stats config from [Startup]&lt;br /&gt;
# Loads SimulationDataStore plugin from [SimulationDataStore] -- throws if missing&lt;br /&gt;
# Loads EstateDataStore plugin from [EstateDataStore] or [EstateService] -- throws if missing&lt;br /&gt;
# Calls base.StartupSpecific() -- see RegionApplicationBase&lt;br /&gt;
# Loads application plugins from /OpenSim/Startup extension point&lt;br /&gt;
# Calls PostInitialise() on all plugins&lt;br /&gt;
# Adds plugin commands to console&lt;br /&gt;
&lt;br /&gt;
Initialize() sequence (called from base.StartUp()):&lt;br /&gt;
&lt;br /&gt;
# Starts WorkManager.JobEngine if enabled&lt;br /&gt;
# Handles SSL cert creation or renewal if configured&lt;br /&gt;
# Handles PEM to PKCS12 cert conversion if configured&lt;br /&gt;
# Sets HTTP server port and SSL flag from [Network]&lt;br /&gt;
# Hooks SceneManager.OnRestartSim&lt;br /&gt;
# Enables MemoryWatchdog and Watchdog only when all regions are ready -- avoids false positives during startup&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Region Creation ===&lt;br /&gt;
&lt;br /&gt;
 OpenSim/Region/Application/OpenSimBase.cs -- CreateRegion()&lt;br /&gt;
&lt;br /&gt;
Called once per region on startup, and again on restart. Sequence:&lt;br /&gt;
&lt;br /&gt;
# Gets IRegionModulesController from ApplicationRegistry -- fatal exit if missing&lt;br /&gt;
# Sets region ServerURI from ExternalHostName and HTTP port&lt;br /&gt;
# Calls SetupScene() -- creates AgentCircuitManager and Scene instance (see Scene below)&lt;br /&gt;
# Calls controller.AddRegionToModules(scene) -- loads all region modules&lt;br /&gt;
# Verifies required permissions modules are loaded if SecurePermissionsLoading = true -- fatal exit if missing&lt;br /&gt;
# Calls scene.SetModuleInterfaces() -- wires up module references&lt;br /&gt;
# Calls SetUpEstateOwner() if estate has no owner -- prompts console interactively&lt;br /&gt;
# Calls scene.loadAllLandObjectsFromStorage() -- loads parcels from region database&lt;br /&gt;
# Calls scene.LoadPrimsFromStorage() -- loads all objects from region database&lt;br /&gt;
# Adds RegionStatsSimpleHandler to MainServer&lt;br /&gt;
# Calls scene.RegisterRegionWithGrid() -- registers with ROBUST GridService -- fatal exit on failure&lt;br /&gt;
# Calls scene.CreateScriptInstances() -- starts script engine for loaded objects&lt;br /&gt;
# Adds scene to SceneManager&lt;br /&gt;
# Hooks scene.EventManager.OnShutdown&lt;br /&gt;
&lt;br /&gt;
Estate owner setup (SetUpEstateOwner()):&lt;br /&gt;
* Checks [Estates] config for DefaultEstateOwnerName, UUID, email, password&lt;br /&gt;
* If not found, prompts console interactively&lt;br /&gt;
* If user does not exist and UserAccountService is a local service, creates the user account&lt;br /&gt;
* Stores estate settings with owner UUID&lt;br /&gt;
&lt;br /&gt;
PopulateRegionEstateInfo():&lt;br /&gt;
* Loads estate settings for region from database&lt;br /&gt;
* If no estate assigned: checks TargetEstate in Regions.ini, then DefaultEstateName in [Estates] config, then prompts console interactively&lt;br /&gt;
* Can create a new estate or join an existing one&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Scene Creation ===&lt;br /&gt;
&lt;br /&gt;
 OpenSim/Region/Application/OpenSimBase.cs -- SetupScene() → CreateScene()&lt;br /&gt;
&lt;br /&gt;
 protected Scene SetupScene(RegionInfo regionInfo, int proxyOffset, IConfigSource configSource)&lt;br /&gt;
 {&lt;br /&gt;
     AgentCircuitManager circuitManager = new AgentCircuitManager();&lt;br /&gt;
     Scene scene = CreateScene(regionInfo, m_simulationDataService, m_estateDataService, circuitManager);&lt;br /&gt;
     scene.LoadWorldMap();&lt;br /&gt;
     return scene;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 protected override Scene CreateScene(...)&lt;br /&gt;
 {&lt;br /&gt;
     return new Scene(regionInfo, circuitManager, simDataService, estateDataService, Config, m_version);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Scene constructor takes: RegionInfo, AgentCircuitManager, ISimulationDataService, IEstateDataService, IConfigSource, version string.&lt;br /&gt;
&lt;br /&gt;
See [[OpenSimulator Internals/Code Map/Scene]] for Scene internals.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Config Loading ===&lt;br /&gt;
&lt;br /&gt;
 OpenSim/Region/Application/OpenSimBase.cs -- LoadConfigSettings()&lt;br /&gt;
 OpenSim/Region/Framework/ConfigurationLoader.cs&lt;br /&gt;
&lt;br /&gt;
Same layered config mechanism as ROBUST. Config loaded via ConfigurationLoader.LoadConfigSettings(). Architecture selected via Include-Architecture in OpenSim.ini -- determines standalone vs grid mode.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== HTTP Handlers ===&lt;br /&gt;
&lt;br /&gt;
Registered on MainServer.Instance during startup:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Path !! Handler !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| /simstatus || SimStatusHandler || Returns &amp;quot;OK&amp;quot; -- health check&lt;br /&gt;
|-&lt;br /&gt;
| /SHA1(osSecret) || XSimStatusHandler || Extended stats as JSON -- path is a hash for mild obscurity&lt;br /&gt;
|-&lt;br /&gt;
| /userStatsURI || UXSimStatusHandler || Same stats at user-configured path -- optional&lt;br /&gt;
|-&lt;br /&gt;
| /robots.txt || SimRobotsHandler || Blocks all web crawlers&lt;br /&gt;
|-&lt;br /&gt;
| /index.php || IndexPHPHandler || Viewer login and capability discovery -- see [[OpenSimulator Internals/Code Map/Shared]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Shutdown ===&lt;br /&gt;
&lt;br /&gt;
ShutdownSpecific():&lt;br /&gt;
# Sends XmlRpc Stop to proxy if configured&lt;br /&gt;
# Calls SceneManager.Close() -- closes all scenes&lt;br /&gt;
# Disposes all application plugins&lt;br /&gt;
# Calls base.ShutdownSpecific()&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[OpenSimulator Internals/Code Map]]&lt;br /&gt;
* [[OpenSimulator Internals/Code Map/ROBUST]]&lt;br /&gt;
* [[OpenSimulator Internals/Code Map/Shared]]&lt;br /&gt;
* [[OpenSimulator Internals/Reading the Code]]&lt;br /&gt;
* [[OpenSimulator Internals/Architecture Overview]]&lt;br /&gt;
* [[OpenSimulator Internals/Connector Architecture]]&lt;/div&gt;</summary>
		<author><name>Jwbshaw</name></author>
	</entry>
</feed>