User Inventory Architecture

= Introduction = This is a general holding page for the user inventory mechanisms used in OpenSimulator, including the library. As such, it will point mainly to other pages.

'''Unfortunately, as with many pages on this wiki, this is heavily under construction. If there's something specific that you want to know, please ask on the Mailing Lists so that we know what to prioritize when filling in this page.'''

When a viewer requests an inventory item, in a conventional setup, the simulator will fetch that data from the inventory service before returning it to the viewer. Inventory data is not cached on the simulator.

When delivering inventory via the HTTP capability (see OpenSimulatorToViewerInventoryProtocol for more details), it is possible to make a different URL available rather than going directly through the simulator. One does this by replacing the Cap_FetchInventoryDescendents2 and Cap_FetchInventory2 parameters in the [ClientStack.LindenCaps] entries in OpenSim.ini. However, this is experimental - one should be making each capability URL given to a viewer unique (e.g. by emebedding a random URL) so that only the correct user can fetch their inventory data. One would also need to transfer the OpenSimulator code which produces the formatted LLSD for transfer to whatever server starts to serve this instead.

The advantage of avoiding the simulator for inventory delivery is less strain on the simulator. It means that the server which starts to provide data needs to scale well, but techniques for doing this are very well known and one can then use any technology rather than the relatively poorly performing embedded C# HttpServer that OpenSimulator has to use.

= Updating OpenSim.ini =

Upon my investigations I found by not specifying a location to load the inventory on the simulator, it pulls directly from the grid server getting it from login at the robust, keeping you from having to expose the inventory server.

Find the following in your OpenSim.ini:

[ClientStack.LindenCaps]

Then add the fallowing lines:

Cap_FetchInventoryDescendents2 = ""

Cap_FetchInventory2 = ""

= References =
 * OpenSimulatorToViewerInventoryProtocol - Information on the protocols used to perform inventory operations between viewer and OpenSimulator.
 * Inventory Archives - Information on OpenSmiulator's inventory archiving format.
 * Inventoryfolders - Inventory folders database details.
 * Inventoryitems - Inventory item database details.