diff --git a/maestro/pool_manager.c b/maestro/pool_manager.c index 38afd6e4a00ac25d1a1aa2c4f67cfa58e5c21090..5627de67fa04c3cef9b60f3f99e990fac9af2bda 100644 --- a/maestro/pool_manager.c +++ b/maestro/pool_manager.c @@ -441,6 +441,31 @@ mstro_pm__msg_free(Mstro__Pool__MstroMsg *msg) mstro__pool__mstro_msg__free_unpacked(msg, NULL); } } + + +/** if the application receiving EV needs to be told the name, send + * it, otherwise set it to NULL in the EV structure */ +static inline +mstro_status +mstro_pm__possibly_fill_event_cdoname( + const struct mstro_cdo_id *cdoid, + mstro_app_id recipient, + Mstro__Pool__Event *ev) +{ + recipient = recipient; /* avoid unused warning */ + + /** FIXME: for the moment we just always send the name, could be improved */ + mstro_status s= + mstro_pm_cdo_registry_cdo_name_lookup(cdoid, + (const char **)&ev->cdo_name); + if(s!=MSTRO_OK) { + WITH_CDO_ID_STR(idstr, cdoid, { + ERR("Cannot find CDO registry entry for |%s|\n", + idstr);}); + return MSTRO_NOENT; + } + return MSTRO_OK; +} /*** DECLARE ***/ @@ -968,13 +993,9 @@ mstro_pm__handle_seal_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_SEAL; ev.seal = cont->msg->seal; ev.origin_id = cont->msg->token->appid; - mstro_status s= - mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + mstro_status s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } status = mstro_pm__event_notify_and_continue( @@ -1030,14 +1051,10 @@ mstro_pm__handle_seal(Mstro__Pool__MstroMsg *msg) ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_SEAL; ev.seal = msg->seal; ev.origin_id = msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, @@ -1106,15 +1123,11 @@ mstro_pm__handle_offer_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_OFFER; ev.offer = cont->msg->offer; ev.origin_id = cont->msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1158,12 +1171,9 @@ mstro_pm__handle_offer(Mstro__Pool__MstroMsg *msg) ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_OFFER; ev.offer = msg->offer; ev.origin_id = msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } s = mstro_pm__event_notify_and_continue( @@ -1236,15 +1246,11 @@ mstro_pm__handle_require_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_REQUIRE; ev.require = cont->msg->require; ev.origin_id = cont->msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - - + s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1289,15 +1295,11 @@ mstro_pm__handle_require(Mstro__Pool__MstroMsg *msg) ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_REQUIRE; ev.require = msg->require; ev.origin_id = msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, true, @@ -1349,16 +1351,11 @@ mstro_pm__handle_retract_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_RETRACT; ev.retract = cont->msg->retract; ev.origin_id = cont->msg->token->appid; - mstro_status s = - mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + mstro_status s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1400,15 +1397,11 @@ mstro_pm__handle_retract(Mstro__Pool__MstroMsg *msg) ev.retract = msg->retract; ev.origin_id = msg->token->appid; mstro_status s = - mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, true, @@ -1479,15 +1472,11 @@ mstro_pm__handle_demand_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DEMAND; ev.demand = cont->msg->demand; ev.origin_id = cont->msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1534,15 +1523,11 @@ mstro_pm__handle_demand(Mstro__Pool__MstroMsg *msg) ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DEMAND; ev.demand = msg->demand; ev.origin_id = msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, true, @@ -1610,15 +1595,11 @@ mstro_pm__handle_withdraw_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_WITHDRAW; ev.withdraw = cont->msg->withdraw; ev.origin_id = cont->msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1662,15 +1643,11 @@ mstro_pm__handle_withdraw(Mstro__Pool__MstroMsg *msg) ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_WITHDRAW; ev.withdraw = msg->withdraw; ev.origin_id = msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, true, @@ -1725,15 +1702,11 @@ mstro_pm__handle_dispose_phase2(mstro_event event, ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DISPOSE; ev.dispose = cont->msg->dispose; ev.origin_id = cont->msg->token->appid; - s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, false, @@ -1773,15 +1746,11 @@ mstro_pm__handle_dispose(Mstro__Pool__MstroMsg *msg) ev.dispose = msg->dispose; ev.origin_id = msg->token->appid; mstro_status s = - mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } - s = mstro_pm__event_notify_and_continue( &ev, true, @@ -1834,12 +1803,9 @@ mstro_pm__handle_transfer_completed(Mstro__Pool__MstroMsg *msg) ev.transfer_completed = msg->transfer_completed; ev.origin_id = msg->token->appid; mstro_status s = - mstro_pm_cdo_registry_cdo_name_lookup(&cdoid, - (const char **)&ev.cdo_name); + mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev); if(s!=MSTRO_OK) { - WITH_CDO_ID_STR(idstr, &cdoid, { - ERR("Cannot find CDO registry entry for |%s|\n", - idstr);}); + goto BAILOUT_FREE; } s = mstro_pm__event_notify_and_continue(