diff options
Diffstat (limited to 'doc/narp.tm')
-rw-r--r-- | doc/narp.tm | 411 |
1 files changed, 258 insertions, 153 deletions
diff --git a/doc/narp.tm b/doc/narp.tm index a992ffe..8fe4a04 100644 --- a/doc/narp.tm +++ b/doc/narp.tm @@ -25,7 +25,7 @@ <item>Naming of networked machines (with IP adresses and DNS records) <item>Naming of internet ressources over protocols such as HTTP, IMAP, - ... + IRC, specfic web services, ... </itemize> We propose here a novel architecture with the purpose of unifying all the @@ -49,8 +49,9 @@ fundamental operation that we call <em|recursive multiplexing>, or just <em|multiplexing>. - The NARP protocol is meant to include a variety of different operations - that may or may not be implemented by a specific NARP server. + 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. <section|High-level overview> @@ -63,7 +64,7 @@ <item><em|query> : get information on a ressource identified by name <item><em|list> : know the names of ressources presented by the service - (eventually in a specific sub-path) + (possibly in a specific sub-path) <item><em|attach> : get an object interface for accessing a ressource, identified by name @@ -107,15 +108,9 @@ <item><verbatim|detach> : close a descriptor and detach from a ressource - <item><verbatim|create> : requests the creation of a ressource in the - namespace - - <item><verbatim|delete> : requests the deletion of a ressource in the - namespace - - <item><verbatim|link> : create a link for an object under another name - (these are always symbolic links, and are independent of the pointed - ressource) + <item><verbatim|create>, <verbatim|delete>, <verbatim|rename>, + <verbatim|link> : requests the creation or modification of a ressource in + the namespace </itemize> The server may also at any moment send a message, including: @@ -141,7 +136,8 @@ 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<\footnote> - Research is to be done on shortcutting mechanisms + Research is to be done on shortcutting mechanisms in specific situations + where too many levels of recursion cause a performance issue. </footnote>). A client wishing to act as a reverse object server may use the following commands: @@ -228,7 +224,7 @@ 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 possibilith would be for the NARP protocol to + 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 <verbatim|put> or <verbatim|get> on large files, or @@ -236,7 +232,7 @@ 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. + buffered. Research is yet to be done on this specific subject. <subsection|Permissions> @@ -247,6 +243,13 @@ delegate it's privileges on a given object to another client. Advanced right management functionnalities are to be discussed. + <subsection|Reliability concerns> + + 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. + <subsection|Example NARP servers> <subsubsection|Virtual NARP server (i.e. NARP router)> @@ -323,8 +326,8 @@ A protocol message is given in the following form: <block*|<tformat|<table|<row|<cell|element type>|<cell|element - type>|<cell|<math|\<ldots\>>>|<cell|element type>>|<row|<cell|element - description>|<cell|element description>|<cell|<math|\<ldots\>.>>|<cell|element + type>|<cell|...>|<cell|element type>>|<row|<cell|element + description>|<cell|element description>|<cell|...>|<cell|element description>>>>> The following element types apply: @@ -374,9 +377,9 @@ 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 most messages. Specific interfaces for - objects are responsible for making sure messages have been transmitted - correctly. + 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. <paragraph|Hello<math|\<uparrow\>\<downarrow\>>> @@ -425,11 +428,9 @@ answer. </indent> - <paragraph|StatR<math|\<downarrow\>>> + <paragraph|StatR<math|\<downarrow\>>>Response to the <strong|Stat> message. <\indent> - Response to the <strong|Stat> message. - <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|arr(int32)>>|<row|<cell|header>|<cell|request ID>|<cell|implemented interface>>>>> @@ -454,7 +455,7 @@ requested>|<cell|base path string>>>>> </indent> - <paragraph|ListR<math|\<downarrow\>>> + <paragraph|ListR<math|\<downarrow\>>>Response to the <strong|List> message. <\indent> One message is passed for each entry in the requested range: @@ -478,7 +479,8 @@ ID>|<cell|filename>>>>> </indent> - <paragraph|Attached<math|\<downarrow\>>> + <paragraph|Attached<math|\<downarrow\>>>Response to the <strong|Attach> + command. <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|int32>>|<row|<cell|header>|<cell|request @@ -491,12 +493,15 @@ <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|*>>|<row|<cell|header>|<cell|handle>|<cell|payload>>>>> + + This message does not expect a response. </indent> <paragraph|Recieve<math|\<downarrow\>>> <\indent> - Spontaneous server message indicating some data is sent by object. + Spontaneous server message indicating some data is sent by an attached + ressource. This message does not expect a response. <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|*>>|<row|<cell|header>|<cell|handle>|<cell|payload>>>>> </indent> @@ -505,6 +510,8 @@ <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>>|<row|<cell|header>|<cell|handle>>>>> + + This message does not expect a response. </indent> <paragraph|Detached<math|\<downarrow\>>> @@ -526,7 +533,8 @@ empty object to be served, a directory, a file, ...) </indent> - <paragraph|Created<math|\<downarrow\>>> + <paragraph|Created<math|\<downarrow\>>>Response to the <strong|Create> + command. <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|arr(int32)>>|<row|<cell|header>|<cell|request @@ -576,7 +584,8 @@ ID>|<cell|path>>>>> </indent> - <paragraph|ReadLinkR<math|\<downarrow\>>> + <paragraph|ReadLinkR<math|\<downarrow\>>>Response to the <strong|ReadLink> + message. <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|str>>|<row|<cell|header>|<cell|request @@ -598,19 +607,23 @@ <paragraph|Serve<math|\<uparrow\>>> <\indent> - <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|str>>|<row|<cell|header>|<cell|request - ID>|<cell|path>>>>> + <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|str>|<cell|array(int32)>>|<row|<cell|header>|<cell|request + ID>|<cell|path>|<cell|announced interfaces>>>>> 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> message. The handle attributed to the served object is known as the - <em|server handle> and is used in the following few messages. + <em|server handle> and is used in the <strong|Incoming> and + <strong|Detach> messages. To stop serving an object, the client simply sends a <strong|Detach> 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> message must be sent to all of them if we want to close them. + + The <em|announced interfaces> serves to answer <strong|Stat> messages on + the object while we are serving it. </indent> <paragraph|Incoming<math|\<downarrow\>>> @@ -678,18 +691,19 @@ client will use it to gain same access to the object. </indent> - <paragraph|NewTokenR<math|\<downarrow\>>> + <paragraph|NewTokenR<math|\<downarrow\>>>Response to the <strong|NewToken> + message. <\indent> <block*|<tformat|<table|<row|<cell|>|<cell|int32>|<cell|str>>|<row|<cell|header>|<cell|message ID>|<cell|token>>>>> </indent> - More TODO : request account creation, manage user groups and ACLs, ... + TODO : request account creation, manage user groups and ACLs, ... <subsection|File protocol> - Client messages [50,100) ; server messages [10050,10100). + Client messages [50,100) ; server messages [10050,10100). TODO <subsection|UI protocols> @@ -777,20 +791,57 @@ <\indent> <block|<tformat|<table|<row|<cell|id>|<cell|name>|<cell|must implement messages>>|<row|<cell|0>|<cell|servable>|<cell|<strong|Serve>, - <strong|Accept>, <strong|Incoming>>>|<row|<cell|1>|<cell|NARP - service>|<cell|once attached, inside data is also NARP - protocol>>|<row|<cell|2>|<cell|non-NARP socket>|<cell|once attached, - inside data is arbitrary>>|<row|<cell|3>|<cell|enumerable>|<cell|<strong|List>, + <strong|Accept>, <strong|Incoming>>>|<row|<cell|1>|<cell|non-NARP + inside>|<cell|once attached, inside data is + arbitrary>>|<row|<cell|2>|<cell|NARP service>|<cell|once attached, inside + data is a NARP service (ie has objects, + ...)>>|<row|<cell|3>|<cell|enumerable>|<cell|<strong|List>, <strong|ListR>>>|<row|<cell|4>|<cell|is symlink>|<cell|<strong|ReadLink>, <strong|ReadLinkR>>>|<row|<cell|10>|<cell|file>|<cell|once attached, file semantics>>|<row|<cell|11>|<cell|terminal>|<cell|once attached, terminal semantics>>|<row|<cell|12>|<cell|graphics window>|<cell|once attached, - graphics semantics>>>>> + GUI semantics>>>>> </indent> + <paragraph|Servable>This interface specifies that the object is currently + an empty object waiting for someone to issue a <strong|Serve> command on + it, providing it with an implementation of some interfaces. + + <paragraph|non-NARP inside>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). + + <paragraph|NARP service>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|Attach>, + <strong|Send>, <strong|Recieve>, <strong|Detach>. Additionnal messages may + or may not be supported. + <section|Architecture of a NARP implementation in OCaml or Haskell> - \; + 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>. + + TODO + + <section|Using NARP to design an Operating System> + + 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, ... + + 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). + + TODO </body> <\initial> @@ -803,79 +854,84 @@ <\collection> <associate|auto-1|<tuple|1|1>> <associate|auto-10|<tuple|2.5.3|3>> - <associate|auto-11|<tuple|2.5.4|4>> + <associate|auto-11|<tuple|2.5.4|3>> <associate|auto-12|<tuple|2.6|4>> <associate|auto-13|<tuple|2.7|4>> <associate|auto-14|<tuple|2.8|4>> - <associate|auto-15|<tuple|2.8.1|4>> - <associate|auto-16|<tuple|2.8.2|4>> - <associate|auto-17|<tuple|2.8.3|4>> - <associate|auto-18|<tuple|2.8.4|5>> - <associate|auto-19|<tuple|2.8.5|5>> + <associate|auto-15|<tuple|2.9|4>> + <associate|auto-16|<tuple|2.9.1|4>> + <associate|auto-17|<tuple|2.9.2|4>> + <associate|auto-18|<tuple|2.9.3|4>> + <associate|auto-19|<tuple|2.9.4|5>> <associate|auto-2|<tuple|2|1>> - <associate|auto-20|<tuple|2.8.6|5>> - <associate|auto-21|<tuple|3|5>> - <associate|auto-22|<tuple|3.1|5>> - <associate|auto-23|<tuple|3.2|5>> - <associate|auto-24|<tuple|3.3|6>> - <associate|auto-25|<tuple|3.3.0.1|6>> - <associate|auto-26|<tuple|3.3.0.2|6>> - <associate|auto-27|<tuple|3.3.0.3|7>> - <associate|auto-28|<tuple|3.3.0.4|7>> - <associate|auto-29|<tuple|3.3.0.5|7>> + <associate|auto-20|<tuple|2.9.5|5>> + <associate|auto-21|<tuple|2.9.6|5>> + <associate|auto-22|<tuple|3|5>> + <associate|auto-23|<tuple|3.1|5>> + <associate|auto-24|<tuple|3.2|5>> + <associate|auto-25|<tuple|3.3|6>> + <associate|auto-26|<tuple|3.3.0.1|6>> + <associate|auto-27|<tuple|3.3.0.2|6>> + <associate|auto-28|<tuple|3.3.0.3|6>> + <associate|auto-29|<tuple|3.3.0.4|6>> <associate|auto-3|<tuple|2.1|1>> - <associate|auto-30|<tuple|3.3.0.6|7>> - <associate|auto-31|<tuple|3.3.0.7|7>> - <associate|auto-32|<tuple|3.3.0.8|8>> - <associate|auto-33|<tuple|3.3.0.9|8>> - <associate|auto-34|<tuple|3.3.0.10|8>> - <associate|auto-35|<tuple|3.3.0.11|8>> - <associate|auto-36|<tuple|3.3.0.12|8>> - <associate|auto-37|<tuple|3.3.0.13|8>> - <associate|auto-38|<tuple|3.3.0.14|8>> - <associate|auto-39|<tuple|3.3.0.15|8>> + <associate|auto-30|<tuple|3.3.0.5|6>> + <associate|auto-31|<tuple|3.3.0.6|7>> + <associate|auto-32|<tuple|3.3.0.7|7>> + <associate|auto-33|<tuple|3.3.0.8|7>> + <associate|auto-34|<tuple|3.3.0.9|7>> + <associate|auto-35|<tuple|3.3.0.10|7>> + <associate|auto-36|<tuple|3.3.0.11|7>> + <associate|auto-37|<tuple|3.3.0.12|7>> + <associate|auto-38|<tuple|3.3.0.13|8>> + <associate|auto-39|<tuple|3.3.0.14|8>> <associate|auto-4|<tuple|2.2|2>> - <associate|auto-40|<tuple|3.3.0.16|8>> - <associate|auto-41|<tuple|3.3.0.17|9>> - <associate|auto-42|<tuple|3.3.0.18|9>> - <associate|auto-43|<tuple|3.3.0.19|9>> - <associate|auto-44|<tuple|3.3.0.20|9>> - <associate|auto-45|<tuple|3.3.0.21|9>> - <associate|auto-46|<tuple|3.3.0.22|9>> - <associate|auto-47|<tuple|3.3.0.23|10>> - <associate|auto-48|<tuple|3.4|10>> - <associate|auto-49|<tuple|3.5|10>> + <associate|auto-40|<tuple|3.3.0.15|8>> + <associate|auto-41|<tuple|3.3.0.16|8>> + <associate|auto-42|<tuple|3.3.0.17|8>> + <associate|auto-43|<tuple|3.3.0.18|8>> + <associate|auto-44|<tuple|3.3.0.19|8>> + <associate|auto-45|<tuple|3.3.0.20|9>> + <associate|auto-46|<tuple|3.3.0.21|9>> + <associate|auto-47|<tuple|3.3.0.22|9>> + <associate|auto-48|<tuple|3.3.0.23|9>> + <associate|auto-49|<tuple|3.4|9>> <associate|auto-5|<tuple|2.3|2>> - <associate|auto-50|<tuple|3.5.0.24|10>> - <associate|auto-51|<tuple|3.5.0.25|10>> - <associate|auto-52|<tuple|3.5.0.26|10>> - <associate|auto-53|<tuple|3.6|10>> - <associate|auto-54|<tuple|3.7|10>> - <associate|auto-55|<tuple|3.7.1|10>> - <associate|auto-56|<tuple|3.7.2|10>> - <associate|auto-57|<tuple|3.8|11>> - <associate|auto-58|<tuple|3.8.1|11>> - <associate|auto-59|<tuple|3.8.2|11>> - <associate|auto-6|<tuple|2.4|3>> - <associate|auto-60|<tuple|3.9|11>> - <associate|auto-61|<tuple|3.10|?>> - <associate|auto-62|<tuple|3.10.1|?>> - <associate|auto-63|<tuple|3.10.1.1|?>> - <associate|auto-64|<tuple|3.10.1.2|?>> - <associate|auto-65|<tuple|3.10.2|?>> - <associate|auto-66|<tuple|3.10.3|?>> - <associate|auto-67|<tuple|4|?>> + <associate|auto-50|<tuple|3.5|9>> + <associate|auto-51|<tuple|3.5.0.24|9>> + <associate|auto-52|<tuple|3.5.0.25|10>> + <associate|auto-53|<tuple|3.5.0.26|10>> + <associate|auto-54|<tuple|3.6|10>> + <associate|auto-55|<tuple|3.7|10>> + <associate|auto-56|<tuple|3.7.1|10>> + <associate|auto-57|<tuple|3.7.2|10>> + <associate|auto-58|<tuple|3.8|10>> + <associate|auto-59|<tuple|3.8.1|10>> + <associate|auto-6|<tuple|2.4|2>> + <associate|auto-60|<tuple|3.8.2|10>> + <associate|auto-61|<tuple|3.9|10>> + <associate|auto-62|<tuple|3.10|10>> + <associate|auto-63|<tuple|3.10.1|11>> + <associate|auto-64|<tuple|3.10.1.1|11>> + <associate|auto-65|<tuple|3.10.1.2|11>> + <associate|auto-66|<tuple|3.10.2|11>> + <associate|auto-67|<tuple|3.10.3|11>> + <associate|auto-68|<tuple|3.10.3.1|11>> + <associate|auto-69|<tuple|3.10.3.2|11>> <associate|auto-7|<tuple|2.5|3>> + <associate|auto-70|<tuple|3.10.3.3|12>> + <associate|auto-71|<tuple|4|12>> + <associate|auto-72|<tuple|5|12>> <associate|auto-8|<tuple|2.5.1|3>> <associate|auto-9|<tuple|2.5.2|3>> - <associate|error-nums|<tuple|3.10.2|?>> - <associate|footnote-1|<tuple|1|3>> + <associate|error-nums|<tuple|3.10.2|11>> + <associate|footnote-1|<tuple|1|2>> <associate|footnote-2|<tuple|2|?>> - <associate|footnr-1|<tuple|1|3>> + <associate|footnr-1|<tuple|1|2>> <associate|footnr-2|<tuple|2|?>> - <associate|interface-nums|<tuple|3.10.3|?>> - <associate|rev-sock|<tuple|2.4|3>> - <associate|type-nums|<tuple|3.10.1|?>> + <associate|interface-nums|<tuple|3.10.3|11>> + <associate|rev-sock|<tuple|2.4|2>> + <associate|type-nums|<tuple|3.10.1|11>> </collection> </references> @@ -934,194 +990,243 @@ <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-13>> - <with|par-left|<quote|1tab>|2.8<space|2spc>Example NARP servers + <with|par-left|<quote|1tab>|2.8<space|2spc>Reliability concerns <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-14>> - <with|par-left|<quote|2tab>|2.8.1<space|2spc>Virtual NARP server (i.e. - NARP router) <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <with|par-left|<quote|1tab>|2.9<space|2spc>Example NARP servers + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-15>> - <with|par-left|<quote|2tab>|2.8.2<space|2spc>NARP file server - <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <with|par-left|<quote|2tab>|2.9.1<space|2spc>Virtual NARP server (i.e. + NARP router) <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-16>> - <with|par-left|<quote|2tab>|2.8.3<space|2spc>NARP terminal/GUI server + <with|par-left|<quote|2tab>|2.9.2<space|2spc>NARP file server <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-17>> - <with|par-left|<quote|2tab>|2.8.4<space|2spc>NARP e-mail and newsgroup - server <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <with|par-left|<quote|2tab>|2.9.3<space|2spc>NARP terminal/GUI server + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-18>> - <with|par-left|<quote|2tab>|2.8.5<space|2spc>NARP chat server - <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <with|par-left|<quote|2tab>|2.9.4<space|2spc>NARP e-mail and newsgroup + server <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-19>> - <with|par-left|<quote|2tab>|2.8.6<space|2spc>NARP applicative server + <with|par-left|<quote|2tab>|2.9.5<space|2spc>NARP chat server <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-20>> + <with|par-left|<quote|2tab>|2.9.6<space|2spc>NARP applicative server + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-21>> + <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|3<space|2spc>Specifics of the NARP protocol> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-21><vspace|0.5fn> + <no-break><pageref|auto-22><vspace|0.5fn> <with|par-left|<quote|1tab>|3.1<space|2spc>Protocol description format <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-22>> + <no-break><pageref|auto-23>> <with|par-left|<quote|1tab>|3.2<space|2spc>Basic message format <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-23>> + <no-break><pageref|auto-24>> <with|par-left|<quote|1tab>|3.3<space|2spc>Message list for core NARP protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-24>> + <no-break><pageref|auto-25>> <with|par-left|<quote|4tab>|Hello<with|mode|<quote|math>|\<uparrow\>\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-25><vspace|0.15fn>> + <no-break><pageref|auto-26><vspace|0.15fn>> <with|par-left|<quote|4tab>|Error<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-26><vspace|0.15fn>> + <no-break><pageref|auto-27><vspace|0.15fn>> <with|par-left|<quote|4tab>|Ack<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-27><vspace|0.15fn>> + <no-break><pageref|auto-28><vspace|0.15fn>> <with|par-left|<quote|4tab>|Stat<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-28><vspace|0.15fn>> + <no-break><pageref|auto-29><vspace|0.15fn>> <with|par-left|<quote|4tab>|StatR<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-29><vspace|0.15fn>> + <no-break><pageref|auto-30><vspace|0.15fn>> <with|par-left|<quote|4tab>|List<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-30><vspace|0.15fn>> + <no-break><pageref|auto-31><vspace|0.15fn>> <with|par-left|<quote|4tab>|ListR<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-31><vspace|0.15fn>> + <no-break><pageref|auto-32><vspace|0.15fn>> <with|par-left|<quote|4tab>|Attach<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-32><vspace|0.15fn>> + <no-break><pageref|auto-33><vspace|0.15fn>> <with|par-left|<quote|4tab>|Attached<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-33><vspace|0.15fn>> + <no-break><pageref|auto-34><vspace|0.15fn>> <with|par-left|<quote|4tab>|Send<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-34><vspace|0.15fn>> + <no-break><pageref|auto-35><vspace|0.15fn>> <with|par-left|<quote|4tab>|Recieve<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-35><vspace|0.15fn>> + <no-break><pageref|auto-36><vspace|0.15fn>> <with|par-left|<quote|4tab>|Detach<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-36><vspace|0.15fn>> + <no-break><pageref|auto-37><vspace|0.15fn>> <with|par-left|<quote|4tab>|Detached<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-37><vspace|0.15fn>> + <no-break><pageref|auto-38><vspace|0.15fn>> <with|par-left|<quote|4tab>|<with|font-series|<quote|bold>|math-font-series|<quote|bold>|Create<with|mode|<quote|math>|\<uparrow\>>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-38><vspace|0.15fn>> + <no-break><pageref|auto-39><vspace|0.15fn>> <with|par-left|<quote|4tab>|Created<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-39><vspace|0.15fn>> + <no-break><pageref|auto-40><vspace|0.15fn>> <with|par-left|<quote|4tab>|Delete<with|mode|<quote|math>|\<uparrow\>><with|font-family|<quote|tt>|language|<quote|verbatim>|> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-40><vspace|0.15fn>> + <no-break><pageref|auto-41><vspace|0.15fn>> <with|par-left|<quote|4tab>|Link<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-41><vspace|0.15fn>> + <no-break><pageref|auto-42><vspace|0.15fn>> <with|par-left|<quote|4tab>|ReadLink<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-42><vspace|0.15fn>> + <no-break><pageref|auto-43><vspace|0.15fn>> <with|par-left|<quote|4tab>|ReadLinkR<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-43><vspace|0.15fn>> + <no-break><pageref|auto-44><vspace|0.15fn>> + + <with|par-left|<quote|4tab>|Rename<with|mode|<quote|math>|\<uparrow\>> + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-45><vspace|0.15fn>> <with|par-left|<quote|4tab>|Serve<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-44><vspace|0.15fn>> + <no-break><pageref|auto-46><vspace|0.15fn>> <with|par-left|<quote|4tab>|Incoming<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-45><vspace|0.15fn>> + <no-break><pageref|auto-47><vspace|0.15fn>> <with|par-left|<quote|4tab>|Accept<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-46><vspace|0.15fn>> + <no-break><pageref|auto-48><vspace|0.15fn>> <with|par-left|<quote|1tab>|3.4<space|2spc>Big message protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-47>> + <no-break><pageref|auto-49>> <with|par-left|<quote|1tab>|3.5<space|2spc>Authentification and rights managment commands <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-48>> + <no-break><pageref|auto-50>> <with|par-left|<quote|4tab>|Authenticate<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-49><vspace|0.15fn>> + <no-break><pageref|auto-51><vspace|0.15fn>> <with|par-left|<quote|4tab>|NewToken<with|mode|<quote|math>|\<uparrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-50><vspace|0.15fn>> + <no-break><pageref|auto-52><vspace|0.15fn>> <with|par-left|<quote|4tab>|NewTokenR<with|mode|<quote|math>|\<downarrow\>> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-51><vspace|0.15fn>> + <no-break><pageref|auto-53><vspace|0.15fn>> <with|par-left|<quote|1tab>|3.6<space|2spc>File protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-52>> + <no-break><pageref|auto-54>> <with|par-left|<quote|1tab>|3.7<space|2spc>UI protocols <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-53>> + <no-break><pageref|auto-55>> <with|par-left|<quote|2tab>|3.7.1<space|2spc>Terminal protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-54>> + <no-break><pageref|auto-56>> <with|par-left|<quote|2tab>|3.7.2<space|2spc>Graphical user interface protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-55>> + <no-break><pageref|auto-57>> <with|par-left|<quote|1tab>|3.8<space|2spc>Communication protocols <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-56>> + <no-break><pageref|auto-58>> <with|par-left|<quote|2tab>|3.8.1<space|2spc>Email and newsgroups protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-57>> + <no-break><pageref|auto-59>> <with|par-left|<quote|2tab>|3.8.2<space|2spc>Instant messaging protocol <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-58>> + <no-break><pageref|auto-60>> <with|par-left|<quote|1tab>|3.9<space|2spc>Other protocols <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-59>> + <no-break><pageref|auto-61>> + + <with|par-left|<quote|1tab>|3.10<space|2spc>Table of IDs + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-62>> + + <with|par-left|<quote|2tab>|3.10.1<space|2spc>Message types + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-63>> + + <with|par-left|<quote|4tab>|Base protocol + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-64><vspace|0.15fn>> + + <with|par-left|<quote|4tab>|Authentication & privileges + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-65><vspace|0.15fn>> + + <with|par-left|<quote|2tab>|3.10.2<space|2spc>Error messages + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-66>> + + <with|par-left|<quote|2tab>|3.10.3<space|2spc>Object interfaces + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-67>> + + <with|par-left|<quote|4tab>|Servable + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-68><vspace|0.15fn>> + + <with|par-left|<quote|4tab>|non-NARP inside + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-69><vspace|0.15fn>> + + <with|par-left|<quote|4tab>|NARP service + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-70><vspace|0.15fn>> <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|4<space|2spc>Architecture of a NARP implementation in OCaml or Haskell> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> - <no-break><pageref|auto-60><vspace|0.5fn> + <no-break><pageref|auto-71><vspace|0.5fn> + + <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|5<space|2spc>Using + NARP to design an Operating System> + <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> + <no-break><pageref|auto-72><vspace|0.5fn> </associate> </collection> </auxiliary>
\ No newline at end of file |