EDOC034

 

 


MIDAS Register Server - RPC Program Specification and Implementation


 

Edition 2.0
September 2003

 

Nuclear Physics Group
Council for the Central Laboratory of the Research Councils
Daresbury Laboratory


Introduction

This document describes a general purpose protocol used within the MIDAS Data Acquisition System to enable clients to communicate with the various applications programs which control equipment and acquire data.

The general concepts of the Register Server are defined in the document EDOC079 (The Eurogam Register Server - An Overview) and an example of its use is described in the document EDOC024 which defines the requirements for the Eurogam Frontend Crate Server.

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

Edition 1.1 May 1991 - first entry in document server

Edition 1.2 June 1998 - conversion to HTML format only.

Edition 2.0 September 2003 - this version adds Version 2, implementing Procedures 17 & 18.

Operation

Version 2.0 of the document corresponds to versions 1 and 2 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.

Overview

 

Program Specification

RPC Information

The ERS service uses only the Null authentication

ERS is supported on the UDP/IP transport only

ERS is RPC Program 28000220

This is Version 1 and Version 2 of the protocol

ERS uses UDP port number 10220

RPC Information

    typedef   enum   { FALSE = 0, TRUE = 1 } boolean;

    typedef   enum {
       OK = 0
       resource_not_known       = 1
       resource_already_in_use  = 2
       capability_invalid       = 3
       register_not_known       = 4
       register_already_defined = 6
       prototype_not_known      = 7
       application_not_responding = 8
       invalid_cookie           = 9
       application_detected_failure = 10
       illegal_register_name    = 11
       out_of_memory            = 12
       count_to_small           = 13
       bad_request              = 14
    } stat;

    typedef    string resourece<255>
    typedef    string register<255>
    typedef    string class<255>
    typedef    string pattern<255>

    typedef    opaque capability[8]

    typedef    opaque cookie[4]
    typedef    opaque registervalue<1024>
    typedef    opaque registerattribute<1024>

    typedef   union   switch {boolean  valid}  {
        TRUE:
        struct  {
           register    reg;
           registerval    rval;
           cookie    kk;
           regvallist    nextentry;
        }
        FALSE:
        struct  {}
    }  regvallist;

    typedef   union   switch {boolean  valid}  {
        TRUE:
        struct  {
           register    reg;
           registerattribute    rattrib;
           cookie    kk;
           regattriblist    nextentry;
        }
        FALSE:
        struct  {}
    }  regattriblist;

    typedef   union   switch {boolean  valid}  {
        TRUE:
        struct  {
           register    reg;
           cookie    kk;
           reglist    nextentry;
        }
        FALSE:
        struct  {}
    }  reglist;

Procedure Summary

0

null procedure

1, 2

[go]
1

Claim resource

1, 2

[go]
2

Free resource

1, 2

[go]
3

Define register

1, 2

[go]
4

Undefine register

1, 2

[go]
5

Read register

1, 2

[go]
6

Write register

1, 2

[go]
7

Initialise register

1, 2

[go]
8

Inquire registers

1, 2

[go]
9

Read registers

1, 2

[go]
10

Write registers

1, 2

[go]
11

Initialise registers

1, 2

[go]
12

Read attribute

1, 2

[go]
13

Write attribute

1, 2

[go]
14

Undefine registers

1, 2

[go]
15

Read attributes

1, 2

[go]
16

Write attributes

1, 2

[go]
17

Read class name

2

[go]
18

Read class names

2

[go]