- while ((evt = action_get_action(argv[0]))) {
- msg_action_fun function =
- xbt_dict_get(action_funs, xbt_dynar_get_as(evt, 1, char *));
- (*function) (evt);
- xbt_dynar_free(&evt);
+ while ((evt = action_get_action(argv[0]))) {
+ msg_action_fun function = xbt_dict_get(action_funs, evt[1]);
+ (*function) (evt);
+ free((char**)evt);
+ }
+ } else { // Should have got my trace file in argument
+ xbt_assert1(argc >= 2,
+ "No '%s' agent function provided, no simulation-wide trace file provided to MSG_action_trace_run(), "
+ "and no process-wide trace file provided in deployment file. Aborting.",
+ argv[0]
+ );
+ xbt_replay_trace_reader_t reader = xbt_replay_trace_reader_new(argv[1]);
+ while ((evt=xbt_replay_trace_reader_get(reader))) {
+ if (!strcmp(argv[0],evt[0])) {
+ msg_action_fun function = xbt_dict_get(action_funs, evt[1]);
+ (*function) (evt);
+ free((char**)evt);
+ } else {
+ WARN1("%s: Ignore trace element not for me",
+ xbt_replay_trace_reader_position(reader));
+ }
+ }
+ xbt_replay_trace_reader_free(&reader);