-
- if (trace_event->idx < xbt_dynar_length(trace->s_list.event_list) - 1) {
- xbt_heap_push(h->heap, trace_event, event_date + event->delta);
- trace_event->idx++;
- } else if (event->delta > 0) { /* Last element, checking for periodicity */
- xbt_heap_push(h->heap, trace_event, event_date + event->delta);
- trace_event->idx = 0;
- } else { /* We don't need this trace_event anymore */
- trace_event->free_me = 1;
+
+ switch(trace->type) {
+ case e_trace_list:
+
+ event = xbt_dynar_get_ptr(trace->s_list.event_list, trace_event->idx);
+
+ *value = event->value;
+
+ if (trace_event->idx < xbt_dynar_length(trace->s_list.event_list) - 1) {
+ xbt_heap_push(h->heap, trace_event, event_date + event->delta);
+ trace_event->idx++;
+ } else if (event->delta > 0) { /* Last element, checking for periodicity */
+ xbt_heap_push(h->heap, trace_event, event_date + event->delta);
+ trace_event->idx = 0;
+ } else { /* We don't need this trace_event anymore */
+ trace_event->free_me = 1;
+ }
+ break;
+
+ case e_trace_probabilist:
+
+ //FIXME : Simplist and not tested
+ //Would only work for failure events for now
+ *value = (double) trace->s_probabilist.next_event;
+ if(trace->s_probabilist.next_event == 0) {
+ event_delta = tmgr_event_generator_next_value(trace->s_probabilist.event_generator[0]);
+ trace->s_probabilist.next_event = 0;
+ } else {
+ event_delta = tmgr_event_generator_next_value(trace->s_probabilist.event_generator[1]);
+ trace->s_probabilist.next_event = 1;
+ }
+ xbt_heap_push(h->heap, trace_event, event_date + event_delta);
+
+ break;