+ if (! _amok_bw_initialized) {
+
+ /* Build the datatype descriptions */
+ bw_request_desc = gras_datadesc_struct("s_bw_request_t");
+ gras_datadesc_struct_append(bw_request_desc,"host",gras_datadesc_by_name("xbt_host_t"));
+ gras_datadesc_struct_append(bw_request_desc,"buf_size",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_append(bw_request_desc,"exp_size",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_append(bw_request_desc,"msg_size",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_close(bw_request_desc);
+ bw_request_desc = gras_datadesc_ref("bw_request_t",bw_request_desc);
+
+ bw_res_desc = gras_datadesc_struct("s_bw_res_t");
+ gras_datadesc_struct_append(bw_res_desc,"err",gras_datadesc_by_name("s_amok_remoterr_t"));
+ gras_datadesc_struct_append(bw_res_desc,"timestamp",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_append(bw_res_desc,"seconds",gras_datadesc_by_name("double"));
+ gras_datadesc_struct_append(bw_res_desc,"bw",gras_datadesc_by_name("double"));
+ gras_datadesc_struct_close(bw_res_desc);
+ bw_res_desc = gras_datadesc_ref("bw_res_t",bw_res_desc);
+
+ sat_request_desc = gras_datadesc_struct("s_sat_request_desc_t");
+ gras_datadesc_struct_append(sat_request_desc,"host",gras_datadesc_by_name("xbt_host_t"));
+ gras_datadesc_struct_append(sat_request_desc,"msg_size",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_append(sat_request_desc,"timeout",gras_datadesc_by_name("unsigned int"));
+ gras_datadesc_struct_close(sat_request_desc);
+ sat_request_desc = gras_datadesc_ref("sat_request_t",sat_request_desc);
+
+ /* Register the bandwidth messages */
+ gras_msgtype_declare("BW request", bw_request_desc);
+ gras_msgtype_declare("BW result", bw_res_desc);
+ gras_msgtype_declare("BW handshake", bw_request_desc);
+ gras_msgtype_declare("BW handshake ACK", bw_request_desc);
+
+ /* Register the saturation messages */
+ gras_msgtype_declare("SAT start", sat_request_desc);
+ gras_msgtype_declare("SAT started", gras_datadesc_by_name("amok_remoterr_t"));
+ gras_msgtype_declare("SAT begin", sat_request_desc);
+ gras_msgtype_declare("SAT begun", gras_datadesc_by_name("amok_remoterr_t"));
+ gras_msgtype_declare("SAT end", NULL);
+ gras_msgtype_declare("SAT ended", gras_datadesc_by_name("amok_remoterr_t"));
+ gras_msgtype_declare("SAT stop", NULL);
+ gras_msgtype_declare("SAT stopped", gras_datadesc_by_name("amok_remoterr_t"));
+ }
+