#+TITLE:  Rudel Developer Manual
#+AUTHOR: Jan Moringen
#+EMAIL:  scymtym@users.sourceforge.net

* Related Work
** SubEthaEdit
   + http://www.codingmonkeys.de/subethaedit/
** Gobby
   + http://gobby.0x539.de/trac/
** Eclipse Communication Framework
   + http://www.eclipse.org/ecf/
** Saros
   + https://www.inf.fu-berlin.de/w/SE/DPP
** XML Sync Islands
   + http://hyperstruct.net/2007/02/24/xml-sync-islands-let-the-web-sharing-begin/
   + http://www.sameplace.cc/
** Google Wave [discontinued]
   + http://wave.google.com
* Rudel's Architecture
  #+BEGIN_CENTER
  #+CAPTION: Overview of Rudel's architecture
  [[file:./architecture.png]]
  #+END_CENTER
* Rudel's API
** Connections
   #+BEGIN: tag :project "../rudel.el" :pivot "rudel-connection"
   [[file:/homes/jmoringe/code/emacs/rudel/trunk/rudel.el::rudel-connection][rudel-connection]]
   #+END:

   #+BEGIN: hierarchy :project "../rudel.el" :pivot "rudel-obby-connection"
   + [[file:/homes/jmoringe/code/emacs/rudel/trunk/obby/rudel-obby-client.el::rudel-obby-connection][rudel-obby-connection]]
     + [[file:nil::transport][transport]]
     + [[file:nil::info][info]]
     + [[file:nil::contexts][contexts]]

   #+END:

   #+BEGIN: class-diagram-image :project "../rudel.el" :pivot "rudel-connection"
   [[file:/homes/jmoringe/code/emacs/rudel/trunk/doc//rudel-connection.png]]
   #+END:

* Backends
** Protocol Backends
*** Obby Backend
    #+BEGIN_CENTER
    #+CAPTION: Client connection state machine
    file:./images/obby-client-connection-states.png
    #+END_CENTER
*** Infinote Backend
    #+BEGIN_CENTER
    #+CAPTION: Client connection state machine
    file:./images/infinote-client-connection-states.png
    #+END_CENTER
** Transport Backends
*** TCP
*** XMPP
    The XMPP backend transports arbitrary messages, which can be
    strings or XML documents, through XMPP streams.

* Tricks
** Simulating a Slow Network Connection
   /Note: Probably only works for Linux/
   + Installing ::
     #+BEGIN_SRC sh
     tc qdisc add dev lo root handle 1:0 netem delay 200msec
     #+END_SRC
   + Resetting ::
     #+BEGIN_SRC sh
     tc qdisc del dev lo root handle 1:0
     #+END_SRC

* Settings							   :noexport:
#+STYLE: <link rel="stylesheet" type="text/css" href="manual.css"/>
#+STARTUP: showeverything
