Next: , Previous: GDS Introduction, Up: Using Guile in Emacs


3.5.2 GDS Architecture

In order to understand the following documentation fully it will help to have a picture in mind of how GDS works, so we briefly describe that here. GDS consists of three components.

The following diagram shows how these components are connected to each other.

     +----------------+
     | Program #1     |
     |                |
     | +------------+ |
     | | GDS Client |-_
     | +------------+ |-_                       +-------------------+
     +----------------+  -_TCP                  | Emacs             |
                           -_                   |                   |
                             -_+------------+   | +---------------+ |
                              _| GDS Server |-----| GDS Interface | |
     +----------------+     _- +------------+   | +---------------+ |
     | Program #2     |   _-                    +-------------------+
     |                | _- TCP
     | +------------+ _-
     | | GDS Client |-|
     | +------------+ |
     +----------------+

The data exchanged between client and server components, and between server and interface, is a sequence of sexps (parenthesised expressions) that are designed so as to be directly readable by both Scheme and Emacs Lisp. The use of a TCP connection means that the server and Emacs interface can theoretically be on a different computer from the client programs, but in practice there are currently two problems with this. Firstly the GDS API doesn't provide any way of specifying a non-local server to connect to, and secondly there is no security or authentication mechanism in the GDS protocol. These are issues that should be addressed in the future.