 
 
 
 
 
 
 
  
 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 - 2008-07-17