RngStream rng_stream = NULL;
rng_stream = RngStream_CopyStream(common_rng_stream);
- id_hash = xbt_dict_hash(id);
+ id_hash = xbt_str_hash(id);
RngStream_AdvanceState(rng_stream, 0, id_hash);
trace = xbt_new0(s_tmgr_trace_t, 1);
trace->s_probabilist.next_event = 0;
if(generator2 == NULL) {
- trace->s_probabilist.event_generator[0] = generator1;
+ trace->s_probabilist.event_generator[1] = generator1;
} else {
trace->s_probabilist.event_generator[1] = generator2;
trace->s_probabilist.event_generator[1]->rng_stream = rng_stream;
tmgr_trace_event_t trace_event = NULL;
tmgr_event_t event = NULL;
tmgr_trace_t trace = NULL;
+ double event_delta;
if (event_date > date)
return NULL;
return NULL;
trace = trace_event->trace;
+ *model = trace_event->model;
switch(trace->type) {
case e_trace_list:
event = xbt_dynar_get_ptr(trace->s_list.event_list, trace_event->idx);
*value = event->value;
- *model = trace_event->model;
if (trace_event->idx < xbt_dynar_length(trace->s_list.event_list) - 1) {
xbt_heap_push(h->heap, trace_event, event_date + event->delta);
break;
case e_trace_probabilist:
- THROW_UNIMPLEMENTED;
+
+ //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;
}