The purpose of this document is to specify the functionality of the existing SLC/PEP-II control software subsystem and applications. Not to be included here are any design related or implementation discussions. Also, in order to distinguish SLC features from NLC requirements, any discussion of anticipated NLC software should be limited to the last section of the document.
This describes the functional requirements for
the SLC Message Service. This is the common API by which almost all SLC
software communicates. It has undergone several major enhancements since
the initial implementation.
A. What is the application for and why is
it necessary?
Rather than an application, the message service is a crucial API and supporting routines used for almost all of the inter-task/process communication in the system. The initial emphasis was for communication over SLCNET between processes on the VAX and/or tasks on the micros. A later, separate implementation called Area Message Service (AMS) was added to provide similar functionality over TCP/IP for the new applications which were done using VME crates and the pSOS operating system or even (gasp!) PCs running DOS.
B. Who uses it?
With the exception of Kisnet, which was a special
point-to-point network used just for Fast Feedback, all processes on VMS
and tasks on other remote computers use one of the two message service
implementations to exchange commands and data.
The message service operates throughout the control
system. This means that it must have an implementation on every node, regardless
of hardware or operating system.
I'll start with some general requirements and
then proceed to the specifics. I'll combine both the initial SLCNET based
message service (SMS) and the later TCP/IP based Area Message Service (AMS)
into one set of requirements. This means that some of these requirements
may not be completely fulfilled by either implementation alone.
Destinations are defined locally, usually with an
include file so there is no name service in either SLC implementation.
Let's see what happens.
Now lets get down to the specifics of the API.
I'll use generic functions e.g. SEND to incorporate both SMS and AMS functionality.
This these names may not correspond to any routine which presently exists
in either SMS or AMS.
Since this is a quasi-realtime system performance
should be high on the list. Hard to know what to say here but I'll give
it a shot.
Managing connections and memory pool is a significant
factor in implementing a message service.
There we're several major 20-20 hindsight issues,
which we wish we had done differently.