First, declare the service(s) that will be offered5.2. Each service is described by a profile description called diet_profile_desc_t since the service does not specify the sizes of the data. The diet_profile_desc_t type is defined in DIET_server.h, and is very similar to diet_profile_t. The difference is that the prototype is described with the generic parts of diet_data_desc only, whereas the client description uses full diet_data.
file DIET_data.h:
struct diet_data_generic {
diet_data_type_t type;
diet_base_type_t base_type;
};
file DIET_server.h:
typedef struct diet_data_generic diet_arg_desc_t;
typedef struct {
char* path;
int last_in, last_inout, last_out;
diet_arg_desc_t* param_desc;
} diet_profile_desc_t;
diet_profile_desc_t* diet_profile_desc_alloc(const char* path,
int last_in, int last_inout, int last_out);
int diet_profile_desc_free(diet_profile_desc_t* desc);
diet_profile_desc_t *diet_profile_desc_alloc(int last_in, int last_inout, int last_out);
int diet_profile_desc_free(diet_profile_desc_t *desc);
Each profile can be allocated with diet_profile_desc_alloc with the same semantics as for diet_profile_alloc. Every argument of the profile will then be set with diet_generic_desc_set defined in DIET_server.h.