int main(int argc, char *argv[]) { rpc_init(); RPCSession* session = rpc_session(); if(!session) { printf("RPC server not connected\n"); return ERROR_RPC_DISCONNECTED; } rpc = rpc_connect(session->host, session->port, 3, true); if(!rpc) { printf("Failed to connect RPC server\n"); return ERROR_RPC_DISCONNECTED; } int rc; if((rc = request_md5(argc, argv))) { printf("Failed to get VM storage md5 checksum. Error code : %d\n", rc); rpc_disconnect(rpc); return ERROR_CMD_EXECUTE; } while(1) { // Wait for response if(rpc_connected(rpc)) { rpc_loop(rpc); } else { free(rpc); break; } } return 0; }
int main(int argc, char *argv[]) { rpc_init(); RPCSession* session = rpc_session(); if(!session) { printf("RPC server not connected\n"); return ERROR_RPC_DISCONNECTED; } rpc = rpc_connect(session->host, session->port, 3, true); if(rpc == NULL) { printf("Failed to connect RPC server\n"); return ERROR_RPC_DISCONNECTED; } int rc; if((rc = download(argc, argv))) { printf("Failed to download file. Error code : %d\n", rc); rpc_disconnect(rpc); return ERROR_CMD_EXECUTE; } while(1) { if(rpc_connected(rpc)) { rpc_loop(rpc); } else { free(rpc); break; } } }
bool coind_can_mine(YAAMP_COIND *coind, bool isaux) { if(coind->deleted) return false; if(!coind->enable) return false; if(!coind->auto_ready) return false; if(!rpc_connected(&coind->rpc)) return false; if(!coind->height || !coind->difficulty) return false; if(coind->isaux != isaux) return false; // if(isaux && !coind->aux.chainid) return false; // debuglog("can mine %s\n", coind->name); return true; }
void coind_create_job(YAAMP_COIND *coind, bool force) { // debuglog("create job %s\n", coind->symbol); bool b = rpc_connected(&coind->rpc); if(!b) return; CommonLock(&coind->mutex); YAAMP_JOB_TEMPLATE *templ = coind_create_template(coind); if(!templ) { CommonUnlock(&coind->mutex); return; } YAAMP_JOB *job_last = coind->job; if( !force && job_last && job_last->templ && job_last->templ->created + 45 > time(NULL) && templ->height == job_last->templ->height && templ->txcount == job_last->templ->txcount && strcmp(templ->coinb2, job_last->templ->coinb2) == 0) { // debuglog("coind_create_job %s %d same template %x \n", coind->name, coind->height, coind->job->id); delete templ; CommonUnlock(&coind->mutex); return; } //////////////////////////////////////////////////////////////////////////////////////// int height = coind->height; coind->height = templ->height-1; if(height > coind->height) { stratumlog("%s went from %d to %d\n", coind->name, height, coind->height); // coind->auto_ready = false; } if(height < coind->height && !coind->newblock) { if(coind->auto_ready && coind->notreportingcounter++ > 5) stratumlog("%s %d not reporting\n", coind->name, coind->height); } uint64_t coin_target = decode_compact(templ->nbits); coind->difficulty = target_to_diff(coin_target); coind->newblock = false; //////////////////////////////////////////////////////////////////////////////////////// object_delete(coind->job); coind->job = new YAAMP_JOB; memset(coind->job, 0, sizeof(YAAMP_JOB)); sprintf(coind->job->name, "%s", coind->symbol); coind->job->id = job_get_jobid(); coind->job->templ = templ; coind->job->profit = coind_profitability(coind); coind->job->maxspeed = coind_nethash(coind) * (g_current_algo->profit? min(1.0, coind_profitability(coind)/g_current_algo->profit): 1); coind->job->coind = coind; coind->job->remote = NULL; g_list_job.AddTail(coind->job); CommonUnlock(&coind->mutex); // debuglog("coind_create_job %s %d new job %x\n", coind->name, coind->height, coind->job->id); }