Three components comprise the DCS architecture: hardware servers (DHS), GUI clients, and the DCS server, DCSS. GUI clients and hardware servers communicate solely with DCSS, and DCSS operates the only listening sockets (i.e., network server) in the DCS system. Consequently, hardware servers are in a sense network clients of DCSS and are sometimes referred to as clients of DCSS in the DCS message protocol documentation.
DCS hardware servers encapsulate low-level control of physical devices such as motors, shutters, detectors, and so on. Hardware servers simply connect to DCSS and do whatever DCSS tells them to do. DCS GUI clients such as BLU-ICE are the ultimate source of these instructions to the hardware servers. DCSS passes the requests from GUI clients down to the appropriate hardware servers, and broadcasts all replies from hardware servers back to all of the GUI clients, thus keeping all GUI clients in complete synchronization.
By convention, the first four letters of the command in a DCS message specify the source and destination of the message in the DCS architecture. The five possibilities are the following:
stog
: server to gui client
stoh
: server to hardware client
gtos
: gui to server
htos
: hardware client to server
stoc
: server to client (hardware or GUI)