static bool work_decode(const json_t *val, struct work *work) { if (!jobj_binary(val, "midstate", work->midstate, sizeof(work->midstate))) { fprintf(stderr, "JSON inval midstate\n"); goto err_out; } if (!jobj_binary(val, "data", work->data, sizeof(work->data))) { fprintf(stderr, "JSON inval data\n"); goto err_out; } if (!jobj_binary(val, "hash1", work->hash1, sizeof(work->hash1))) { fprintf(stderr, "JSON inval hash1\n"); goto err_out; } if (!jobj_binary(val, "target", work->target, sizeof(work->target))) { fprintf(stderr, "JSON inval target\n"); goto err_out; } memset(work->hash, 0, sizeof(work->hash)); return true; err_out: return false; }
bool std_work_decode( const json_t *val, struct work *work) { int i; int data_size = sizeof(work->data); int target_size = sizeof(work->target); int adata_sz = ARRAY_SIZE(work->data); int atarget_sz = ARRAY_SIZE(work->target); algo_gate.set_data_and_target_size( &data_size, &target_size, &adata_sz, &atarget_sz, &allow_mininginfo ); if (jsonrpc_2) return rpc2_job_decode(val, work); if (unlikely(!jobj_binary(val, "data", work->data, data_size))) { applog(LOG_ERR, "JSON invalid data"); return false; } if (unlikely(!jobj_binary(val, "target", work->target, target_size))) { applog(LOG_ERR, "JSON invalid target"); return false; } for (i = 0; i < adata_sz; i++) work->data[i] = le32dec(work->data + i); for (i = 0; i < atarget_sz; i++) work->target[i] = le32dec(work->target + i); return true; }
static bool work_decode(const json_t *val, struct work *work) { if (unlikely(!jobj_binary(val, "data", work->data, sizeof(work->data)))) { applog(LOG_ERR, "JSON inval data"); goto err_out; } if (unlikely(!jobj_binary(val, "target", work->target, sizeof(work->target)))) { applog(LOG_ERR, "JSON inval target"); goto err_out; } memset(work->hash, 0, sizeof(work->hash)); return true; err_out: return false; }