Titan



signature


Procedure signatures (or signatures for short) are needed for procedure-based communication. Signatures are syntactically similar to external functions (contain the remote procedure prototype) while semantically are similar to type definitions (used for template definitions). There are two classes of signatures:

  1. Signature for blocking communication
  2. Signature for non-blocking communication

Related keywords:


1. Blocking communication is blocking on the calling and the called side, i.e., TTCN-3 processing is suspended until the respective response has arrived.

signature identifier  ( [ parameter_list ] )[ return return_type ] [ exception exception_list ] ;


2. Non-blocking communication is only blocking on the called side,  i.e., TTCN-3 processing is suspended on the called side until the response has been sent.

signature identifier  ( [ parameter_list ] ) noblock [ exception exception_list ] ;


Example 1: signature for blocking communication

signature P_MyRemoteProcOne ();

P_MyRemoteProcOne will be used for blocking procedure-based communication. It has neither parameters nor a return value.


Example 2: signature for non-blocking communication

signature P_MyRemoteProcTwo () noblock;

P_MyRemoteProcTwo will be used for non blocking procedure-based communication. It has neither parameters nor a return value.


Example 3: parameters of procedure signatures

signature P_MyRemoteProcThree (in integer pl_Par1, out float pl_Par2, inout integer pl_Par3);

P_MyRemoteProcThree will be used for blocking procedure-based communication. The procedure has three parameters: pl_Par1 an in parameter of type integer, pl_Par2 an out parameter of type float and pl_Par3 an inout parameter of type integer.


Example 4: value returning remote procedures

signature P_MyRemoteProcFour (in integer pl_Par1) return integer;

P_MyRemoteProcFour will be used for blocking procedure-based communication. The procedure has the in parameter pl_Par1 of type integer and returns a value of type integer after its termination.


Example 5: specifying exceptions

signature P_MyRemoteProcFive (inout float pl_Par1) return integer exception (ExceptionType1, ExceptionType2); 

P_MyRemoteProcFive will be used for blocking procedure-based communication. It returns a float value in the inout parameter pl_Par1 and an integer value, or may raise exceptions of type ExceptionType1 or ExceptionType2


Example 6: specifying exceptions for non-blocking communication

signature P_MyRemoteProcSix (in integer pl_Par1) noblock exception (integer, float); 

P_MyRemoteProcSix will be used for non-blocking procedure-based communication. In case of an unsuccessful termination, P_MyRemoteProcSix raises exceptions of type integer or float.



BNF definition of signature