/* ************************************************** */ int setnode(call_t *c, void *params) { struct nodedata *nodedata = malloc(sizeof(struct nodedata)); param_t *param; uint64_t min_pausetime, max_pausetime; /* default values */ get_node_position(c->node)->x = get_random_x_position(); get_node_position(c->node)->y = get_random_y_position(); get_node_position(c->node)->z = get_random_z_position(); nodedata->pausetime = 2000000000; min_pausetime = 0; max_pausetime = 0; /* get parameters */ das_init_traverse(params); while ((param = (param_t *) das_traverse(params)) != NULL) { if (!strcmp(param->key, "x")) { if (get_param_x_position(param->value, &(get_node_position(c->node)->x))) { goto error; } } if (!strcmp(param->key, "y")) { if (get_param_y_position(param->value, &(get_node_position(c->node)->y))) { goto error; } } if (!strcmp(param->key, "z")) { if (get_param_z_position(param->value, &(get_node_position(c->node)->z))) { goto error; } } if (!strcmp(param->key, "pausetime")) { if (get_param_time(param->value, &(nodedata->pausetime))) { goto error; } } if (!strcmp(param->key, "min-pausetime")) { if (get_param_time(param->value, &min_pausetime)) { goto error; } } if (!strcmp(param->key, "max-pausetime")) { if (get_param_time(param->value, &max_pausetime)) { goto error; } } } if (min_pausetime < max_pausetime ) { nodedata->pausetime = get_random_time_range(min_pausetime, max_pausetime); } set_node_private_data(c, nodedata); return 0; error: free(nodedata); return -1; }
uint64_t get_time_next(uint64_t debuut,uint64_t period,uint64_t timeNow) { double peri=time_nanos_to_seconds(period); double deb=time_nanos_to_seconds(debuut); double ti=time_nanos_to_seconds(timeNow); double time_app=ti-deb; int nbr=time_app/peri; nbr++; double debut=peri * nbr + deb; uint64_t at=time_seconds_to_nanos(debut) + get_random_time_range(0,period);//*/ DEBUG; // printf("TA: %lf nbr: %d (+ %lf =)DB: %lf\n",time_app,nbr,time_nanos_to_seconds(entitydata->debut),debut);//*/ return at; }