diff --git a/protocols/path protocol.txt b/protocols/path protocol.txt new file mode 100644 index 0000000..a6b4b8c --- /dev/null +++ b/protocols/path protocol.txt @@ -0,0 +1,225 @@ + +PATH PROTOCOL VERSION 2.0 + +2026-01-23 + +To be introduced in ARES 0.5.7, the PATH protocol (PHASE Augmented Through HTTP) is a hybrid filesystem model for data storage systems in Second Life. It builds on the PHASE (Prim-Handle Abstract Storage Engine) protocol and the WEBFS file access mechanism originated in ARES 0.4.4. + +The main benefits of PATH over PHASE are as follows: + + - Storage devices track their accessor systems and can reach out to the accessor in the event of an address change + - Data transfer over HTTP re-uses the WEBFS protocol, alleviating the need for the ARES _storage daemon to support two fully independent filesystems (the main reason for the change) + - Data transfer over HTTP supports larger pagination chunks (4K), further allowing for increased speed where memory is available + - Storage devices can be accessed from outside of SL if desired + +As with PHASE 1.x, all standard communications happen on channel 1608011905. The message format is: + + + + is an arbitrary string, typically a UUID. The supported s are: + + system-to-storage: connect disconnect + + storage-to-system: version reset access deleted new update denied + +The s are -specific. + +No side channels are required for PATH. All directory and file I/O occurs via HTTP. + +Although the PHASE and PATH protocols both use the same external interface, the 'access' message provided by the PATH service specifies the HTTP URL that should be used. A PATH storage device should send the 'denied' message if any unsupported messages are encountered. + +In practice it is unlikely that incompatibility between PHASE and PATH will be encountered by end users, since as of this writing PHASE is exclusively used by ARES local storage. + + +PATH MESSAGES + + connect + + system -> storage + + where is one of: ro rd rw + + Initiates a connection with the specified access level. The storage device should respond with an "access" command (below), and store the host UUID and granted level of permission for future reference. The modes are defined as "read only" (ro), "read and delete" (rd), or "full access" (rw). + + At this point, the storage device should also check through all existing connections and confirm that the hosts involved still exist (that is, llGetOwnerKey(id) != id). Failing that, delete those connections. + + However, if is not an identifiable object UUID, the system is simply pinging and does not want to alter the state of any existing connections. A storage device that wants to be seen by the inquiring party (e.g. for public use) should respond with a "version" message; otherwise, no response is required. + + + version