diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-10-30 15:38:13 +0100 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-10-30 15:38:13 +0100 |
commit | 489c54be1766844a2b4521bccdab99f85de0debe (patch) | |
tree | 3f08cad548c69a4fd19f9545dc5b03db9304191f /doc/narp.html | |
parent | 4901dcdbbaf9e19e1bb319f873e679da1a6317e3 (diff) | |
download | NARP-489c54be1766844a2b4521bccdab99f85de0debe.tar.gz NARP-489c54be1766844a2b4521bccdab99f85de0debe.zip |
This is VERSION 1.
Diffstat (limited to 'doc/narp.html')
-rw-r--r-- | doc/narp.html | 1718 |
1 files changed, 0 insertions, 1718 deletions
diff --git a/doc/narp.html b/doc/narp.html deleted file mode 100644 index c9ee0df..0000000 --- a/doc/narp.html +++ /dev/null @@ -1,1718 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xmlns:x="http://www.texmacs.org/2002/extensions" xmlns:m="http://www.w3.org/1998/Math/MathML"> - <head> - <title>No title</title> - <meta content="TeXmacs 1.99.2" name="generator"></meta> - <style type="text/css"> - body { text-align: justify } h5 { display: inline; padding-right: 1em } - h6 { display: inline; padding-right: 1em } table { border-collapse: - collapse } td { padding: 0.2em; vertical-align: baseline } .subsup { - display: inline; vertical-align: -0.2em } .subsup td { padding: 0px; - text-align: left} .fraction { display: inline; vertical-align: -0.8em } - .fraction td { padding: 0px; text-align: center } .wide { position: - relative; margin-left: -0.4em } .accent { position: relative; - margin-left: -0.4em; top: -0.1em } .title-block { width: 100%; - text-align: center } .title-block p { margin: 0px } .compact-block p { - margin-top: 0px; margin-bottom: 0px } .left-tab { text-align: left } - .center-tab { text-align: center } .balloon-anchor { border-bottom: 1px - dotted #000000; outline:none; cursor: help; position: - relative; }.balloon-anchor [hidden] { margin-left: -999em; position: - absolute; display: none; }.balloon-anchor:hover [hidden] { position: - absolute; left: 1em; top: 2em; z-index: 99; margin-left: 0; width: - 500px; display: inline-block; }.balloon-body { }.ornament { - border-width: 1px; border-style: solid; border-color: black; display: - inline-block; padding: 0.2em; } .right-tab { float: right; position: - relative; top: -1em } - </style> - </head> - <body> - <table class="title-block"> - <tr> - <td><table class="title-block"> - <tr> - <td><font size="+3"><b>The NARP protocol specification - </b></font></td> - </tr> - </table><table class="title-block"> - <tr> - <td><font size="+1"><b>A Generic Recursive Communication Protocol for - Networked Applications</b></font></td> - </tr> - </table></td> - </tr> - </table> - <p> - In this document we explain the purpose and provide a draft - specification for the NARP protocol, a general-purpose networking - protocol destined to be used in many layers of a new operating system - and networking system. - </p> - <h2 id="auto-1">1<span style="margin-left: 1em"></span>Introduction</h2> - <p> - We begin by remarking that a basic operation in all computer operation - processes consists in naming objects and providing acces to these named - objects. Here are a few examples of naming in real use cases: - </p> - <ul> - <li> - <p> - Naming of files on a local or distant file system - </p> - </li> - <li> - <p> - Naming of devices in the <tt class="verbatim">/dev</tt> virtual filesystem on - Unix machines - </p> - </li> - <li> - <p> - Naming of networked machines (with IP adresses and DNS records) - </p> - </li> - <li> - <p> - Naming of internet ressources over protocols such as HTTP, IMAP, - IRC, specfic web services, … - </p> - </li> - </ul> - <p> - We propose here a novel architecture with the purpose of unifying all - the naming happening at all levels of the system, with two base concepts - : <em>objects</em> and <em>service</em>. - </p> - <ul> - <li> - <p> - <em>objects</em> are ressources that may implement different - semantics : bidirectionnal communication (such as sockets) ; - unidirectionnal communication (FIFO-like) ; file semantics ; etc. - </p> - </li> - <li> - <p> - <em>services</em> are a way of naming objects, querying the - interfaces they implement, and multiplexing communications with them - </p> - </li> - </ul> - <p> - We suggest that a NARP service may be provided on any bidirectionnal - channel of communication supporting the (reliable) sending and recieving - of messages. In addition, NARP objects may implement such a send/recieve - interface ; therefore a NARP service can be channeled into an object. - Such a construction of using a NARP object to access a NARP service is a - fundamental operation that we call <em>recursive multiplexing</em>, or - just <em>multiplexing</em>. - </p> - <p> - The NARP protocol is a client/server protocol meant to include a variety - of different operations that may or may not be implemented by a specific - NARP server. - </p> - <h2 id="auto-2">2<span style="margin-left: 1em"></span>High-level overview</h2> - <h3 id="auto-3">2.1<span style="margin-left: 1em"></span>The basic operations on services and - objects</h3> - <p> - A NARP service is basically any object that implements the following - operations: - </p> - <ul> - <li> - <p> - <em>query</em> : get information on a ressource identified by name - </p> - </li> - <li> - <p> - <em>list</em> : know the names of ressources presented by the - service (possibly in a specific sub-path) - </p> - </li> - <li> - <p> - <em>attach</em> : get an object interface for accessing a ressource, - identified by name - </p> - </li> - </ul> - <p> - A NARP object is basically any object that implements the following - operations : - </p> - <ul> - <li> - <p> - <em>send</em> : send a message (an arbitrary byte string) to the - object - </p> - </li> - <li> - <p> - <em>recieve</em> : recieve a message from the object (this may be - done asynchronously with handler functions) - </p> - </li> - <li> - <p> - <em>detach</em> : delete object connection - </p> - </li> - </ul> - <h3 id="auto-4">2.2<span style="margin-left: 1em"></span>The basics of the NARP protocol</h3> - <p> - Given any interface with send/recieve capabilities considered as an - assymetric (client/server) configuration, the following client messages - consitute the basics of the NARP protocol for providing a NARP service - on the interface: - </p> - <ul> - <li> - <p> - <tt class="verbatim">hello</tt> : initialize a connection, check version - information, … - </p> - </li> - <li> - <p> - <tt class="verbatim">authenticate</tt> and appropriate response messages : use - credentials (user/password or access token) to gain acces to some - ressources provided by the server (the protocol is thus statefull) - </p> - </li> - <li> - <p> - <tt class="verbatim">walk</tt>, <tt class="verbatim">list</tt> and appropriate response - messages : get information about the available ressources - </p> - </li> - <li> - <p> - <tt class="verbatim">attach</tt> and appropriate response messages : give an - identifier (a descriptor) to a ressource in order to communicate - with it - </p> - </li> - <li> - <p> - <tt class="verbatim">send</tt> and appropriate response messages : send a - message to an attached ressource, identified by its descriptor - </p> - </li> - <li> - <p> - <tt class="verbatim">detach</tt> : close a descriptor and detach from a - ressource - </p> - </li> - <li> - <p> - <tt class="verbatim">create</tt>, <tt class="verbatim">delete</tt>, <tt class="verbatim">rename</tt>, - <tt class="verbatim">link</tt> : requests the creation or modification of a - ressource in the namespace - </p> - </li> - </ul> - <p> - The server may also at any moment send a message, including: - </p> - <ul> - <li> - <p> - a response to a query - </p> - </li> - <li> - <p> - <tt class="verbatim">recieve</tt> : a notification of a message sent from the - object to the client - </p> - </li> - <li> - <p> - <tt class="verbatim">detached</tt> : the connection to the object has been - terminated by the object server - </p> - </li> - </ul> - <h3 id="auto-5">2.3<span style="margin-left: 1em"></span>Recursion</h3> - <p> - If an object is a NARP server, the messages sent to it and recieved from - it are messages of the NARP protocol. Otherwise, they are arbitrary. - </p> - <h3 id="auto-6"><a id="rev-sock"></a>2.4<span style="margin-left: 1em"></span>Reverse object</h3> - <p> - Some NARP servers may support reverse object serving: the client creates - an object on the server and handles all the requests arriving to this - object (therefore the initial NARP server only serves as a relay between - the new server and its clients - <p> - <font size="-1"><div align="justify"> - <div style="margin-left: 0px"> - <div style="margin-right: 0px"> - <class style="font-style: normal"><p> - 1. Research is to be done on shortcutting mechanisms in - specific situations where too many levels of recursion cause a - performance issue. - </p></class> - </div> - </div> - </div></font> - </p> - <span style="margin-left: 0em"></span> - <a id="footnr-1"></a> - <sup><class style="font-style: normal"><a href="#footnote-1">1</a></class></sup> - ). A client wishing to act as a reverse object server may use the - following commands: - </p> - <ul> - <li> - <p> - <tt class="verbatim">serve</tt> : listen for attach requests on a servable - (empty) object created in the server namespace (if authorized) - </p> - </li> - <li> - <p> - <tt class="verbatim">accept</tt> and <tt class="verbatim">reject</tt> : accept (or - reject) an attach request to the object - </p> - </li> - <li> - <p> - <tt class="verbatim">detach</tt> : close connection between object and client - (this is the same detach message as in standard communications) - </p> - </li> - <li> - <p> - <tt class="verbatim">unserve</tt> : stop serving for the object. Attached - clients continue to be attached. - </p> - </li> - </ul> - <p> - The server may in turn send the following messages concerning the server - object: - </p> - <ul> - <li> - <p> - <tt class="verbatim">attach_request</tt> : a client is willing to attach to - the object. A descriptor is already associated to the connection to - be established, but the server may reject it. - </p> - </li> - </ul> - <p> - Once a client is attached to the object, a classical send/recieved - interface is provided. - </p> - <p> - Typically, the protocol exchanged over the object is NARP protocol, - therefore enabling the reverse server to provide its own namespace and - other functionnality. - </p> - <h3 id="auto-7">2.5<span style="margin-left: 1em"></span>Specific object types and associated - messages</h3> - <h4 id="auto-8">2.5.1<span style="margin-left: 1em"></span>Objects are sockets</h4> - <p> - Sockets are the basis of the NARP protocol : attaching to an objects - opens a socket connection to the process serving the object, and when - the connection is accepted, basic send/recieve functionnality is - provided. See also the reverse object protocol described in section <a - href="#rev-sock">2.4</a>. - </p> - <h4 id="auto-9">2.5.2<span style="margin-left: 1em"></span>File objects</h4> - <p> - Small files may implement the following interface: - </p> - <ul> - <li> - <p> - <tt class="verbatim">put</tt> : erase the whole file and put the transmitted - content - </p> - </li> - <li> - <p> - <tt class="verbatim">get</tt> : retrieve the whole file content - </p> - </li> - </ul> - <p> - Big files may implement the following interface: - </p> - <ul> - <li> - <p> - <tt class="verbatim">write</tt> : write a portion of the file at a given - offset - </p> - </li> - <li> - <p> - <tt class="verbatim">read</tt> : read a portion of the file at a given offset - </p> - </li> - </ul> - <h4 id="auto-10">2.5.3<span style="margin-left: 1em"></span>User IO (terminals…)</h4> - <p> - Virtual terminals can be seen as objects implementing a simple - send/recieve semantic, where the data transmitted is unstructured (or - structured given a specific terminal data structure). More specific - interfaces can be defined for advanced terminals and GUIs. - </p> - <h4 id="auto-11">2.5.4<span style="margin-left: 1em"></span>Specific applications</h4> - <p> - Specific applications may define custom messages. Examples include: - </p> - <ul> - <li> - <p> - e-mail - </p> - </li> - <li> - <p> - instant messaging - </p> - </li> - <li> - <p> - collaborative editing of text-based documents - </p> - </li> - </ul> - <p> - and many other applications yet to be invented. - </p> - <h3 id="auto-12">2.6<span style="margin-left: 1em"></span>Big messages</h3> - <p> - The message size in the NARP protocol is limited to 64kb, and - recommended not to exceed 4kb+header (4kb is the size of a memory page - on many machines). Therefore a possibility would be for the NARP - protocol to include a way to transmit big messages by fragmenting them - into small messages. Optionnal error correction may be included. This - can be useful for example when using <tt class="verbatim">put</tt> or <tt class="verbatim">get</tt> - on large files, or <tt class="verbatim">read</tt>s and <tt class="verbatim">write</tt>s of - big file portions. The recieving of a large fragmented message may have - a specific implementation allowing the reciever to work with the partial - data as soon as it starts arriving and not having to wait for the whole - message to be transmitted and buffered. Research is yet to be done on - this specific subject. - </p> - <h3 id="auto-13">2.7<span style="margin-left: 1em"></span>Permissions</h3> - <p> - For each attached client the server may keep track of associated - permissions, and accept or reject requests according to those - permissions. The client may use an authentication command to gain - supplementary privileges on the server's ressources. The client may - request a token to delegate it's privileges on a given object to another - client. Advanced right management functionnalities are to be discussed. - </p> - <h3 id="auto-14">2.8<span style="margin-left: 1em"></span>Reliability concerns</h3> - <p> - The NARP protocol relies on the fact that when transmitting a message, - the other end will recieve it. It is nevertheless recommended that NARP - implementations support the repeating of messages if an expected - acknowlegment has not arrived after a given delay. - </p> - <h3 id="auto-15">2.9<span style="margin-left: 1em"></span>Example NARP servers</h3> - <h4 id="auto-16">2.9.1<span style="margin-left: 1em"></span>Virtual NARP server (i.e. NARP - router)</h4> - <p> - This server implements a namespace where any client may create an empty - object and serve connections to it. Additionnaly, the server may - implement the possibility to create virtual files, virtual directories, - FIFO queues, etc. - </p> - <p> - This server may be connected to other virtual NARP servers in order to - provide a global namespace accessible to all. Each virtual NARP server - acts as an endpoint into the network and may have functionnality for - routing the communications to objects to the clients that serve them. - </p> - <h4 id="auto-17">2.9.2<span style="margin-left: 1em"></span>NARP file server</h4> - <p> - This server simply implements access to a filesystem : listed ressources - are the same as the files present in a served directory, each of these - implements the filing protocol (served directly by the file server), and - the creation of files/directories may also be implemented. - </p> - <h4 id="auto-18">2.9.3<span style="margin-left: 1em"></span>NARP terminal/GUI server</h4> - <p> - Clients may create objects on the server ; each of these objects - correspond to a GUI window. Two interfaces may be implemented : text IO - (terminal) and graphical interaction. Advanced terminal interaction - features may be implemented at the protocol level, such as - auto-completion of commands or of text being edited… - </p> - <p> - Suggestion for a third kind of window : the data sent by the client - corresponds to a description of the scene in a given markup language and - the server does the rendering. The client can also subscribed to events - such as clicking on an item or entering text. This possibility is to be - explored. - </p> - <h4 id="auto-19">2.9.4<span style="margin-left: 1em"></span>NARP e-mail and newsgroup server</h4> - <p> - Several features to be implemented: - </p> - <ul> - <li> - <p> - user login and private user mailboxes - </p> - </li> - <li> - <p> - bridge to standard SMTP/POP3/IMAP services - </p> - </li> - <li> - <p> - private threads of conversation with access rights (the users don't - each have a copy of the thread) - </p> - </li> - <li> - <p> - synchronization between many servers - </p> - </li> - <li> - <p> - public discussion forums - </p> - </li> - </ul> - <h4 id="auto-20">2.9.5<span style="margin-left: 1em"></span>NARP chat server</h4> - <ul> - <li> - <p> - user login and status notification - </p> - </li> - <li> - <p> - online and offline private messaging - </p> - </li> - <li> - <p> - public chat rooms, chat room logging independently of user being - online or offline - </p> - </li> - <li> - <p> - bridging and synchronization between many servers - </p> - </li> - </ul> - <h4 id="auto-21">2.9.6<span style="margin-left: 1em"></span>NARP applicative server</h4> - <p> - TODO… - </p> - <h2 id="auto-22">3<span style="margin-left: 1em"></span>Specifics of the NARP protocol</h2> - <h3 id="auto-23">3.1<span style="margin-left: 1em"></span>Protocol description format</h3> - <p> - A protocol message is given in the following form: - </p> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid">element type</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">element type</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">…</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">element type</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">element description</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">element description</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">…</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">element description</td> - </tr></tbody> - </table> - <p> - The following element types apply: - </p> - <ul> - <li> - <p> - int16, int32, int64 : 16-bit, 32-bit or 64-bit little-endian - integers - </p> - </li> - <li> - <p> - str : a string, prefixed by a 16-bit length header - </p> - </li> - <li> - <p> - arr(<var>T</var>) : an array of <var>T</var>'s (where <var>T</var> - is another element type), prefixed by a 16-bit length header - </p> - </li> - <li> - <p> - * (for the last element) : consider all the rest of the message as a - byte string - </p> - </li> - </ul> - <h3 id="auto-24">3.2<span style="margin-left: 1em"></span>Basic message format</h3> - <p> - The basic format of a message is : - </p> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">message size</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message type</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">payload</td> - </tr></tbody> - </table> - <p> - We will abbreviate by “header” the first 32 bits (4 bytes) - of the message. The list of message types is given in section <a href="#type-nums">3.10.1</a>. - </p> - <p> - Messages for communication with an attached ressource will have the - following format : - </p> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">message size</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message type</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">ressource descriptor (handle)</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">payload</td> - </tr></tbody> - </table> - <p> - Many client messages awating a response will have a message ID included - ; this message ID is an arbitrary number generated by the client and - used by the server when giving its response. The header then looks like - this: - </p> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">message size</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message type</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">payload</td> - </tr></tbody> - </table> - <h3 id="auto-25">3.3<span style="margin-left: 1em"></span>Message list for core NARP protocol</h3> - <p> - Client messages have an up arrow (<var>↑</var>) next to their name, - while server messages have a down arrow (<var>↓</var>). - </p> - <p> - The core NARP protocol is meant for small size and rapidity (so that - many layers can be encapsulated with minimal overhead), therefore no - acknowlegment is to be sent for recursive send/recieve messages. Other - messages usually imply some kind of action or getting of information, - therefore an acknowlegment or an error is usually sent as a response. - </p> - <p> - <a id="auto-26"></a><h5>Hello<var>↑</var><var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <p> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">arr(int32)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">version</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">list of needed/provided interfaces</td> - </tr></tbody> - </table> - - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - When a NARP connection is established, the client is always the - first to send a <strong>Hello</strong> message. The object may then - respond either with a <strong>Hello</strong> message indicating that - the requested interfaces can be provided, or with an - <strong>Error</strong> message. The two common error causes are - <em>interface not implemented</em> and <em>incompatible - versions</em>. - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - For interface numbers : see table in section <a href="#interface-nums">3.10.3</a>. - </p> - </div> - </p> - <p> - <a id="auto-27"></a><h5>Error<var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <p> - Generic error response message for any operation. - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">error ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">error string</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - Common error IDs are specified in section <a href="#error-nums">3.10.2</a>. - </p> - </div> - </p> - <p> - <a id="auto-28"></a><h5>Ack<var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - Generic acknowlegment message for commands that require it. An - acknowlege implies the command has been sucessfully executed - (otherwise an error message is sent). - </p> - </div> - </p> - <p> - <a id="auto-29"></a><h5>Stat<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">filename</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - The request ID is an ID decided by the client so that it can - identify the answer. - </p> - </div> - </p> - <p> - <a id="auto-30"></a><h5>StatR<var>↓</var></h5>Response to the - <strong>Stat</strong> message. - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">arr(int32)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">implemented interface</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - Common interface numbers are to be found in section <a href="#interface-nums">3.10.3</a>. - </p> - <p> - If a <strong>Stat</strong> query on an object gives a certain list - of interfaces, then when connecting to the object at least all these - interfaces must be included in the server's <strong>Hello</strong> - message as supported interfaces. - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - Note that some interface numbers correspond to actions that can be - done on the object from the connection where the object exists (e.g. - : symbolic link, directory), and others correspond to actions that - can be performed after attaching to the object (e.g. file, terminal, - …) - </p> - </div> - </p> - <p> - <a id="auto-31"></a><h5>List<var>↑</var></h5> - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">first entry number</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">number of entries requested</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">base path string</td> - </tr></tbody> - </table> - </div> - <p> - <a id="auto-32"></a><h5>ListR<var>↓</var></h5>Response to the - <strong>List</strong> message. - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <p> - One message is passed for each entry in the requested range: - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">entry number</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">entry name</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - After the directory has finished being enumerated, a supplementary - entry is given with entry number the last valid entry number plus - one and an empty entry name. This supplementary entry is only given - if its (ficious) entry number is included in the range requested by - the client. - </p> - </div> - </p> - <p> - Possible extension : combine List and Stat so that when the answer to - List is given, information is also given on the object's implemented - interfaces. - </p> - <p> - <a id="auto-33"></a><h5>Attach<var>↑</var></h5> - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">filename</td> - </tr></tbody> - </table> - </div> - <p> - <a id="auto-34"></a><h5>Attached<var>↓</var></h5>Response to the - <strong>Attach</strong> command. - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">handle</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - (the handle, ie the ressource descriptor, is attributed by the - server) - </p> - </div> - </p> - <p> - <a id="auto-35"></a><h5>Send<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">handle</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">payload</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This message does not expect a response. - </p> - </div> - </p> - <p> - <a id="auto-36"></a><h5>Recieve<var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <p> - Spontaneous server message indicating some data is sent by an - attached ressource. This message does not expect a response. - </p> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">handle</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">payload</td> - </tr></tbody> - </table> - </div> - </p> - <p> - <a id="auto-37"></a><h5>Detach<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">handle</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This message does not expect a response. - </p> - </div> - </p> - <p> - <a id="auto-38"></a><h5>Detached<var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <p> - Spontaneous server message indicating the object has been detached. - </p> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">handle</td> - </tr></tbody> - </table> - </div> - </p> - <p> - <a id="auto-39"></a><h5><strong>Create<var>↑</var></strong></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">arr(int32)</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">needed interfaces</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">path</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - A create request is accompanied with a list of needed interfaces - that direct the server into creating the corresponding type of - object (e.g. an empty object to be served, a directory, a file, - …) - </p> - </div> - </p> - <p> - <a id="auto-40"></a><h5>Created<var>↓</var></h5>Response to the - <strong>Create</strong> command. - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">arr(int32)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">implemented interfaces</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - Signals that the object has been created, and has corresponding - interfaces associated to it. - </p> - </div> - </p> - <p> - <a id="auto-41"></a><h5>Delete<var>↑</var><tt class="verbatim"></tt></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">path</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This message expects a standard <strong>Ack</strong> response - message. - </p> - </div> - </p> - <p> - <a id="auto-42"></a><h5>Link<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">destination path</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">link path</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - This message expects a standard <strong>Ack</strong> response - message. - </p> - <p> - Semantics of the link object: - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <ul> - <li> - <p> - attaching or serving on this objects corresponds to resolving - the linked path and attaching/serving on the linked object - </p> - </li> - <li> - <p> - stating the link will stat the linked object and add as an - implemented interface the “this is a symlink” - information - </p> - </li> - <li> - <p> - directory listings follow links - </p> - </li> - <li> - <p> - deleting the link will not delete the original file but only the - link - </p> - </li> - </ul> - </div> - </p> - <p> - <a id="auto-43"></a><h5>ReadLink<var>↑</var></h5> - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">path</td> - </tr></tbody> - </table> - </div> - <p> - <a id="auto-44"></a><h5>ReadLinkR<var>↓</var></h5>Response to the - <strong>ReadLink</strong> message. - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">link description</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This will only return the first level of linking, ie the link data - directly associated to the link object. - </p> - </div> - </p> - <p> - <a id="auto-45"></a><h5>Rename<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">original path</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">new path</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This message expects a standard <strong>Ack</strong> response - message. - </p> - </div> - </p> - <p> - <a id="auto-46"></a><h5>Serve<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">array(int32)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">request ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">path</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">announced interfaces</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - This message is a request for the client to be a reverse server to - an object. The response message to this message is an - <strong>Attached</strong> message. The handle attributed to the - served object is known as the <em>server handle</em> and is used in - the <strong>Incoming</strong> and <strong>Detach</strong> messages. - </p> - <p> - To stop serving an object, the client simply sends a - <strong>Detach</strong> command on the server handle. The semantics - is that all connections that have been openned through the - reverse-served object are preserved when the object stops being - served, and an individual <strong>Detach</strong> message must be - sent to all of them if we want to close them. - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - The <em>announced interfaces</em> serves to answer - <strong>Stat</strong> messages on the object while we are serving - it. - </p> - </div> - </p> - <p> - <a id="auto-47"></a><h5>Incoming<var>↓</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">server handle</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">client hande</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - This message is sent by the server when another client wishes to - attach to an object reverse-served by this client. The server handle - is the one given as a response to the <strong>Serve</strong> - message. The client handle is a handle associated to the connection. - The reverse server may reject the connection by issuing a - <strong>Detach</strong> command on the client handle, or may accept - it using the <strong>Accept</strong> message given below. - </p> - </div> - </p> - <p> - <a id="auto-48"></a><h5>Accept<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">client handle</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - Once a connection has been accepted, the reverse server may at any - moment close it by sending a <strong>Detach</strong> command on the - corresponding client handle. - </p> - </div> - </p> - <h3 id="auto-49">3.4<span style="margin-left: 1em"></span>Big message protocol</h3> - <p> - To be defined. Is it really usefull? What role exactly does it have? Can - it implement repetition in the case where the message hasn't been - acknowledge? … - </p> - <p> - Reserved message IDs : [20,30) and [10020,10030). - </p> - <h3 id="auto-50">3.5<span style="margin-left: 1em"></span>Authentification and rights managment - commands</h3> - <p> - <a id="auto-51"></a><h5>Authenticate<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">*</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">authentification method</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">authentification data</td> - </tr></tbody> - </table> - </div> - <div style="margin-left: 35.145870328812px"> - <p> - Used to gain access using credentials (user/password, token, - …). Response messages are standard <strong>Ack</strong> on - success or <strong>Error</strong> on failure. Autentification - methods include : - </p> - </div> - <div style="margin-left: 35.145870328812px"> - <ul> - <li> - <p> - 1 : user + password - </p> - </li> - <li> - <p> - 2 : token - </p> - </li> - </ul> - </div> - </p> - <p> - <a id="auto-52"></a><h5>NewToken<var>↑</var></h5> - </p> - <p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">path</td> - </tr></tbody> - </table> - </div> - <p> - - </p> - <div style="margin-left: 35.145870328812px"> - <p> - Requests the server to create an authentication token for accessing - a given object with the privileges of the connected client. Once the - token has been returned, it may be transmitted to another client so - that that client will use it to gain same access to the object. - </p> - </div> - </p> - <p> - <a id="auto-53"></a><h5>NewTokenR<var>↓</var></h5>Response to the - <strong>NewToken</strong> message. - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.1em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">int32</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-top: 1px solid">str</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center; border-left: 1px solid">header</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">message ID</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; text-align: center">token</td> - </tr></tbody> - </table> - </div> - <p> - TODO : request account creation, manage user groups and ACLs, … - </p> - <h3 id="auto-54">3.6<span style="margin-left: 1em"></span>File protocol</h3> - <p> - Client messages [50,100) ; server messages [10050,10100). TODO - </p> - <h3 id="auto-55">3.7<span style="margin-left: 1em"></span>UI protocols</h3> - <p> - Client messages [100,200) and server messages [10100,10200). - </p> - <h4 id="auto-56">3.7.1<span style="margin-left: 1em"></span>Terminal protocol</h4> - <p> - TODO - </p> - <h4 id="auto-57">3.7.2<span style="margin-left: 1em"></span>Graphical user interface protocol</h4> - <p> - TODO - </p> - <h3 id="auto-58">3.8<span style="margin-left: 1em"></span>Communication protocols</h3> - <p> - Client messages [200,300) and server messages [10200,10300). - </p> - <h4 id="auto-59">3.8.1<span style="margin-left: 1em"></span>Email and newsgroups protocol</h4> - <p> - Client messages [200,220), server messages - [10200<var>⁣</var>,10220). - </p> - <h4 id="auto-60">3.8.2<span style="margin-left: 1em"></span>Instant messaging protocol</h4> - <p> - Client messages [220,250), server messages - [10220<var>⁣</var>,10250). - </p> - <h3 id="auto-61">3.9<span style="margin-left: 1em"></span>Other protocols</h3> - <p> - Protocols not discussed in this specification may use client messages - with type IDs [1000,10000) and server messages [11000,20000). Overlaps - between several protocols are allowed : the information about - implemented interfaces for an object is meant to disambiguate such - situations. - </p> - <h3 id="auto-62">3.10<span style="margin-left: 1em"></span>Table of IDs</h3> - <p> - The tables presented in this section give the number associated to the - message types. These tables are the reference on the subject ; any - information found somewhere else is wrong if it is not the same as found - here. This is for protocol version 1. - </p> - <h4 id="auto-63"><a id="type-nums"></a>3.10.1<span style="margin-left: 1em"></span>Message types</h4> - <p> - <a id="auto-64"></a><h5>Base protocol</h5> - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -6.05em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid; border-top: 1px solid">message</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↑</var> id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↓</var> id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid; border-top: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid">message</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↑</var> id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↓</var> id</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Hello</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">0</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10000</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Stat</strong> / <strong>StatR</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10010</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Error</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10001</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>List</strong> / <strong>ListR</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">11</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10011</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Ack</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10002</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Create</strong> / <strong>Created</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">12</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10012</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Delete</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">13</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Attach</strong> / <strong>Attached</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">5</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10005</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Rename</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">14</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Send</strong> / <strong>Recieve</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">6</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10006</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Link</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">15</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Detach</strong> / <strong>Detached</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">7</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10007</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>ReadLink</strong> / - <strong>ReadLinkR</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">16</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10016</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Serve</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">8</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Incoming</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10008</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Accept</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">9</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 0 solid; border-bottom: 0 solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr></tbody> - </table> - </div> - <p> - <a id="auto-65"></a><h5>Authentication & privileges</h5> - </p> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -1.65em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid; border-top: 1px solid">message</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↑</var> id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid"><var>↓</var> id</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>Authenticate</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">30</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid"><strong>NewToken</strong> / - <strong>NewTokenR</strong></td> - <td style="border-right: 1px solid; border-bottom: 1px solid">31</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">10031</td> - </tr></tbody> - </table> - </div> - <h4 id="auto-66"><a id="error-nums"></a>3.10.2<span style="margin-left: 1em"></span>Error messages</h4> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -6.05em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid; border-top: 1px solid">id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid">cause</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">1</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Incompatible versions</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">2</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Command/interface not implemented</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">3</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Invalid request (e.g. : out of bounds)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">4</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Invalid handle</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">5</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Attach request rejected</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">6</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Action impossible because object is in use (cannot - delete, …)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">7</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">No such object (invalid path)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">8</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Could not resolve link</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">9</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Incorrect credentials</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">10</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">Unauthorized</td> - </tr></tbody> - </table> - </div> - <h4 id="auto-67">3.10.3<span style="margin-left: 1em"></span>Object interfaces<a id="interface-nums"></a></h4> - <div style="margin-left: 35.145870328812px"> - <table style="display: inline; vertical-align: -4.95em"> - <tbody><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid; border-top: 1px solid">id</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid">name</td> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-top: 1px solid">must implement messages</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">0</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">servable</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>Serve</strong>, <strong>Accept</strong>, - <strong>Incoming</strong></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">1</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">non-NARP inside</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">once attached, inside data is arbitrary</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">2</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">NARP service</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">once attached, inside data is a NARP service (ie has - objects, …)</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">3</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">enumerable</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>List</strong>, <strong>ListR</strong></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">4</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">is symlink</td> - <td style="border-right: 1px solid; border-bottom: 1px solid"><strong>ReadLink</strong>, - <strong>ReadLinkR</strong></td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">10</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">file</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">once attached, file semantics</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">11</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">terminal</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">once attached, terminal semantics</td> - </tr><tr> - <td style="border-right: 1px solid; border-bottom: 1px solid; border-left: 1px solid">12</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">graphics window</td> - <td style="border-right: 1px solid; border-bottom: 1px solid">once attached, GUI semantics</td> - </tr></tbody> - </table> - </div> - <p> - <a id="auto-68"></a><h5>Servable</h5>This interface specifies that the object is - currently an empty object waiting for someone to issue a - <strong>Serve</strong> command on it, providing it with an - implementation of some interfaces. - </p> - <p> - <a id="auto-69"></a><h5>non-NARP inside</h5>This interfaces indicates that once - attached to the object, the messages sent/recieved to it are not - supposed to be NARP format but any arbitrary format. If this interface - is not specified, then it is expected that the messages transmitted will - follow the general NARP protocol (message format, standard - hello/ack/error messages). - </p> - <p> - <a id="auto-70"></a><h5>NARP service</h5>This interface indicates that once - attached to the object, one can have access to a new NARP namespace - where at least the following operations are supported : - <strong>Stat</strong>, <strong>Attach</strong>, <strong>Send</strong>, - <strong>Recieve</strong>, <strong>Detach</strong>. Additionnal messages - may or may not be supported. - </p> - <h2 id="auto-71">4<span style="margin-left: 1em"></span>Architecture of a NARP implementation in - OCaml or Haskell</h2> - <p> - An asynchronous implementation can be easily programmed in functionnal - languages such as OCaml or Haskell, using closures as continuations for - <em>what to do when a (response) message arrives</em>. - </p> - <p> - TODO - </p> - <h2 id="auto-72">5<span style="margin-left: 1em"></span>Using NARP to design an Operating System</h2> - <p> - When designing the NARP protocol, we had in mind that it would be - possible to use it in a new operating system design at many levels : - access to devices, process management, memory management, filesystems, - IPC, GUI, … - </p> - <p> - Kernel helpers could be developped so that a part of the NARP - multiplexing and demultiplexing takes place in kernel land, before - messages are passed to userspace. This would allow the simplification of - useless mux-demux chains taking place on the same machine. Another - possible helper would be to map a virtual memory region to a NARP - ressource implementing a standard filing protocol, much as memory mapped - files in standard OSes (only this would work with arbitrary ressources). - </p> - <p> - TODO - </p> - </body> -</html>
\ No newline at end of file |