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.