EDOC078
MIDAS Spectrum Access Server - RPC Program Specification
Edition 1.3
June 1998
Nuclear Physics Support Group
Central Laboratory of the Research Councils
Daresbury Laboratory
Introduction
This document describes the Spectrum Access Server (SAS) protocol specification used to provide access to the distributed spectrum servers which form part of the NSF data acquisition system.
The protocol is used to implement the Spectrum Access procedures defined in EDOC062 together with the spectrum format defined in EDOC061.
It is intended that this protocol be available over a number of communications media and hence the relevant Communications Protocol specification document should be consulted for detail in this area.
This protocol is an application carried by the RPC protocol which is described in the Eurogam document Remote Procedure Call.
The general structure of the protocol is described in the Eurogam document RPC Application Programs.
History
Version 1.0 June 1991 - Initial version
Version 1.1 Sept 1991
Version 1.2 Aug 1992 - Allow authorisation with no password if client machine is listed in user's .rhosts.sas, /etc/hosts.sas or /etc/hosts.equiv.
Version 1.3 June 1998 (This version) - document converted to HTML format
Additions to handle both big endian and small endian processors.
Operation
Version 1.3 of the document corresponds to version 1 of the program protocol.
Use
Throughout this document capability is an 8 byte (64 bit) opaque field generated by the server and used by the client as an access token.
Throughout this document the spectrum being accessed is identified by the string variable pathname. For on-line spectrum servers this is the name of the spectrum within the server. For off-line spectrum servers (ie disc-based spectra) this is either an absolute pathname identifying a disc file known to the spectrum server or is a pathname which is relative to the 'home' directory of the authenicated user issuing the request.
Overview
Program Specification
RPC Information
The SAS service uses only the Null authentication except for procedure 1 which can use Unix authentication protocol requests.
SAS is supported on the UDP/IP transport only
SAS is RPC Program 28000230
This is Version 1 of the protocol
SAS uses UDP port number 10230
XDR Information
Basic Data Types
typedef enum { FALSE = 0, TRUE = 1 } boolean; typedef enum { OK = 0 authentication_failure = 1 already_in_use = 2 capability_invalid = 3 pathname_invalid = 4 parameter_invalid = 5 not_a_spectrum = 6 not_a_directory = 7 data_access_error = 8 } stat; typedef string user<32> typedef string password<32> typedef string pathname<255> typedef string timedate[20] typedef unsigned map typedef opaque capability[8] typedef signed base[8] typedef unsigned range[8] typedef unsigned size[8] typedef unsigned dimension typedef unsigned arraytype typedef unsigned arraylayout typedef opaque countvalue typedef unsigned stringtype typedef unsigned stringid
Actually countvalue is not opaque; the data type is determined by type.
typedef struct { arraylayout layout; arraytype type; } attrib;
Procedure Status
0 |
OK |
1 |
user authentication error |
2 |
server already in use |
3 |
invalid capability |
4 |
invalid pathname |
5 |
invalid parameter value |
6 |
pathname not a spectrum (but should be) |
7 |
pathname not a directory (but should be) |
Procedure Summary
0 |
null procedure |
[go]![]() |
1 |
Authorise |
[go]![]() |
2 |
Create Spectrum |
[go]![]() |
3 |
Delete Spectrum |
[go]![]() |
4 |
Look Up Spectrum |
[go]![]() |
5 |
Read String |
[go]![]() |
6 |
Write String |
[go]![]() |
7 |
not used by SAS |
  |
8 |
Read Names |
[go]![]() |
9 |
Read Spectrum |
[go]![]() |
10 |
Write Spectrum |
[go]![]() |
11 |
Change Array Options |
[go]![]() |
12 |
UnAuthorise |
[go]![]() |
13 |
Generate Error Report |
[go]![]() |