Interface Signatures

Signatures are defined in files with extension '.signature'. A signature model may optionally:

It is also possible to import namespaces:

import myproject.types.*

File imports and namespace imports cannot be used together (see the Help page on namespaces).

  • define new types visible only in the interface model.

An example signature:

signature myFirstInterface

Optionally, define local types, for instance,

types // local to this interface
   type Command
   type MyType
   vector Requests = Command []

Optionally define

  • Commands: synchronous input calls that require a reply possibly with a value. The caller is blocked until the reply is received

  • Signals: asynchronous input calls, no reply is required. The caller is not blocked.

  • Notifications: asynchronous output - not blocking.

The example below contains all three parts; note that commands start with the type of the return value. Commands may have in, inout, and out parameters. When the direction is not explicitly given in is assumed as default. Signals and notifications can only have in parameters.

commands
   Time CurrentTime ( Status st, string info, out bool error )
   string Command (Request req, inout int result)
   void Null
   int Reset
   real Value (in int something)

signals
   start (real val)
   doIt (in Request req)
   go

notifications
   myState (Status s)
   error
   no