Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
872f3b5523
  1. 10
      iguana/iguana_bundles.c
  2. 4
      iguana/iguana_init.c
  3. 35
      iguana/iguana_ramchain.c
  4. 10
      iguana/main.c

10
iguana/iguana_bundles.c

@ -336,8 +336,10 @@ struct iguana_bundle *iguana_bundlecreate(struct iguana_info *coin,int32_t *bund
struct iguana_txid *iguana_bundletx(struct iguana_info *coin,struct iguana_bundle *bp,int32_t bundlei,struct iguana_txid *tx,int32_t txidind)
{
static bits256 zero;
int32_t hdrsi; int64_t Toffset; char fname[1024]; FILE *fp; struct iguana_ramchaindata rdata;
iguana_peerfname(coin,&hdrsi,"DB",fname,0,bp->hashes[0],zero,bp->n);
int32_t hdrsi,iter; int64_t Toffset; char fname[1024]; FILE *fp; struct iguana_ramchaindata rdata;
for (iter=0; iter<2; iter++)
{
iguana_peerfname(coin,&hdrsi,iter==0?"DB/ro":"DB",fname,0,bp->hashes[0],zero,bp->n);
if ( (fp= fopen(fname,"rb")) != 0 )
{
fseek(fp,(long)&rdata.Toffset - (long)&rdata,SEEK_SET);
@ -351,7 +353,9 @@ struct iguana_txid *iguana_bundletx(struct iguana_info *coin,struct iguana_bundl
} else printf("bundletx read error\n");
} else printf("bundletx Toffset read error\n");
fclose(fp);
} else printf("bundletx couldnt open.(%s)\n",fname);
}
}
printf("bundletx couldnt open.(%s)\n",fname);
return(0);
}

4
iguana/iguana_init.c

@ -365,9 +365,13 @@ void iguana_parseline(struct iguana_info *coin,int32_t iter,FILE *fp)
for (i=coin->balanceswritten; i<coin->bundlescount; i++)
{
if ( (bp= coin->bundles[i]) != 0 && bp->queued == 0 )
{
printf("%d ",i);
iguana_bundleQ(coin,bp,1000);
}
}
printf("BALANCESQ\n");
}
}
}

35
iguana/iguana_ramchain.c

