static int histogram_config(mtev_dso_generic_t *self, mtev_hash_table *o) { struct histogram_config *conf = mtev_image_get_userdata(&self->hdr); const char *duty; char *duty_copy, *cp, *brk; int i; if(!mtev_hash_retr_str(o, "duty", strlen("duty"), &duty)) { duty = "histogram"; } if(!conf) conf = calloc(1, sizeof(*conf)); mtev_image_set_userdata(&self->hdr, conf); duty_copy = strdup(duty); for(i = 0, cp = strtok_r(duty_copy, ",", &brk); cp; cp = strtok_r(NULL, ",", &brk), i++); free(duty_copy); conf->quantiles = calloc(1, sizeof(double)*i); duty_copy = strdup(duty); for(cp = strtok_r(duty_copy, ",", &brk); cp; cp = strtok_r(NULL, ",", &brk)) { if(!strcmp(cp,"histogram")) conf->histogram = mtev_true; else if(!strcmp(cp,"mean")) conf->mean = mtev_true; else if(!strcmp(cp,"sum")) conf->sum = mtev_true; else { char *endptr; double q; q = strtod(cp, &endptr); if(*endptr == '\0') conf->quantiles[conf->n_quantiles++] = q; } } qsort(conf->quantiles, conf->n_quantiles, sizeof(double), double_sort); free(duty_copy); return 0; }
static lua_web_conf_t *get_config(mtev_dso_generic_t *self) { if(the_one_conf) return the_one_conf; the_one_conf = mtev_image_get_userdata(&self->hdr); if(the_one_conf) return the_one_conf; the_one_conf = calloc(1, sizeof(*the_one_conf)); mtev_image_set_userdata(&self->hdr, the_one_conf); return the_one_conf; }
static lua_general_conf_t *get_config(mtev_dso_generic_t *self) { lua_general_conf_t *conf = mtev_image_get_userdata(&self->hdr); if(conf) return conf; conf = calloc(1, sizeof(*conf)); pthread_key_create(&conf->key, NULL); mtev_image_set_userdata(&self->hdr, conf); return conf; }
static struct loader_conf *__get_loader_conf(mtev_dso_loader_t *self) { struct loader_conf *c; c = mtev_image_get_userdata(&self->hdr); if(!c) { c = calloc(1, sizeof(*c)); pthread_key_create(&c->key, NULL); mtev_image_set_userdata(&self->hdr, c); } return c; }