Jump to content

OpenSimulator Internals/ROBUST Services

From Open Simulator Technical Help
Revision as of 06:24, 21 June 2026 by Jwbshaw (talk | contribs) (first)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

OpenSimulator Internals/ROBUST Services

[edit]

All service interfaces are in OpenSim.Services.Interfaces.

ROBUST services fall into two categories: those that must run in the same process instance, and those that can be split across machines and load-balanced.


Must Stay in Same Instance

[edit]

These services share state and have dependencies on each other. Running them in separate instances will cause data conflicts.

Service Notes
PresenceService Who is online, which region, current session. Maintains a cache. Multiple instances would give conflicting answers.
UserAgentService Manages the user agent when traveling via HyperGrid. Handles trust verification between grids.
AgentPreferencesService Per-user preferences such as hover height and language setting.
GridUserService Home region, last login location, online status. Must update atomically with PresenceService on login and logout.

Can Be Split and Load-Balanced

[edit]

These services are stateless and can run on separate machines behind a load balancer such as nginx.

Service Notes
AssetService Stores and serves asset blobs (textures, meshes, scripts, notecards, etc.). Intentionally dumb -- no referential awareness. Two storage backends: database blob (default) or FSAssets (recommended above 50GB).
InventoryService User inventory. Folder tree and item references. Permissions live here, not in the asset table.
GridService Region map. Handles region registration on startup and deregistration on shutdown. Answers queries for region location and coordinates.
UserAccountService User account storage. Name, email, user level, flags.
AuthenticationService Login authentication. Core implementations are password and webkey.
GroupsService Groups. Core groups service is not enabled by default. External XmlRpc/Flotsam groups service is the common alternative.

Additional Services

[edit]
Service Notes
AvatarService Avatar appearance, height, attached items.
AuthorizationService Always returns authorized. No database, no configuration, no logic. A stub. Actual access control (ban lists, parcel restrictions, estate settings) is handled in region code, not here.
FriendsService Friends list, friendship requests, permissions granted to friends.
MapImageService Stores and serves map tile images. Stored on filesystem, not in the database.
LoginService Handles user login. Implements the LL login protocol.
HyperGrid services Override normal services (asset, inventory, etc.) with HyperGrid-specific functionality.

Simulator Services

[edit]

These run per-simulator rather than on ROBUST. See Simulator Services for interface details.

Service Notes
Land Parcel data for a specific simulator. Read only.
Library Library items and folders. Currently per-region, should be a grid service. Data from filesystem.
Simulation General simulation functions: create agent, update agent, create object. Used for login-to-simulator and simulator-to-simulator communication (teleport, region crossing, moving objects between regions).

See Also

[edit]