Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
9fbcffb917
  1. 2
      iguana/iguana777.h
  2. 13
      iguana/iguana_bundles.c
  3. 29
      iguana/iguana_recv.c

2
iguana/iguana777.h

@ -433,7 +433,7 @@ struct iguana_bloominds { uint16_t inds[8]; };
struct iguana_bundle
{
struct queueitem DL; struct iguana_info *coin; struct iguana_bundle *nextbp;
struct iguana_bloom16 bloom; //uint32_t rawscriptspace;
struct iguana_bloom16 bloom; int64_t totaldurations,duplicatedurations; int32_t durationscount,duplicatescount;
uint32_t issuetime,hdrtime,emitfinish,mergefinish,purgetime,queued,startutxo,utxofinish,balancefinish,validated,lastspeculative,dirty,nexttime,currenttime,lastprefetch,missingstime;
int32_t numhashes,numrecv,numsaved,numcached,generrs,currentflag,origmissings,numissued;
int32_t minrequests,n,hdrsi,bundleheight,numtxids,numspends,numunspents,numspec,isRT;

13
iguana/iguana_bundles.c

@ -890,10 +890,21 @@ int32_t iguana_cacheprocess(struct iguana_info *coin,struct iguana_bundle *bp,in
int32_t iguana_bundlemissings(struct iguana_info *coin,struct iguana_bundle *bp,int32_t capacity,int32_t lag)
{
uint8_t missings[IGUANA_MAXBUNDLESIZE/8+1]; int32_t tmp,missing,avail,n=0,max;
uint8_t missings[IGUANA_MAXBUNDLESIZE/8+1]; int32_t tmp,missing,avail,n=0,max; double aveduration,aveduplicates;
missing = iguana_blocksmissing(coin,&avail,missings,0,bp,0,lag);
if ( strcmp("BTC",coin->symbol) != 0 )
lag = 13;
if ( bp->numcached == bp->n-1 )
lag = 3;
if ( bp->durationscount != 0 )
{
aveduration = (double)bp->totaldurations / bp->durationscount;
if ( bp->duplicatescount != 0 )
aveduplicates = (double)bp->duplicatedurations / bp->duplicatescount;
else aveduplicates = 3 * aveduration;
printf("[%d] durations %.2f vs %.2f counts[%d %d]\n",bp->hdrsi,aveduration,aveduplicates,(int32_t)bp->durationscount,bp->duplicatescount);
lag = 3 * aveduration;
}
if ( bp->numissued < bp->n )
max = bp->numissued;
else max = bp->origmissings;

29
iguana/iguana_recv.c

@ -241,6 +241,31 @@ int8_t iguana_blockstatus(struct iguana_info *coin,struct iguana_block *block)
return(status);
}
void iguana_bundletime(struct iguana_info *coin,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block,int32_t duplicateflag)
{
uint32_t starttime; int32_t duration;
if ( bp != 0 && bundlei >= 0 && bundlei < bp->n )
{
starttime = block->issued;
if ( bp->issued[bundlei] != 0 && (starttime == 0 || bp->issued[bundlei] < block->issued) )
starttime = bp->issued[bundlei];
if ( starttime != 0 )
{
duration = (uint32_t)time(NULL) - starttime;
if ( duplicateflag != 0 )
{
bp->duplicatedurations += duration;
bp->duplicatescount++;
}
else
{
bp->totaldurations += duration;
bp->durationscount++;
}
}
}
}
void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen)
{
struct iguana_bundlereq *req; struct iguana_txblock *txdata = 0; int32_t valid,speculative=0,i,j,bundlei,copyflag; struct iguana_block *block; struct iguana_bundle *bp; char str[65];
@ -299,6 +324,8 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i
{
numAfteremit++;
sizeAfteremit += recvlen;
if ( (block= bp->blocks[bundlei]) != 0 )
iguana_bundletime(coin,bp,bundlei,block,1);
//printf("got [%d:%d] with emitfinish.%u\n",bp->hdrsi,bundlei,bp->emitfinish);
return;
}
@ -309,6 +336,7 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i
{
numDuplicates++;
sizeDuplicates += recvlen;
iguana_bundletime(coin,bp,bundlei,block,1);
//printf("duplicate [%d:%d] %s\n",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2));
if ( bits256_cmp(origtxdata->block.RO.hash2,block->RO.hash2) == 0 )
return;
@ -316,6 +344,7 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i
if ( block->mainchain != 0 )
return;
} //else printf("recv [%d:%d] %s\n",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2));
iguana_bundletime(coin,bp,bundlei,block,0);
block->RO = origtxdata->block.RO;
block->txvalid = 1;
//printf("update prev for [%d:%d]\n",bp->hdrsi,bundlei);

Loading…
Cancel
Save