@ -1305,7 +1305,7 @@ int32_t iguana_ramchain_free(struct iguana_ramchain *ramchain,int32_t deleteflag
int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *hashmem,int32_t extraflag)
{
RAMCHAIN_DECLARE; int32_t err=0,numhdrsi; char fname[1024]; bits256 balancehash;
RAMCHAIN_DECLARE; int32_t iter,err=0,numhdrsi; char fname[1024]; bits256 balancehash;
if ( ramchain->expanded != 0 )
{
_iguana_ramchain_setptrs(RAMCHAIN_PTRS,ramchain->H.data);
@ -1320,7 +1320,9 @@ int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *
else
{
err = -1;
sprintf(fname,"DB/%s/accounts/debits.%d",coin->symbol,ramchain->H.data->height);
for (iter=0; iter<2; iter++)
{
sprintf(fname,"DB/%s%s/accounts/debits.%d",iter==0?"ro":"",coin->symbol,ramchain->H.data->height);
if ( (ramchain->debitsfileptr= OS_mapfile(fname,&ramchain->debitsfilesize,0)) != 0 && ramchain->debitsfilesize == sizeof(int32_t) + sizeof(bits256) + sizeof(*ramchain->A) * ramchain->H.data->numpkinds )
{
numhdrsi = *(int32_t *)ramchain->debitsfileptr;
@ -1333,7 +1335,7 @@ int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *
else if ( numhdrsi == coin->balanceswritten || memcmp(balancehash.bytes,coin->balancehash.bytes,sizeof(balancehash)) == 0 )
{
ramchain->A = (void *)((long)ramchain->debitsfileptr + sizeof(numhdrsi) + sizeof(bits256));
sprintf(fname,"DB/%s/accounts/lastspends.%d",coin->symbol,ramchain->H.data->height);
sprintf(fname,"DB/%s%s/accounts/lastspends.%d",iter==0?"ro":"",coin->symbol,ramchain->H.data->height);
if ( (ramchain->lastspendsfileptr= OS_mapfile(fname,&ramchain->lastspendsfilesize,0)) != 0 && ramchain->lastspendsfilesize == sizeof(int32_t) + sizeof(bits256) + sizeof(*ramchain->Uextras) * ramchain->H.data->numunspents )
{
numhdrsi = *(int32_t *)ramchain->lastspendsfileptr;
@ -1346,6 +1348,9 @@ int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *
}
} else printf("ramchain map error balanceswritten %d vs %d hashes %x %x\n",coin->balanceswritten,numhdrsi,coin->balancehash.uints[0],balancehash.uints[0]);
}
if ( err == 0 )
break;
}
if ( err != 0 )
{
ramchain->A = 0;
@ -1370,8 +1375,10 @@ int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *
int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp)
{
int32_t hdrsi; bits256 sha256; char fname[1024],dirname[128]; void *ptr; long filesize; static bits256 zero;
sprintf(dirname,"DB/%s/spends",coin->symbol);
int32_t hdrsi,iter; bits256 sha256; char fname[1024],dirname[128]; void *ptr; long filesize; static bits256 zero;
for (iter=0; iter<2; iter++)
{
sprintf(dirname,"DB/%s%s/spends",iter==0?"ro/":"",coin->symbol);
if ( iguana_peerfname(coin,&hdrsi,dirname,fname,0,bp->hashes[0],zero,bp->n) >= 0 )
{
if ( (ptr= OS_mapfile(fname,&filesize,0)) != 0 )
@ -1383,6 +1390,7 @@ int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramcha
bp->startutxo = bp->utxofinish = (uint32_t)time(NULL);
ramchain->Xspendptr = ptr;
ramchain->numXspends = (int32_t)((filesize - sizeof(sha256)) / sizeof(*ramchain->Xspendinds));
return(ramchain->numXspends);
//int32_t i; for (i=0; i<ramchain->numXspends; i++)
// printf("(%d u%d) ",ramchain->Xspendinds[i].hdrsi,ramchain->Xspendinds[i].ind);
//printf("filesize %ld Xspendptr.%p %p num.%d\n",ftell(fp),ramchain->Xspendptr,ramchain->Xspendinds,ramchain->numXspends);
@ -1396,13 +1404,14 @@ int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramcha
}
} //else printf("no Xspendfile\n");
} else printf("couldnt open.(%s)\n",fname);
}
return(ramchain->numXspends);
}
struct iguana_ramchain *iguana_ramchain_map(struct iguana_info *coin,char *fname,struct iguana_bundle *bp,int32_t numblocks,struct iguana_ramchain *ramchain,struct OS_memspace *hashmem,uint32_t ipbits,bits256 hash2,bits256 prevhash2,int32_t bundlei,long fpos,int32_t allocextras,int32_t expanded)
{
RAMCHAIN_DECLARE; int32_t valid,i,checki,hdrsi;
char str[65],str2[65]; long filesize; void *ptr; struct iguana_block *block;
RAMCHAIN_DECLARE; int32_t valid,iter,i,checki,hdrsi;
char str[65],str2[65],*dirstr; long filesize; void *ptr; struct iguana_block *block;
/*if ( ramchain->expanded != 0 && (ramchain->sigsfileptr == 0 || ramchain->sigsfilesize == 0) )
{
sprintf(sigsfname,"sigs/%s/%s",coin->symbol,bits256_str(str,hash2));
@ -1414,19 +1423,25 @@ struct iguana_ramchain *iguana_ramchain_map(struct iguana_info *coin,char *fname
}*/
if ( ramchain->fileptr == 0 || ramchain->filesize <= 0 )
{
if ( (checki= iguana_peerfname(coin,&hdrsi,ipbits==0?"DB":GLOBALTMPDIR,fname,ipbits,hash2,prevhash2,numblocks)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize )
for (iter=0; iter<2; iter++)
{
dirstr = (iter == 0) ? "DB/ro" : "DB";
if ( (checki= iguana_peerfname(coin,&hdrsi,ipbits==0?dirstr:GLOBALTMPDIR,fname,ipbits,hash2,prevhash2,numblocks)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize )
{
printf("iguana_ramchain_map.(%s) illegal hdrsi.%d bundlei.%d %s\n",fname,hdrsi,bundlei,bits256_str(str,hash2));
return(0);
continue;
}
memset(ramchain,0,sizeof(*ramchain));
if ( (ptr= OS_mapfile(fname,&filesize,0)) == 0 )
return(0);
continue;
ramchain->fileptr = ptr;
ramchain->filesize = (long)filesize;
if ( (ramchain->hashmem= hashmem) != 0 )
iguana_memreset(hashmem);
}
if ( ramchain->fileptr == 0 )
return(0);
}
if ( ramchain->fileptr != 0 && ramchain->filesize > 0 )
{
// verify hashes

10
iguana/main.c

@ -368,7 +368,7 @@ int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t pu
{
bp->dirty = 0;
err = 0;
//printf("saved (%s) and (%s)\n",fname,fname2);
printf("saved (%s) and (%s)\n",fname,fname2);
}
}
}
@ -381,9 +381,13 @@ int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t pu
}
fclose(fp), fclose(fp2);
}
else if ( fp != 0 )
else
{
printf("error opening %s or %s %p\n",fname,fname2,fp);
if ( fp != 0 )
fclose(fp);
}
}
else if ( iter == 2 )
{
sprintf(destfname,"DB/%s/accounts/debits.%d",coin->symbol,bp->bundleheight);
@ -398,6 +402,7 @@ int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t pu
printf("balances error copying (%s) -> (%s)\n",fname2,destfname);
return(-1);
}
printf("%s %s\n",fname,destfname);
/*if ( hdrsi > numhdrsi-purgedist && numhdrsi >= purgedist )
{
sprintf(destfname,"DB/%s/accounts/debits_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight);
@ -405,7 +410,6 @@ int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t pu
sprintf(destfname,"DB/%s/accounts/lastspends_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight);
OS_removefile(destfname,0);
}*/
continue;
}
} else printf("error loading [%d] Aptr.%p Uptr.%p numpkinds.%u numunspents.%u\n",hdrsi,Aptr,Uptr,numpkinds,numunspents);
}

Loading…
Cancel
Save