next up previous contents
Next: 4. Interface Requirements Up: Status Server Requirements Previous: 2. General Description   Contents

Subsections

3. Functional Requirements

3.1 Clients must have the ability to create, update, and retrieve objects.

Any client on the CFHT network must have open access to create, update, and retrieve information from the Status Server at any time.

3.2 Clients must have the ability to remove objects.

In some cases, objects within the Status Server may have a short lifetime, so it must be possible to remove an object after it is no longer needed. If the Status Server is used as a staging area for building FITS headers, the FITS headers should probably be removed after the FITS file is created.

3.3 Information within the Status Server must be open and accessible to any connected client within the CFHT network.

Once connected to the Status Server, any client must have the ability to add, update, retrieve, or remove information within the Status Server. This implies that there will not be any required permissions or membership to access control lists in order to view or modify data.

3.4 Clients must be able to store String, Boolean, Floating Point, and Integer objects.

The Status Server must support the ability to store a variety of data types.  At a minimum, the following data types must be supported.

3.5 Clients must be able to place a monitor on objects.

In some cases, a client may be interested to know when the value of a particular object changes, but not interested in constantly polling the Status Server. As a result, it must be possible to place a monitor on objects. By placing a monitor on an object, the client will be informed when the object has changed state and what the new value of the object is.

3.6 Clients must be able to specify a ``deadband'' range for monitored floating point and integer objects.

In order to reduce the load on both Status Server and client, the client should be able to specify a "deadband" range for both floating point and integer objects. For example, given that the telescope pointing accuracy is around .1 arcseconds, it may make sense to provide a deadband limit surrounding the actual RA and Dec position of the telescope. As a result, monitors would not trigger for cases where a new value is not significantly different from a previous value.

3.7 Clients must be able to specify a minimum age for monitored objects.

The frequency with which a Status Server object is updated may exceed the desired notification frequency for a client monitoring the object. As a result, it must be possible for a client to specify a minimum time period between monitoring notifications. For example, if the datalogger information is stored in the Status Server, it would be updated every 10 seconds. However, a client monitoring a series of datalogger probes may only be interested in receiving an update each hour.

3.8 Clients must be able to specify the length of time an object can be considered valid.

Some of the status information within the Status Server will have a limited useful lifetime beyond which the information should be considered expired or invalid.  As an example, the seeing at the end of one evening should not be taken as the current seeing at the start of the next evening.

The valid lifetime of a status object must be the time frame within which clients would be notified of status updates of monitored objects.

3.9 Objects must be stored in an organized fashion, much like a file system.

Status Server objects must be grouped together in a tree-like fashion much like a file system. It would then be possible to traverse and manipulate objects within the Status Server much like traversing a directory tree in a file system. In such a system, it must be possible to access and refer to objects within the Status Server either via a fully qualified path-name combination or a relative path-name combination. This will require that the Status Server or API library keep track of the current directory for each client. An example of such a structure is shown in figure 1.

Figure 1: Status Server Hierarchical Name-Value Pair Representation
\begin{figure}
\begin{center}
{\footnotesize\begin{verbatim}...

3.10 The Status Server must have have the facilities to support an archive agent (client).

The Status Server should be designed to hold current information. However, it is likely that some information will need to be stored or archived for later use. It is quite possible that the monitoring capabilities of the Status Server will be sufficient for an archive client to compile a history. If not, the Status Server must be designed in a way so this support is available.


next up previous contents
Next: 4. Interface Requirements Up: Status Server Requirements Previous: 2. General Description   Contents
Tom Vermeulen
2002-05-28