- // if it's for me, I'm done
- evtname = xbt_dynar_get_as(evt, 0, char *);
- if (!strcasecmp(name, evtname)) {
- return (char**) xbt_dynar_to_array(evt);
- } else {
- // Else, I have to store it for the relevant colleague
- xbt_dynar_t otherqueue =
- (xbt_dynar_t) xbt_dict_get_or_null(xbt_action_queues, evtname);
- if (otherqueue == nullptr) { // Damn. Create the queue of that guy
- otherqueue = xbt_dynar_new(sizeof(xbt_dynar_t), xbt_dynar_free_voidp);
- xbt_dict_set(xbt_action_queues, evtname, otherqueue, nullptr);
- }
- xbt_dynar_push(otherqueue, &evt);
- }
- }
- // end of file reached while searching in vain for more work
- } else {
- // Get something from my queue and return it
- xbt_dynar_shift(myqueue, &evt);
- return (char**) xbt_dynar_to_array(evt);
- }
+/**
+ * @ingroup XBT_replay
+ * @brief Get the function that was previously registered to handle a kind of action
+ *
+ * This can be useful if you want to override and extend an existing action.
+ */
+action_fun xbt_replay_action_get(const char* action_name)
+{
+ return simgrid::xbt::action_funs.at(action_name);
+}