3 #include <fstreams.h>
\r
5 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
\r
8 units_new(runner_t runner, fstreams_t fstreams)
\r
14 units_t units = xbt_new0(s_units_t, 1);
\r
16 units->items = xbt_dynar_new(sizeof(unit_t), (void_f_pvoid_t)unit_free);
\r
18 xbt_dynar_foreach(fstreams->items, i, fstream)
\r
20 unit = unit_new(runner, NULL, NULL, fstream);
\r
21 xbt_dynar_push(units->items, &unit);
\r
29 units_is_empty(units_t units)
\r
37 return (0 == xbt_dynar_length(units->items));
\r
41 units_get_size(units_t units)
\r
49 return xbt_dynar_length(units->items);
\r
54 units_run_all(units_t units, xbt_os_mutex_t mutex)
\r
62 if(!xbt_dynar_length(units->items))
\r
65 xbt_dynar_foreach(units->items, i, unit)
\r
67 unit_run(unit, mutex);
\r
74 units_join_all(units_t units)
\r
82 if(!xbt_dynar_length(units->items))
\r
85 xbt_dynar_foreach(units->items, i, unit)
\r
88 xbt_os_thread_join(unit->thread, NULL);
\r
95 units_interrupt_all(units_t units)
\r
103 if(!xbt_dynar_length(units->items))
\r
106 xbt_dynar_foreach(units->items, i, unit)
\r
108 if(!(unit->successeded) && !(unit->interrupted))
\r
109 unit_interrupt(unit);
\r
116 units_summuarize(units_t units)
\r
124 if(!xbt_dynar_length(units->items))
\r
127 xbt_dynar_foreach(units->items, i, unit)
\r
129 unit_summuarize(unit);
\r
137 units_reset_all(units_t units)
\r
145 if(!xbt_dynar_length(units->items))
\r
148 xbt_dynar_foreach(units->items, i, unit)
\r
156 units_free(void** unitsptr)
\r
161 xbt_dynar_free(&((*((units_t*)unitsptr))->items));
\r