spree man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

SPREE(4)							      SPREE(4)

NAME
       spree - distributed interactive sessions.

SYNOPSIS
       mount {spree/spree} /n/remote

       /n/remote/name
       /n/remote/n
       /n/remote/n/ctl

DESCRIPTION
       Spree serves a file system that allows clients to interact through var‐
       ious types of engine (see spree(2) for an explanation of engines).   It
       serves  styx messages through file descriptor 0; thus it can be mounted
       directly with mount(1), or  made	 available  across  the	 network  with
       styxlisten (see listen(1)).

       Spree  serves  a	 name-space  consisting of a directory for each clique
       that is currently active, and a file, name, that	 holds	the  authenti‐
       cated  name  of	the  user  that	 has  mounted  the spree namespace.  A
       clique's directory holds at least one file, ctl; if a client opens this
       file, it can write to it communicate with the clique's engine, and read
       from it to find updates to the state of the clique.   Messages  written
       to  the	file are formed as text and the write yields an error if there
       is an error executing the command.  The first message  written  to  the
       file  is	 the  initial request to join the clique; conventionally it is
       the string join, but some engines accept other kinds of	message	 (e.g.
       watch).	 If  the initial request succeeds, the client will be informed
       of the current state of the clique by means  of	update	messages  read
       from  the  same file.  Reading from the file will block until an update
       is available, whereupon the read request will return  as	 many  updates
       are  available,	separated  by  newline	characters.  If there are more
       updates available than can fit in the read request, the last two	 bytes
       of  the	buffer	read  will  be a newline character and an asterisk (*)
       respectively, indicating that there are more updates to come.

       When spree is first started, it creates one clique,  a  ``lobby''  (see
       spree-lobby(4))	that allows other cliques to be created; this is named
       0).

       A client cannot join a particular clique more than once.

       A zero-length write to the ctl file causes any reads of that file  from
       the same file descriptor to yield EOF (no bytes).  This is necessary to
       force a hangup under systems such as Windows, where it is not  possible
       to interrupt a kproc blocked on a network read.

       The update messages generated by spree are as follows:

	      create objid parentid visibility objtype
		     Create an object, identified by objid, at the end of par‐
		     entid's children (parentid is -1 for  the	root  object).
		     Visibility is non-zero if the object's children are visi‐
		     ble to the member reading the  update.   Objtype  is  the
		     object's type (engine dependent).

	      tx srcid dstid start end index
		     Transfer  objects	from srcid to dstid.  Take the objects
		     from the range [start, end) in the children of srcid, and
		     insert them just before index in dstid.  When objects are
		     transferred to an object that conceals its children,  and
		     the  object  is itself visible, the objects will first be
		     transferred to the destination and then deleted;  objects
		     transferred  out  of such an object will first be created
		     and then transferred to their destination.	 This  enables
		     a	client	to  maintain some knowledge of where an object
		     has been transferred to, even if the object is no	longer
		     visible,  and means that a client is unable to keep track
		     of objects that are concealed from it.

	      del parentid start end objid...
		     Delete the range [start, end) of children from the object
		     identified	 by  parentid.	 Spree	guarantees  that those
		     objects will themselves not have any children.  The  list
		     of	 objids	 gives	the  actual identifiers of the objects
		     deleted, for the benefit of clients that do not  wish  to
		     keep lists of objects' children.

	      set objid attr val
		     Set the attribute named attr on object objid to val.

	      vis objid visibility
		     The  visibility of object to the reading member objid has
		     changed to visibility (non-zero if visible).

	      action Game engines can generate arbitrary messages of their own
		     devising; such messages are specific to particular engine
		     types.

	      Note that a given client does not	 have  to  interpret  all  the
	      above  messages  - different client types have their own conven‐
	      tions. The card client type uses most of the  above  functional‐
	      ity, for example, whereas a client for the chat engine listed in
	      spree(2) can get away with interpreting only  one	 message,  the
	      custom action chat.

	      Writes  to  the  opened  clique  file  are interpreted as clique
	      actions by the clique that has been loaded, and acted on accord‐
	      ingly.  Invalid actions will draw a write error.

EXAMPLE
       The simplest client!

       mount tcp!somehost.com!3242 /n/remote
       {
	    echo create chat >[1=0]
	    cat &
	    cat	 >[1=0] < /dev/cons
       } <> /n/remote/new

SOURCE
       /appl/cmd/cliques/spree.b

SEE ALSO
       spree(2)

								      SPREE(4)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net