<?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%2FReading_the_Code</id>
	<title>OpenSimulator Internals/Reading the Code - 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%2FReading_the_Code"/>
	<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Reading_the_Code&amp;action=history"/>
	<updated>2026-08-04T14:40:39Z</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/Reading_the_Code&amp;diff=32&amp;oldid=prev</id>
		<title>Jwbshaw: first</title>
		<link rel="alternate" type="text/html" href="http://osimdev.org/wiki/index.php?title=OpenSimulator_Internals/Reading_the_Code&amp;diff=32&amp;oldid=prev"/>
		<updated>2026-06-22T10:13:10Z</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/Reading the Code =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
OpenSim is a .NET application. When reading the source, many calls are .NET runtime built-ins, not OpenSim code. Do not chase these into the framework -- they do what they say.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What to Skip ==&lt;br /&gt;
&lt;br /&gt;
These namespaces are .NET runtime or third-party libraries. Treat them as black boxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Namespace / Library !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| System.Reflection (Assembly, MethodBase) || Runtime introspection -- finding the current executable, loading plugins dynamically&lt;br /&gt;
|-&lt;br /&gt;
| System.IO (Path, File, FileInfo, StreamReader) || File and path operations&lt;br /&gt;
|-&lt;br /&gt;
| System.Net (ServicePointManager, HttpWebRequest) || HTTP connection management&lt;br /&gt;
|-&lt;br /&gt;
| System.Security.Cryptography.X509Certificates || SSL certificate handling&lt;br /&gt;
|-&lt;br /&gt;
| System.Threading (Thread, Monitor) || Threading primitives&lt;br /&gt;
|-&lt;br /&gt;
| System.Environment || Process exit, environment variables&lt;br /&gt;
|-&lt;br /&gt;
| System.Console || Console output before the OpenSim console is initialised&lt;br /&gt;
|-&lt;br /&gt;
| log4net || Apache logging framework -- not Microsoft, not OpenSim&lt;br /&gt;
|-&lt;br /&gt;
| Nini || .ini file parser, third-party library&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What to Follow ==&lt;br /&gt;
&lt;br /&gt;
These namespaces are OpenSim code.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Namespace !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Framework || Core data structures and interfaces&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Framework.Console || OpenSim console infrastructure&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Framework.Monitoring || Stats and monitoring&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Framework.Servers || Server base classes&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Framework.Servers.HttpServer || HTTP server and handler infrastructure&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Server.Base || ServerUtils, plugin loading&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Server.Handlers || ROBUST HTTP endpoint handlers&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Services || Service implementations&lt;br /&gt;
|-&lt;br /&gt;
| OpenSim.Region.CoreModules || Simulator-side modules and connectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ROBUST Startup Map ==&lt;br /&gt;
&lt;br /&gt;
Execution entry point for ROBUST.exe:&lt;br /&gt;
&lt;br /&gt;
 OpenSimServer.cs&lt;br /&gt;
   -- entry point&lt;br /&gt;
   -- reads command line, loads connectors, starts HTTP server loop&lt;br /&gt;
   |&lt;br /&gt;
   HttpServerBase.cs&lt;br /&gt;
     -- HTTP server setup&lt;br /&gt;
     -- reads [Network] config (port, SSL)&lt;br /&gt;
     -- starts HttpServer listener&lt;br /&gt;
     |&lt;br /&gt;
     ServicesServerBase.cs&lt;br /&gt;
       -- config loading (.ini file chain)&lt;br /&gt;
       -- loads connector plugins from [ServiceList]&lt;br /&gt;
       -- main run loop&lt;br /&gt;
       -- clean shutdown handling&lt;br /&gt;
&lt;br /&gt;
Key points:&lt;br /&gt;
&lt;br /&gt;
* Config is loaded as a chain: defaults → Robust.ini → any included files. Later files override earlier ones.&lt;br /&gt;
* Connectors are loaded from [ServiceList] in Robust.ini. Each connector registers its HTTP handlers on startup.&lt;br /&gt;
* The HTTP server is started before connectors are loaded -- handlers are registered into a running server.&lt;br /&gt;
* SuppressConsoleCommands = true in [GridService] prevents duplicate console command registration when GridService is loaded both by ROBUST and by a simulator in the same process (standalone mode).&lt;br /&gt;
&lt;br /&gt;
== OpenSim.exe Startup Map ==&lt;br /&gt;
&lt;br /&gt;
Execution entry point for OpenSim.exe (simulator):&lt;br /&gt;
&lt;br /&gt;
 OpenSim.cs&lt;br /&gt;
   -- entry point&lt;br /&gt;
   -- loads region modules, initialises scene&lt;br /&gt;
   |&lt;br /&gt;
   OpenSimBase.cs&lt;br /&gt;
     -- reads OpenSim.ini&lt;br /&gt;
     -- loads estate, region, and physics configuration&lt;br /&gt;
     -- starts HTTP server for simulator port (default 9000)&lt;br /&gt;
     |&lt;br /&gt;
     Scene.cs&lt;br /&gt;
       -- per-region object: avatars, objects, physics, scripting&lt;br /&gt;
       -- holds references to all service connectors via Scene.AssetService, Scene.GridService, etc.&lt;br /&gt;
&lt;br /&gt;
Key points:&lt;br /&gt;
&lt;br /&gt;
* Each region runs as a Scene instance. A single OpenSim.exe can host multiple regions.&lt;br /&gt;
* Service connectors are loaded as region modules -- they attach to the scene and provide the service interface.&lt;br /&gt;
* In standalone mode, service implementations run in-process inside OpenSim.exe. In grid mode, connectors make HTTP calls to ROBUST.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[OpenSimulator Internals/Connector Architecture]]&lt;br /&gt;
* [[OpenSimulator Internals/ROBUST Services]]&lt;/div&gt;</summary>
		<author><name>Jwbshaw</name></author>
	</entry>
</feed>