From 7f2f81736aaaf848f0d8aa1b859f1ad6b238c080 Mon Sep 17 00:00:00 2001 From: kanoi Date: Mon, 1 Sep 2014 11:03:06 +1000 Subject: [PATCH] ckdb - dsp_blocks for debugging and a function dsp_hash for formatting a hash --- src/ckdb.c | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/src/ckdb.c b/src/ckdb.c index 65bbed8a..5324c3cb 100644 --- a/src/ckdb.c +++ b/src/ckdb.c @@ -4819,6 +4819,38 @@ void sharesummary_reload() PQfinish(conn); } +// TODO: do this better ... :) +static void dsp_hash(char *hash, char *buf, size_t siz) +{ + char *ptr; + + ptr = hash + strlen(hash) - (siz - 1) - 8; + if (ptr < hash) + ptr = hash; + STRNCPYSIZ(buf, ptr, siz); +} + +static void dsp_blocks(K_ITEM *item, FILE *stream) +{ + char createdate_buf[DATE_BUFSIZ], expirydate_buf[DATE_BUFSIZ]; + BLOCKS *b = NULL; + char hash_dsp[16+1]; + + if (!item) + fprintf(stream, "%s() called with (null) item\n", __func__); + else { + b = DATA_BLOCKS(item); + + dsp_hash(b->blockhash, hash_dsp, sizeof(hash_dsp)); + tv_to_buf(&(b->createdate), createdate_buf, sizeof(createdate_buf)); + tv_to_buf(&(b->expirydate), expirydate_buf, sizeof(expirydate_buf)); + fprintf(stream, " hi=%d hash='%.16s' uid=%"PRId64" w='%s' " + "cd=%s ed=%s\n", + b->height, hash_dsp, b->userid, b->workername, + createdate_buf, expirydate_buf); + } +} + // order by height asc,blockhash asc,expirydate desc static cmp_t cmp_blocks(K_ITEM *a, K_ITEM *b) { @@ -4879,7 +4911,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, K_TREE_CTX ctx[1]; K_ITEM *b_item, *u_item, *old_b_item; char cd_buf[DATE_BUFSIZ]; - char blk_dsp[16+1], *ptr; + char hash_dsp[16+1]; BLOCKS *row; char *upd, *ins; char *params[11 + HISTORYDATECOUNT]; @@ -4901,11 +4933,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, HISTORYDATEINIT(row, cd, by, code, inet); - // TODO: do this better ... :) - ptr = blockhash + strlen(blockhash) - (sizeof(blk_dsp)-1) - 8; - if (ptr < blockhash) - ptr = blockhash; - STRNCPY(blk_dsp, ptr); + dsp_hash(blockhash, hash_dsp, sizeof(hash_dsp)); K_WLOCK(blocks_free); old_b_item = find_blocks(row->height, blockhash); @@ -4923,7 +4951,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, __func__, blocks_confirmed(DATA_BLOCKS(old_b_item)->confirmed), blocks_confirmed(confirmed), - height, blk_dsp, cd_buf); + height, hash_dsp, cd_buf); } return true; } @@ -4990,7 +5018,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, "Ignored: Block: %s/...%s/%s", __func__, blocks_confirmed(confirmed), - height, blk_dsp, cd_buf); + height, hash_dsp, cd_buf); goto flail; } want = BLOCKS_CONFIRM; @@ -5000,7 +5028,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, tv_to_buf(cd, cd_buf, sizeof(cd_buf)); LOGERR("%s(): Can't %s a non-existent Block: %s/...%s/%s", __func__, blocks_confirmed(confirmed), - height, blk_dsp, cd_buf); + height, hash_dsp, cd_buf); goto flail; } if (confirmed[0] == BLOCKS_CONFIRM) @@ -5016,7 +5044,7 @@ static bool blocks_add(PGconn *conn, char *height, char *blockhash, __func__, blocks_confirmed(confirmed), want, blocks_confirmed(DATA_BLOCKS(old_b_item)->confirmed), - height, blk_dsp, cd_buf); + height, hash_dsp, cd_buf); } goto flail; } @@ -5177,7 +5205,7 @@ flail: LOGWARNING("%s(): %sStatus: %s, Block: %s/...%s%s", __func__, blk ? "BLOCK! " : "", blocks_confirmed(confirmed), - height, blk_dsp, tmp); + height, hash_dsp, tmp); } return ok; @@ -6867,6 +6895,7 @@ static void alloc_storage() ALLOC_BLOCKS, LIMIT_BLOCKS, true); blocks_store = k_new_store(blocks_free); blocks_root = new_ktree(); + blocks_free->dsp_func = dsp_blocks; miningpayouts_free = k_new_list("MiningPayouts", sizeof(MININGPAYOUTS), ALLOC_MININGPAYOUTS, LIMIT_MININGPAYOUTS, true); @@ -8923,6 +8952,8 @@ static char *cmd_dsp(__maybe_unused PGconn *conn, __maybe_unused char *cmd, if (!i_file) return strdup(reply); + dsp_ktree(blocks_free, blocks_root, DATA_BLOCKS(i_file)->data, NULL); + dsp_ktree(transfer_free, trf_root, DATA_TRANSFER(i_file)->data, NULL); dsp_ktree(sharesummary_free, sharesummary_root, DATA_TRANSFER(i_file)->data, NULL);