Next: Example with convertors
Up: Building a server application
Previous: Building a server application
Contents
The service profiles offered by DIET are sometimes not understandable by the
service implementations. To solve this problem, a convertor processes each
profile before it is passed to the implementation. This is mainly used to hide
the implementation specific profile of a service from the user. It allows
different servers to declare the same service with the same profile using
different implementations of the service. As FAST relies on the path of the
service, the convertor can also change the path of the declared profile to
enable a correct evaluation of the incoming requests by FAST. If no convertor
is passed when declaring a new service, a default convertor is assigned to it
that does not change its profile nor its path.
To translate a profile, the convertor defines a new destination profile with a
new path. It then chooses for each argument of the new profile a predefined
function to assign this argument from the source profile. This allows the
following operations:
- Permutation of arguments. This is done implicitly by specifying
which argument in the source profile corresponds to which argument in the
destination profile.
- Copy of arguments. Arguments can be simply used by applying the
DIET_CVT_IDENTITY function. If the same source argument
corresponds to two destination arguments it is automatically copied.
- Creation of new arguments. New arguments can either contain
static values or the properties of existing arguments. To create a new static
value, the index for the source argument must be invalid (e.g., -1) and the arg
parameter must be set to the static argument. To extract a property of an
existing argument, other functions than DIET_CVT_IDENTITY must be
applied. The result of this function will then be used as the value for the
destination argument. Corresponding to the DIET datatypes, the following
functions exist:
- DIET_CVT_IDENTITY Copy the argument
- DIET_CVT_VECT_SIZE Get the size of a vector
- DIET_CVT_MAT_NB_ROW Get the number of rows of a matrix
- DIET_CVT_MAT_NB_COL Get the number of columns of a matrix
- DIET_CVT_MAT_ORDER Get the order of a matrix
- DIET_CVT_STR_LEN Get the length of the string
- DIET_CVT_FILE_SIZE Get the size of the file
Only the DIET_CVT_IDENTITY function can be applied to any argument;
all other functions only operate on one type of argument.
Next: Example with convertors
Up: Building a server application
Previous: Building a server application
Contents
DIET Team. 2010-05-26