Example #1
0
/* ************************************************** */
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;
}
Example #2
0
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;
}