(@@picture omitted)
The definition file defines the interface between two software modules. An example input file is
(In the examples, the reserved words are given in upper case for clarity, although in an input file upper and lower case are treated the same.)
In general, the input file is composed of two parts: type declarations and procedure/function declarations.
In a type declaration complicated types may, if necessary, be defined in terms of simpler types.
In the second part of the file, the remote procedures and functions are defined by giving, for each one, its name, the number and type of parameters, their direction and, for a function, the type of value returned. This is very similar to the declaration of a external procedure in other high level languages.
See:
This list of declarations is automatically generated by the RPC Compiler, as the .ext file using the TYPES compiler option .If this pragma is not used, the default will be no timeout, or the value specified with the TIMEOUT compiler option, if that has been given.
The procedure (or function) name given must already have been declared.
The value is given in units of 10ms as a decimal integer value.
This specifies that, once started, the procedure should continue execution concurrently with the client. The fact that the client continues processing after the procesdure call does not, in this case, signify that the procedure is complete: only, that it has started. The flow of control for a normal call and for a concurrent call. The procedure ( not function) name given must already have been declared. It may not have any return (OUT or INOUT) parameters.
This method provides concurrency between the caller and the called routine. There are other methods of achieving concurrency, for example which allow a separate server task to run concurrently with the client processes, and be interrupted to service a remote call. These are described under "varieties of server".
See also PRAGMA CAST below.
This specifies that no return message should be sent at all. The call message is sent and return is immediately made to the caller.
Over a reliable stream oriented medium (TCP, DECnet, ISO TP4, CHI etc.), this allows information to be streamed between a client producing it and a server receiving it. This may significantly increase the efficiency in some applications.
Over a non-reliable medium (raw ethernet, UDP etc.), this option supresses the protocol which ensures reliable transmission of the data.There is no acknowledgement made at all. This can speed up execution by a factor of two or more.
Pragma CAST also allows broadcast and multicast calls to be made where the transport protocol supports it, for example over raw ethernet.
The procedure (or function) name given must already have been declared.
The parameter name must be the identifier of one of the parameters of that procedure. The parameter must be OUT or INOUT, and of type RPC_LONG.
This tells the compiler that external procedures PCK_ and UPK_ will be used to marshal and unmarshal (respectively) the given type. Marshalling is the process of taking data from the user space and putting it into a message in the correct format for transmission.
This pragma will allow types whose data type is a function of circumstance (unions, private conventions, etc) to be transferred as RPC parameters. It also allows the RPC system to send any related data which may be required, such as to send over parts of a FORTRAN common block. Also, side effects may be put into user marshalling routines, such as parameter value checking, rebinding of the client depending on a particular parameter value, etc.
The type must already be declared, and it is this declaration which will decide how much memory is allocated to receive a variable of this type in the server.
The marshaling routines must be provided by the user, or may be distributed with a library for certain special types. Their format is as follows: