+XBT_LOG_EXTERNAL_CATEGORY(bw);
+XBT_LOG_DEFAULT_CATEGORY(bw);
+
+static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload);
+static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload);
+
+
+void amok_bw_sat_init(void) {
+ gras_datadesc_type_t sat_request_desc;
+ /* Build the saturation datatype descriptions */
+
+ sat_request_desc = gras_datadesc_struct("s_sat_request_desc_t");
+ gras_datadesc_struct_append(sat_request_desc,"host",gras_datadesc_by_name("s_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,"duration",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 saturation messages */
+ gras_msgtype_declare_rpc("amok_bw_sat start", sat_request_desc, NULL);
+ gras_msgtype_declare_rpc("amok_bw_sat begin", sat_request_desc, NULL);
+ // gras_msgtype_declare_rpc("amok_bw_sat end", NULL, NULL);
+ gras_msgtype_declare_rpc("amok_bw_sat stop", NULL, NULL);
+
+}
+void amok_bw_sat_join(void) {
+ gras_cb_register(gras_msgtype_by_name("amok_bw_sat start"),
+ &amok_bw_cb_sat_start);
+ gras_cb_register(gras_msgtype_by_name("amok_bw_sat begin"),
+ &amok_bw_cb_sat_begin);
+}
+void amok_bw_sat_leave(void) {
+ gras_cb_unregister(gras_msgtype_by_name("amok_bw_sat start"),
+ &amok_bw_cb_sat_start);
+ gras_cb_unregister(gras_msgtype_by_name("amok_bw_sat begin"),
+ &amok_bw_cb_sat_begin);
+}