add: logger
This commit is contained in:
parent
f03b3f7fb7
commit
18804da4d8
8 changed files with 159 additions and 39 deletions
models
|
@ -27,11 +27,26 @@ controller_create(void)
|
|||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
controller_read_single(MDB_txn *mdb_txn, MDB_dbi mdb_dbi, controller_db_key key_meta, MDB_val *value)
|
||||
{
|
||||
int err;
|
||||
MDB_val key;
|
||||
|
||||
key.mv_size = sizeof(controller_db_key);
|
||||
key.mv_data = &key_meta;
|
||||
|
||||
if((err = mdb_get(mdb_txn, mdb_dbi, &key, value)) != 0)
|
||||
{
|
||||
fprintf(stderr, "mdb_get error %s\n", mdb_strerror(err));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
controller*
|
||||
controller_read(MDB_env *mdb_env)
|
||||
{
|
||||
int err;
|
||||
int meta_key_data;
|
||||
MDB_txn *mdb_txn;
|
||||
MDB_dbi mdb_dbi;
|
||||
|
||||
|
@ -59,44 +74,53 @@ controller_read(MDB_env *mdb_env)
|
|||
|
||||
new_controller = malloc(sizeof(*new_controller));
|
||||
|
||||
MDB_val key;
|
||||
MDB_val value;
|
||||
|
||||
key.mv_size = sizeof(controller_db_key);
|
||||
|
||||
meta_key_data = KEY_META_UUID;
|
||||
key.mv_data = &meta_key_data;
|
||||
if((err = mdb_get(mdb_txn, mdb_dbi, &key, &value)) != 0)
|
||||
{
|
||||
fprintf(stderr, "mdb_get error %s\n", mdb_strerror(err));
|
||||
}
|
||||
controller_read_single(mdb_txn, mdb_dbi, KEY_META_UUID, &value);
|
||||
memmove(new_controller->uuid, (uuid_t*)value.mv_data, sizeof(uuid_t));
|
||||
|
||||
meta_key_data = KEY_META_NAME;
|
||||
key.mv_data = &meta_key_data;
|
||||
if((err = mdb_get(mdb_txn, mdb_dbi, &key, &value)) != 0)
|
||||
{
|
||||
fprintf(stderr, "mdb_get error %s\n", mdb_strerror(err));
|
||||
}
|
||||
controller_read_single(mdb_txn, mdb_dbi, KEY_META_NAME, &value);
|
||||
strncpy(new_controller->name, (char*)value.mv_data, CONTROLLER_NAME_LENGTH);
|
||||
new_controller->name[CONTROLLER_NAME_LENGTH] = '\0';
|
||||
|
||||
controller_read_single(mdb_txn, mdb_dbi, KEY_META_PORT, &value);
|
||||
new_controller->port = ((uint16_t*)value.mv_data)[0];
|
||||
|
||||
controller_read_single(mdb_txn, mdb_dbi, KEY_META_RELAY_COUNT, &value);
|
||||
new_controller->relay_count = ((uint8_t*)value.mv_data)[0];
|
||||
|
||||
controller_debug(new_controller);
|
||||
|
||||
mdb_txn_abort(mdb_txn); // transaction is read only
|
||||
|
||||
return NULL;
|
||||
return new_controller;
|
||||
}
|
||||
|
||||
int
|
||||
controller_save_single(MDB_txn *mdb_txn, MDB_dbi mdb_dbi, controller_db_key key_meta, MDB_val value)
|
||||
{
|
||||
int err;
|
||||
|
||||
MDB_val key;
|
||||
key.mv_size = sizeof(controller_db_key);
|
||||
key.mv_data = &key_meta;
|
||||
|
||||
if((err = mdb_put(mdb_txn, mdb_dbi, &key, &value, 0)) != 0)
|
||||
{
|
||||
fprintf(stderr, "mdb_put error %s\n", mdb_strerror(err));
|
||||
mdb_txn_abort(mdb_txn);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
controller_save(controller *cntrlr, MDB_env *mdb_env)
|
||||
{
|
||||
int err;
|
||||
int meta_key_data;
|
||||
|
||||
MDB_txn *mdb_txn;
|
||||
MDB_dbi mdb_dbi;
|
||||
MDB_val key;
|
||||
MDB_val value;
|
||||
|
||||
controller_debug(cntrlr);
|
||||
|
@ -113,31 +137,31 @@ controller_save(controller *cntrlr, MDB_env *mdb_env)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
key.mv_size = sizeof(controller_db_key);
|
||||
|
||||
meta_key_data = KEY_META_UUID;
|
||||
key.mv_data = &meta_key_data;
|
||||
|
||||
value.mv_size = sizeof(cntrlr->uuid);
|
||||
value.mv_data = cntrlr->uuid;
|
||||
|
||||
if((err = mdb_put(mdb_txn, mdb_dbi, &key, &value, 0)) != 0)
|
||||
if(controller_save_single(mdb_txn, mdb_dbi, KEY_META_UUID, value))
|
||||
{
|
||||
fprintf(stderr, "mdb_put error %s\n", mdb_strerror(err));
|
||||
mdb_txn_abort(mdb_txn);
|
||||
return 1;
|
||||
}
|
||||
|
||||
meta_key_data = KEY_META_NAME;
|
||||
key.mv_data = &meta_key_data;
|
||||
|
||||
value.mv_size = sizeof(char) * strlen(cntrlr->name);
|
||||
value.mv_data = cntrlr->name;
|
||||
|
||||
if((err = mdb_put(mdb_txn, mdb_dbi, &key, &value, 0)) != 0)
|
||||
if(controller_save_single(mdb_txn, mdb_dbi, KEY_META_NAME, value))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
value.mv_size = sizeof(cntrlr->port);
|
||||
value.mv_data = &cntrlr->port;
|
||||
if(controller_save_single(mdb_txn, mdb_dbi, KEY_META_PORT, value))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
value.mv_size = sizeof(cntrlr->relay_count);
|
||||
value.mv_data = &cntrlr->relay_count;
|
||||
if(controller_save_single(mdb_txn, mdb_dbi, KEY_META_RELAY_COUNT, value))
|
||||
{
|
||||
fprintf(stderr, "mdb_put error %s\n", mdb_strerror(err));
|
||||
mdb_txn_abort(mdb_txn);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -153,4 +177,5 @@ controller_debug(controller *cntrlr)
|
|||
uuid_unparse(cntrlr->uuid, uuid_str);
|
||||
printf("%s @ %p\n", uuid_str, cntrlr);
|
||||
printf("name: %s\n", cntrlr->name);
|
||||
printf("port: %5d relays: %3d\n", cntrlr->port, cntrlr->relay_count);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue