Browse Source

Test

etomic
jl777 8 years ago
parent
commit
33b8a3931e
  1. 70
      iguana/exchanges/LP_stats.c

70
iguana/exchanges/LP_stats.c

@ -38,22 +38,50 @@ void LP_tradecommand_log(cJSON *argjson)
}
}
static uint32_t LP_requests,LP_reserveds,LP_connects,LP_connecteds,LP_tradestatuses,LP_parse_errors,LP_unknowns,LP_duplicates,LP_numridqids;
static uint32_t LP_requests,LP_reserveds,LP_connects,LP_connecteds,LP_tradestatuses,LP_parse_errors,LP_unknowns,LP_duplicates,LP_aliceids;
struct LP_swapstats
{
UT_hash_handle hh;
struct LP_quoteinfo Q;
double qprice;
uint64_t aliceid;
};
uint64_t Ridqids[128];
char method[16];
} *LP_swapstats;
struct LP_swapstats *LP_swapstats_find(uint64_t aliceid)
{
struct LP_swapstats *sp;
HASH_FIND(hh,LP_swapstats,&aliceid,sizeof(aliceid),sp);
return(sp);
}
struct LP_swapstats *LP_swapstats_add(uint64_t aliceid)
{
struct LP_swapstats *sp;
if ( (sp= LP_swapstats_find(aliceid)) == 0 )
{
sp = calloc(1,sizeof(*sp));
sp->aliceid = aliceid;
HASH_ADD(hh,LP_swapstats,aliceid,sizeof(aliceid),sp);
}
return(LP_swapstats_find(aliceid));
}
uint64_t LP_aliceid_calc(bits256 desttxid,int32_t destvout,bits256 feetxid,int32_t feevout)
{
return((((uint64_t)desttxid.uints[0] << 48) | ((uint64_t)destvout << 32) | ((uint64_t)feetxid.uints[0] << 16) | (uint32_t)feevout));
}
void LP_swapstats_line(char *line,struct LP_swapstats *sp)
{
char tstr[64];
printf("%s %8s %-4d %9s swap.%016llx: (%.8f %5s) -> (%.8f %5s) qprice %.8f",utc_str(tstr,sp->Q.timestamp),sp->Q.gui,LP_aliceids,sp->method,(long long)sp->aliceid,dstr(sp->Q.satoshis),sp->Q.srccoin,dstr(sp->Q.destsatoshis),sp->Q.destcoin,sp->qprice);
}
int32_t LP_statslog_parsequote(char *method,cJSON *lineobj)
{
double qprice; uint32_t timestamp; int32_t i,destvout,feevout,duplicate=0; char *gui,*base,*rel,tstr[128]; uint64_t txfee,satoshis,destsatoshis; bits256 desttxid,feetxid; struct LP_quoteinfo Q; uint64_t aliceid;
struct LP_swapstats *sp; double qprice; uint32_t timestamp; int32_t destvout,feevout,duplicate=0; char *gui,*base,*rel,line[1024]; uint64_t txfee,satoshis,destsatoshis; bits256 desttxid,feetxid; struct LP_quoteinfo Q; uint64_t aliceid;
memset(&Q,0,sizeof(Q));
if ( LP_quoteparse(&Q,lineobj) < 0 )
{
@ -83,20 +111,21 @@ int32_t LP_statslog_parsequote(char *method,cJSON *lineobj)
qprice = ((double)destsatoshis / (satoshis - txfee));
//printf("%s/v%d %s/v%d\n",bits256_str(str,desttxid),destvout,bits256_str(str2,feetxid),feevout);
aliceid = LP_aliceid_calc(desttxid,destvout,feetxid,feevout);
for (i=0; i<sizeof(Ridqids)/sizeof(*Ridqids); i++)
if ( (sp= LP_swapstats_find(aliceid)) != 0 )
{
if ( Ridqids[i] == aliceid )
{
duplicate = 1;
LP_duplicates++;
break;
}
duplicate = 1;
LP_duplicates++;
}
if ( duplicate == 0 )
else
{
Ridqids[LP_numridqids % (sizeof(Ridqids)/sizeof(*Ridqids))] = aliceid;
printf("%s %8s %-4d %9s swap.%016llx: (%.8f %5s) -> (%.8f %5s) qprice %.8f\n",utc_str(tstr,timestamp),gui!=0?gui:"",LP_numridqids,method,(long long)aliceid,dstr(satoshis),base,dstr(destsatoshis),rel,qprice);
LP_numridqids++;
if ( (sp= LP_swapstats_add(aliceid)) != 0 )
{
sp->Q = Q;
sp->qprice = qprice;
LP_swapstats_line(line,sp);
printf("%s\n",line);
LP_aliceids++;
} else printf("unexpected LP_swapstats_add failure\n");
}
}
return(duplicate == 0);
@ -135,7 +164,7 @@ void LP_statslog_parseline(cJSON *lineobj)
char *LP_statslog_disp(int32_t n)
{
cJSON *retjson;
cJSON *retjson,*array; struct LP_swapstats *sp,*tmp; char line[1024];
retjson = cJSON_CreateObject();
jaddstr(retjson,"result","success");
jaddnum(retjson,"newlines",n);
@ -145,9 +174,16 @@ char *LP_statslog_disp(int32_t n)
jaddnum(retjson,"connected",LP_connecteds);
jaddnum(retjson,"duplicates",LP_duplicates);
jaddnum(retjson,"parse_errors",LP_parse_errors);
jaddnum(retjson,"uniques",LP_numridqids);
jaddnum(retjson,"uniques",LP_aliceids);
jaddnum(retjson,"tradestatus",LP_tradestatuses);
jaddnum(retjson,"unknown",LP_unknowns);
array = cJSON_CreateArray();
HASH_ITER(hh,LP_swapstats,sp,tmp)
{
LP_swapstats_line(line,sp);
jaddistr(array,line);
}
jadd(retjson,"swaps",array);
return(jprint(retjson,1));
}

Loading…
Cancel
Save