I just attach a kv store that contain all the kv stores I need to the persistence pointer. G-WAN kv is fast, plus the number of records is small, it should not hurt performance.
xbuf_t *reply = get_reply(argv);
kv_t **kv_db = (kv_t **)get_env(argv, US_VHOST_DATA);
if (!kv_db[0])
{
kv_db[0] = (kv_t*) malloc(sizeof(kv_t));
if (!kv_db[0])
{
puts("Could not allocate memory for the v-host kv store");
return 500;
}
kv_init(kv_db[0], "kv_db", 10, 0, 0, 0);
}
kv_t *blog_db = (kv_t *) kv_get(kv_db[0], "blog_db", 7);
if (blog_db)
{
xbuf_cat(reply, "Blog already installed. GTFO.");
return 200;
}
blog_db = (kv_t *) malloc(sizeof(kv_t));
kv_init(blog_db, "blog_db", 0, 0, 0, 0);
if (!blog_db)
{
puts("Could not allocate memory for the blog kv store");
return 500;
}
_KV_ADD(kv_db[0], item, blog_db->name, blog_db, 0);
(_KV_ADD is a custom macro)