OpenSimulatorToViewerInventoryProtocol

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "=Introduction= This is a page which gives some details about the protocols used to transfer inventory between a viewer (client) and an OpenSimulator installation. Like many page...")

Revision as of 17:07, 17 December 2013

Contents

Introduction

This is a page which gives some details about the protocols used to transfer inventory between a viewer (client) and an OpenSimulator installation. Like many pages, it is a work-in-progress, so if there are more things you would like to know, please ask on the opensim-dev Mailing Lists.

Protocols

There are two OpenSimulator <-> viewer inventory protocols. The first works purely with UDP messages. The second uses HTTP instead via capabilities.

The UDP protocol is older and was replaced in Second Life completely by the HTTP capability protocol. However, some viewers can still fall back to this protocol and it remains supported in OpenSimulator.

UDP Protocol

 BulkUpdateInventory
   server -> client
   sent when an inventory item is given to the agent
   contains only the update item(s)
 CreateInventoryItem
   client -> server
   received when a client directly creates a new item in inventory
   not when a client takes an object or a copy of an object from the environment
 FetchInventory
   client -> server
   fetch the details of a particular item
 FetchInventoryDescendents
   client -> server
   received when an inventory folder is opened
   InventoryDescendents is the reply
 FetchInventoryReplyPacket
   server -> client
   contains inventory item details
   for some reason this is the same as item data sent in InventoryDescendents
 InventoryDescendents
   reply packet for FetchInventoryDescendents containing inventory details
   contains folder and item data
 LinkInventoryItem
   client -> server
   link an inventory item to an existing item
 RemoveInventoryItem
   invoked by the client when Purge Item is selected on an item in the trash
 UpdateCreateInventoryItem
   server -> client
   sent when 
     an item is derezzed into an avatar's inventory
     an item is dragged into an avatar's inventory
 UpdateInventoryItem
   client <-> server
   sent server -> client
     apparently when a derez suceeds
   sent client -> server
     when different eyes are worn in viewer 2
       possibly this is to change worn status
 UpdateInventoryFolder
   called when a folder is renamed

HTTP protocol

The HTTP protocol works via various Capabilities. The capabilities required for HTTP transfer at the present time are

  • FetchInventory2
  • FetchInventoryDescendents2
  • FetchLib2
  • FetchLibDescendents2

For more details about how they operate, please see the Linden Lab Inventory capabilities document.

Historically, the following capabilities were used. However, these have been obsolete for a long time and can be disregarded.

  • FetchInventory
  • FetchLib
  • FetchLibDescendents

If the inventory capabilities are disabled, then some viewers (very probably all current viewers) will fall back on the UDP mechanism. Older viewers will solely use the UDP mechanism. However, some viewers have historically been buggy where the fallback fails to be setup properly.

Personal tools
General
About This Wiki