Browse Source

ckdb - add round share count to 'homepage' and php

master
kanoi 10 years ago
parent
commit
1c66abb0a9
  1. 28
      pool/page.php
  2. 59
      src/ckdb.c

28
pool/page.php

@ -126,6 +126,8 @@ function pgtop($dotop, $user, $douser)
$phr = '?THs'; $phr = '?THs';
$plb = '?'; $plb = '?';
$nlb = '?'; $nlb = '?';
$pac = '0';
$per = '0';
$uhr = '?GHs'; $uhr = '?GHs';
$u1hr = ''; $u1hr = '';
if ($info !== false) if ($info !== false)
@ -168,10 +170,11 @@ function pgtop($dotop, $user, $douser)
} }
else else
{ {
$min = round(($sec % 3600) / 60); $min = round($sec / 60);
$hr = round($sec / 3600); $hr = round($min / 60);
$min -= ($hr * 60);
$plb = $hr.'h'; $plb = $hr.'h';
if ($min != 0) if ($min > 0)
$plb .= ' '.$min.'m'; $plb .= ' '.$min.'m';
} }
} }
@ -183,15 +186,21 @@ function pgtop($dotop, $user, $douser)
$nlb = $info['lastbc']; $nlb = $info['lastbc'];
if ($nlb != '?') if ($nlb != '?')
{ {
$sec = $now - $info['lastbc']; $sec = $now - $nlb;
$min = round($sec / 60); $min = round($sec / 60);
$nlb = $min.'m'; $nlb = $min.'m';
$s = $sec % 60; $s = $sec - $min * 60;
if ($s > 0) if ($s > 0)
$nlb .= " ${s}s"; $nlb .= " ${s}s";
} }
} }
if (isset($info['blockacc']))
$pac = $info['blockacc'];
if (isset($info['blockerr']))
$per = $info['blockerr'];
if (isset($info['u_hashrate5m'])) if (isset($info['u_hashrate5m']))
{ {
$uhr = $info['u_hashrate5m']; $uhr = $info['u_hashrate5m'];
@ -235,12 +244,19 @@ function pgtop($dotop, $user, $douser)
$top .= '<div class=topd>'; $top .= '<div class=topd>';
if ($dotop === true) if ($dotop === true)
{ {
$top .= '<table width=100%><tr><td>';
$top .= '<span class=topdes>CKPool:</span>'; $top .= '<span class=topdes>CKPool:</span>';
$top .= "<span class=topdat>$phr</span>"; $top .= "<span class=topdat>$phr</span>";
$top .= '<br>';
$top .= '<span class=topdes>Block Shares:</span>';
$top .= "<span class=topdat>$pac</span>";
$top .= '</td><td>';
$top .= '<span class=topdes>Pool, Last Block:</span>'; $top .= '<span class=topdes>Pool, Last Block:</span>';
$top .= "<span class=topdat>$plb</span>"; $top .= "<span class=topdat>$plb</span>";
$top .= '<br>';
$top .= '<span class=topdes>Network, Last Block:</span>'; $top .= '<span class=topdes>Network, Last Block:</span>';
$top .= "<span class=topdat>$nlb</span>"; $top .= "<span class=topdat>$nlb</span>";
$top .= '</td><td>';
if ($douser === true) if ($douser === true)
{ {
@ -273,7 +289,7 @@ Pass: <input type=password name=Pass size=10 value=''>
else else
$top .= '&nbsp;'; $top .= '&nbsp;';
$top .= '</div>'; $top .= '</td></tr></table></div>';
return $top; return $top;
} }
# #

59
src/ckdb.c

@ -223,6 +223,18 @@ typedef struct loadstatus {
} LOADSTATUS; } LOADSTATUS;
static LOADSTATUS dbstatus; static LOADSTATUS dbstatus;
// Share stats since last block
typedef struct poolstatus {
int64_t workinfoid; // Last block
double diffacc;
double differr;
double best_sdiff; // TODO
} POOLSTATUS;
static POOLSTATUS pool;
/* TODO: when we know about orphans, the count reset to zero
* will need to be undone - i.e. recalculate this data from
* the memory tables */
// size limit on the command string // size limit on the command string
#define CMD_SIZ 31 #define CMD_SIZ 31
#define ID_SIZ 31 #define ID_SIZ 31
@ -3576,6 +3588,11 @@ static bool shares_add(PGconn *conn, char *workinfoid, char *username, char *wor
} }
if (!DATA_SHARESUMMARY(ss_item)->reset) { if (!DATA_SHARESUMMARY(ss_item)->reset) {
if (DATA_SHARESUMMARY(ss_item)->workinfoid >= pool.workinfoid) {
// Negate coz the shares will re-add
pool.diffacc -= DATA_SHARESUMMARY(ss_item)->sharecount;
pool.differr -= DATA_SHARESUMMARY(ss_item)->errorcount;
}
zero_sharesummary(DATA_SHARESUMMARY(ss_item), cd, shares->diff); zero_sharesummary(DATA_SHARESUMMARY(ss_item), cd, shares->diff);
DATA_SHARESUMMARY(ss_item)->reset = true; DATA_SHARESUMMARY(ss_item)->reset = true;
} }
@ -3686,6 +3703,11 @@ static bool shareerrors_add(PGconn *conn, char *workinfoid, char *username,
} }
if (!DATA_SHARESUMMARY(ss_item)->reset) { if (!DATA_SHARESUMMARY(ss_item)->reset) {
if (DATA_SHARESUMMARY(ss_item)->workinfoid >= pool.workinfoid) {
// Negate coz the shares will re-add
pool.diffacc -= DATA_SHARESUMMARY(ss_item)->sharecount;
pool.differr -= DATA_SHARESUMMARY(ss_item)->errorcount;
}
zero_sharesummary(DATA_SHARESUMMARY(ss_item), cd, 0.0); zero_sharesummary(DATA_SHARESUMMARY(ss_item), cd, 0.0);
DATA_SHARESUMMARY(ss_item)->reset = true; DATA_SHARESUMMARY(ss_item)->reset = true;
} }
@ -3862,22 +3884,32 @@ static bool _sharesummary_update(PGconn *conn, SHARES *s_row, SHAREERRORS *e_row
case SE_NONE: case SE_NONE:
row->diffacc += s_row->diff; row->diffacc += s_row->diff;
row->shareacc++; row->shareacc++;
if (row->workinfoid >= pool.workinfoid)
pool.diffacc += s_row->diff;
break; break;
case SE_STALE: case SE_STALE:
row->diffsta += s_row->diff; row->diffsta += s_row->diff;
row->sharesta++; row->sharesta++;
if (row->workinfoid >= pool.workinfoid)
pool.differr += s_row->diff;
break; break;
case SE_DUPE: case SE_DUPE:
row->diffdup += s_row->diff; row->diffdup += s_row->diff;
row->sharedup++; row->sharedup++;
if (row->workinfoid >= pool.workinfoid)
pool.differr += s_row->diff;
break; break;
case SE_HIGH_DIFF: case SE_HIGH_DIFF:
row->diffhi += s_row->diff; row->diffhi += s_row->diff;
row->sharehi++; row->sharehi++;
if (row->workinfoid >= pool.workinfoid)
pool.differr += s_row->diff;
break; break;
default: default:
row->diffrej += s_row->diff; row->diffrej += s_row->diff;
row->sharerej++; row->sharerej++;
if (row->workinfoid >= pool.workinfoid)
pool.differr += s_row->diff;
break; break;
} }
} }
@ -4236,6 +4268,12 @@ static bool sharesummary_fill(PGconn *conn)
} else if (tv_newer(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare))) } else if (tv_newer(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare)))
copy_tv(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare)); copy_tv(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare));
if (row->workinfoid >= pool.workinfoid) {
pool.diffacc += row->diffacc;
pool.differr += row->diffsta + row->diffdup +
row->diffhi + row->diffrej;
}
tick(); tick();
} }
if (!ok) if (!ok)
@ -4563,9 +4601,14 @@ flail:
tmp[0] = '\0'; tmp[0] = '\0';
else { else {
snprintf(tmp, sizeof(tmp), snprintf(tmp, sizeof(tmp),
" Reward: %f, User: %s, Worker: %s", " Reward: %f, User: %s, Worker: %s, ShareEst: %.1f",
BTC_TO_D(DATA_BLOCKS(b_item)->reward), BTC_TO_D(DATA_BLOCKS(b_item)->reward),
username, workername); username, workername, pool.diffacc);
if (pool.workinfoid < DATA_BLOCKS(b_item)->workinfoid) {
pool.workinfoid = DATA_BLOCKS(b_item)->workinfoid;
pool.diffacc = pool.differr =
pool.best_sdiff = 0.0;
}
} }
LOGWARNING("%s(): BLOCK! Status: %s, Block: %s/...%s%s", LOGWARNING("%s(): BLOCK! Status: %s, Block: %s/...%s%s",
@ -4684,6 +4727,9 @@ static bool blocks_fill(PGconn *conn)
if (tv_newer(&(dbstatus.newest_createdate_blocks), &(row->createdate))) if (tv_newer(&(dbstatus.newest_createdate_blocks), &(row->createdate)))
copy_tv(&(dbstatus.newest_createdate_blocks), &(row->createdate)); copy_tv(&(dbstatus.newest_createdate_blocks), &(row->createdate));
if (pool.workinfoid < row->workinfoid)
pool.workinfoid = row->workinfoid;
} }
if (!ok) if (!ok)
k_add_head(blocks_free, item); k_add_head(blocks_free, item);
@ -7282,6 +7328,15 @@ static char *cmd_homepage(__maybe_unused PGconn *conn, char *cmd, char *id,
APPEND_REALLOC(buf, off, len, tmp); APPEND_REALLOC(buf, off, len, tmp);
} }
snprintf(tmp, sizeof(tmp), "blockacc=%.1f%c",
pool.diffacc, FLDSEP);
APPEND_REALLOC(buf, off, len, tmp);
snprintf(tmp, sizeof(tmp), "blockerr=%.1f%c",
pool.differr, FLDSEP);
APPEND_REALLOC(buf, off, len, tmp);
// TODO: assumes only one poolinstance (for now) // TODO: assumes only one poolinstance (for now)
p_item = last_in_ktree(poolstats_root, ctx); p_item = last_in_ktree(poolstats_root, ctx);

Loading…
Cancel
Save