A Vision for Open Hypermedia Systems Nürnberg and Leggett

Appendix E. Current Protocol Proposal in Sproc Interface Format

This is a rendering of the current OHP proposal by Davis et al. in the Sproc Interface Format defined in Appendix D. The changes suggessted in Anderson are not included, even though some were widely agreed upon. This specification is laregly to provide an example interface.

# These are the target classes.  A program may belong to more than one class.
TARGET  server
TARGET  client
TARGET  all

# These are the types not provided intrinsically
TYPE  locspec_t  STRUCTURE (
   ContentType : NTstring;
   Content : NTstring;
   Count : NTstring;
   ReverseCount : NTstring;
   Name : NTstring;
   Script : NTstring;
);

TYPE  locspec_1d  DYNAMIC 1 DIMENSION ARRAY OF  locspec_t;

# The services

# These are the server-initiated calls
SEQUENCE  LaunchDocument  server
   MESSAGE  LaunchDocument  server -> client
   {
      DocumentName : NTstring;
      ReadOnly : boolean;
      DocumentNickname : NTstring;
      DocumentType : NTstring;
      DataCallback : boolean;
      Channel : integer;
   };

SEQUENCE  DisplayAnchor  server
   MESSAGE  DisplayAnchor  server -> client
   {
      AnchorId : id_t;
      Presentation : NTstring;
      Channel : integer;
   };

SEQUENCE  DisplayLocSpec  server
   MESSAGE  DisplayLocSpec  server -> client
   {
      LocSpec : locspec_t;
      Presentation : NTstring;
      Channel : integer;
   };

SEQUENCE  Interpret  server
   MESSAGE  Interpret  server -> client
   {
      ScriptType : BTstring;
      Data : NTstring;
      Channel : integer;
   };

SEQUENCE  CloseNode  server
   MESSAGE  CloseNode  server -> client
   {
      UpdateNode : boolean;
      Channel : integer;
   };
   MESSAGE  UpdateAnchors  client -> server
   {
      num_anchs : integer;
      AnchorIds_ids : id_1d[num_ancs];
      LocSpecs : locspec_1d[num_ancs];
      Directions : NTstring_1d[num_ancs];
      Presentations : NTstring_1d[num_ancs];
      Services : NTstring_1d[num_ancs];      
      Channel : integer;
   };

# These are client-initiated calls
SEQUENCE  CouldntFindThisMessage  client
   MESSAGE  CouldntFindThisMessage  client -> server
   {
      Channel : integer;
   };
   MESSAGE  HeresNewAnchor  server -> client
   {
      AnchorId : id_t;
      LocSpec : locspec_t;
      Direction : NTstring;
      Presentation : NTstring;
      Service : NTstring;
      Channel : integer;
   };

SEQUENCE  GetNode  client
   MESSAGE  GetNode  client -> server
   {
      DocumentName : NTstring;
      Channel : integer;
   };
   MESSAGE  HeresDocument  server -> client
   {
      Data : NTstring;
      Channel : integer;
   };

SEQUENCE  GetServices  client
   MESSAGE  GetServices  client -> server
   {
      Channel : integer;
   };
   MESSAGE  HeresServices  server -> client
   {
      num_items : integer;
      Menuitems : NTstring_1d[num_items];
      Services : NTstring_1d[num_items];
      Channel : integer;
   };

SEQUENCE  GetAnchorTable  client
   MESSAGE  GetAnchorTable  client -> server
   {
      Channel : integer;
   };
   MESSAGE  HeresAnchorTable  server -> client
   {
      num_items : integer;
      LocSpecs : locspec_1d[num_items];
      Directions : NTstring_1d[num_items];
      Presentations : NTstring_1d[num_items];
      Services : NTstring_1d[num_items];
      Channel : integer;
   };

SEQUENCE  CreateNode  client
   MESSAGE  CreateNode  client -> server
   {
      DocumentName : NTstring;
      DocumentType : NTstring;
   };
   MESSAGE  HeresNewChannel  server -> client
   {
      SendDocument : boolean;
      DocumentNickname : NTstring;
      Channel : integer;
   };

SEQUENCE  GetAnchorTable  client
   MESSAGE  GetAnchorTable  client -> server
   {
      num_items : integer;
      LocSpecs : locspec_1d[num_items];
      Directions : NTstring_1d[num_items];
      Presentations : NTstring_1d[num_items];
      Services : NTstring_1d[num_items];
      Channel : integer;
   };

SEQUENCE  UpdateNode  client
   MESSAGE  UpdateNode  client -> server
   {
      DocumentType : NTstring;
      Date : NTstring;
      Channel : integer;
   };

SEQUENCE  Closing  client
   MESSAGE  Closing  client -> server
   {
      Channel : integer;
   };

SEQUENCE  RequestService  client
   MESSAGE  RequestService  client -> server
   {
      Service : NTstring;
      AnchorID : id_t;
      LocSpec : locspec_t;
      Presentation : NTstring;
      Channel : integer;
   };

# These are the "bi-directional" messages
SEQUENCE  Error  all
   MESSAGE  Error  all -> all
   {
      Subject : NTstring;
      Message : NTstring;
      Channel : integer;
   };

SEQUENCE  Other  all
   MESSAGE  Other  all -> all
   {
      num_tags : integer;
      tag_names : NTstring_1d[num_tags];
      tag_vals : NTstring_1d[num_tags];
      Channel : integer;
   };


Contents


Peter J. Nürnberg, John J. Leggett
HRL, CSDL, Texas A&M
original page URL: http://jodi.ecs.soton.ac.uk/Articles/v01/i02/Nurnberg/appe.html