Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
cd3ac9c24d
  1. 17
      deprecated/obsolete.h
  2. 6
      iguana/iguana777.h
  3. 84
      iguana/iguana_ramchain.c
  4. 8
      iguana/main.c

17
deprecated/obsolete.h

@ -14395,5 +14395,22 @@ len = 0;
printf("SPECULATIVE issue.%d bp.[%d]\n",counter,bp->hdrsi); printf("SPECULATIVE issue.%d bp.[%d]\n",counter,bp->hdrsi);
bp->lastspeculative = (uint32_t)time(NULL); bp->lastspeculative = (uint32_t)time(NULL);
}*/ }*/
//ramchain->A = OS_filestr(&filesize,fname);
//if ( filesize != sizeof(*ramchain->A)*ramchain->H.data->numpkinds )
// printf("%s unexpected filesize %ld vs %ld\n",fname,filesize,sizeof(*ramchain->A)*ramchain->H.data->numpkinds);
sprintf(fname,"DB/%s/accounts/lastspends.%d",coin->symbol,ramchain->H.data->height);
//ramchain->Uextras = OS_filestr(&filesize,fname);
//if ( filesize != sizeof(*ramchain->Uextras)*ramchain->H.data->numpkinds )
// printf("%s unexpected filesize %ld vs %ld\n",fname,filesize,sizeof(*ramchain->Uextras)*ramchain->H.data->numpkinds);
//if ( ramchain->A == 0 )
ramchain->A = myaligned_alloc(sizeof(*ramchain->A) * ramchain->H.data->numpkinds);
//if ( ramchain->Uextras == 0 )
ramchain->Uextras = myaligned_alloc(sizeof(*ramchain->Uextras) * ramchain->H.data->numunspents);
//printf("hashmem.%p A allocated.%p numpkinds.%d %ld\n",hashmem,ramchain->A,ramchain->H.data->numpkinds,sizeof(struct iguana_account)*ramchain->H.data->numpkinds);
//ramchain->P2 = (hashmem != 0) ? iguana_memalloc(hashmem,sizeof(struct iguana_pkextra) * ramchain->H.data->numpkinds,1) : mycalloc('2',ramchain->H.data->numpkinds,sizeof(struct iguana_pkextra));
///ramchain->U2 = (hashmem != 0) ? iguana_memalloc(hashmem,sizeof(struct iguana_Uextra) * ramchain->H.data->numunspents,1) : mycalloc('3',ramchain->H.data->numunspents,sizeof(struct iguana_Uextra));
//printf("iguana_ramchain_extras A.%p:%p U2.%p:%p P2.%p:%p\n",ramchain->A,ramchain->roA,ramchain->U2,ramchain->roU2,ramchain->P2,ramchain->roP2);
//memcpy(ramchain->U2,ramchain->roU2,sizeof(*ramchain->U2) * ramchain->H.data->numunspents);
//memcpy(ramchain->P2,ramchain->roP2,sizeof(*ramchain->P2) * ramchain->H.data->numpkinds);
#endif #endif

6
iguana/iguana777.h

@ -374,8 +374,10 @@ struct iguana_ramchain
struct iguana_ramchain_hdr H; bits256 lasthash2; uint64_t datasize; struct iguana_ramchain_hdr H; bits256 lasthash2; uint64_t datasize;
uint32_t numblocks:31,expanded:1,pkind,externalind,height,numXspends; uint32_t numblocks:31,expanded:1,pkind,externalind,height,numXspends;
struct iguana_kvitem *txids,*pkhashes; struct iguana_kvitem *txids,*pkhashes;
struct OS_memspace *hashmem; long filesize,sigsfilesize; void *fileptr,*sigsfileptr,*Xspendptr; struct OS_memspace *hashmem; long filesize,sigsfilesize,debitsfilesize,lastspendsfilesize;
struct iguana_account *A,*creditsA; struct iguana_spendvector *Xspendinds; struct iguana_utxo *Uextras; void *fileptr,*sigsfileptr,*Xspendptr,*debitsfileptr,*lastspendsfileptr;
struct iguana_account *A,*creditsA; struct iguana_spendvector *Xspendinds;
struct iguana_utxo *Uextras;
//struct iguana_Uextra *U2,*roU2; struct iguana_pkextra *P2,*roP2; //struct iguana_Uextra *U2,*roU2; struct iguana_pkextra *P2,*roP2;
}; };

84
iguana/iguana_ramchain.c

@ -1286,14 +1286,26 @@ int32_t iguana_ramchain_free(struct iguana_ramchain *ramchain,int32_t deleteflag
ramchain->numXspends = 0; ramchain->numXspends = 0;
ramchain->Xspendinds = 0; ramchain->Xspendinds = 0;
} }
if ( ramchain->debitsfileptr != 0 )
{
munmap(ramchain->debitsfileptr,ramchain->debitsfilesize);
ramchain->debitsfileptr = 0;
ramchain->debitsfilesize = 0;
}
if ( ramchain->lastspendsfileptr != 0 )
{
munmap(ramchain->lastspendsfileptr,ramchain->lastspendsfilesize);
ramchain->lastspendsfileptr = 0;
ramchain->lastspendsfilesize = 0;
}
if ( deleteflag != 0 ) if ( deleteflag != 0 )
memset(ramchain,0,sizeof(*ramchain)); memset(ramchain,0,sizeof(*ramchain));
return(0); return(0);
} }
void iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *hashmem,int32_t extraflag) int32_t iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *hashmem,int32_t extraflag)
{ {
RAMCHAIN_DECLARE; char fname[1024]; //long filesize; RAMCHAIN_DECLARE; int32_t err=0,numhdrsi; char fname[1024]; //long filesize;
if ( ramchain->expanded != 0 ) if ( ramchain->expanded != 0 )
{ {
_iguana_ramchain_setptrs(RAMCHAIN_PTRS,ramchain->H.data); _iguana_ramchain_setptrs(RAMCHAIN_PTRS,ramchain->H.data);
@ -1307,37 +1319,48 @@ void iguana_ramchain_extras(struct iguana_info *coin,struct iguana_ramchain *ram
} }
else else
{ {
if ( 1 && extraflag == 2 ) err = -1;
sprintf(fname,"DB/%s/accounts/debits.%d",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 )
{ {
sprintf(fname,"accounts/%s/debits.%d",coin->symbol,ramchain->H.data->height); numhdrsi = *(int32_t *)ramchain->debitsfileptr;
//ramchain->A = OS_filestr(&filesize,fname); if ( coin->balanceswritten == 0 && numhdrsi > 0 && numhdrsi <= coin->bundlescount )
//if ( filesize != sizeof(*ramchain->A)*ramchain->H.data->numpkinds ) coin->balanceswritten = numhdrsi;
// printf("%s unexpected filesize %ld vs %ld\n",fname,filesize,sizeof(*ramchain->A)*ramchain->H.data->numpkinds); else if ( numhdrsi == coin->balanceswritten )
sprintf(fname,"accounts/%s/lastspends.%d",coin->symbol,ramchain->H.data->height); {
//ramchain->Uextras = OS_filestr(&filesize,fname); ramchain->A = (void *)((long)ramchain->debitsfileptr + sizeof(numhdrsi) + sizeof(bits256));
//if ( filesize != sizeof(*ramchain->Uextras)*ramchain->H.data->numpkinds ) sprintf(fname,"DB/%s/accounts/lastspends.%d",coin->symbol,ramchain->H.data->height);
// printf("%s unexpected filesize %ld vs %ld\n",fname,filesize,sizeof(*ramchain->Uextras)*ramchain->H.data->numpkinds); if ( (ramchain->lastspendsfileptr= OS_mapfile(fname,&ramchain->lastspendsfilesize,0)) != 0 && ramchain->lastspendsfilesize == sizeof(int32_t) + sizeof(bits256) + sizeof(*ramchain->Uextras) * ramchain->H.data->numunspents )
//if ( ramchain->A == 0 ) {
ramchain->A = myaligned_alloc(sizeof(*ramchain->A) * ramchain->H.data->numpkinds); numhdrsi = *(int32_t *)ramchain->lastspendsfileptr;
//if ( ramchain->Uextras == 0 ) if ( numhdrsi == coin->balanceswritten )
ramchain->Uextras = myaligned_alloc(sizeof(*ramchain->Uextras) * ramchain->H.data->numunspents); {
ramchain->Uextras = (void *)((long)ramchain->lastspendsfileptr + sizeof(numhdrsi) + sizeof(bits256));
err = 0;
}
}
} else printf("ramchain map error balanceswritten %d vs %d\n",coin->balanceswritten,numhdrsi);
} }
else if ( err != 0 )
{ {
//if ( ramchain->A == 0 ) ramchain->A = 0;
ramchain->A = myaligned_alloc(sizeof(*ramchain->A) * ramchain->H.data->numpkinds); ramchain->Uextras = 0;
//if ( ramchain->Uextras == 0 ) if ( ramchain->debitsfileptr != 0 )
ramchain->Uextras = myaligned_alloc(sizeof(*ramchain->Uextras) * ramchain->H.data->numunspents); {
} munmap(ramchain->debitsfileptr,ramchain->debitsfilesize);
//printf("ALLOC RAMCHAIN A.%p Uextras.%p | extraflag.%d hashmem.%p\n",ramchain->A,ramchain->Uextras,extraflag,ramchain->hashmem); ramchain->debitsfileptr = 0;
ramchain->debitsfilesize = 0;
}
if ( ramchain->lastspendsfileptr != 0 )
{
munmap(ramchain->lastspendsfileptr,ramchain->lastspendsfilesize);
ramchain->lastspendsfileptr = 0;
ramchain->lastspendsfilesize = 0;
}
}
} }
//printf("hashmem.%p A allocated.%p numpkinds.%d %ld\n",hashmem,ramchain->A,ramchain->H.data->numpkinds,sizeof(struct iguana_account)*ramchain->H.data->numpkinds);
//ramchain->P2 = (hashmem != 0) ? iguana_memalloc(hashmem,sizeof(struct iguana_pkextra) * ramchain->H.data->numpkinds,1) : mycalloc('2',ramchain->H.data->numpkinds,sizeof(struct iguana_pkextra));
///ramchain->U2 = (hashmem != 0) ? iguana_memalloc(hashmem,sizeof(struct iguana_Uextra) * ramchain->H.data->numunspents,1) : mycalloc('3',ramchain->H.data->numunspents,sizeof(struct iguana_Uextra));
//printf("iguana_ramchain_extras A.%p:%p U2.%p:%p P2.%p:%p\n",ramchain->A,ramchain->roA,ramchain->U2,ramchain->roU2,ramchain->P2,ramchain->roP2);
//memcpy(ramchain->U2,ramchain->roU2,sizeof(*ramchain->U2) * ramchain->H.data->numunspents);
//memcpy(ramchain->P2,ramchain->roP2,sizeof(*ramchain->P2) * ramchain->H.data->numpkinds);
} }
return(err);
} }
int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp) int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp)
@ -1455,7 +1478,10 @@ struct iguana_ramchain *iguana_ramchain_map(struct iguana_info *coin,char *fname
else if ( ramchain->expanded != 0 ) else if ( ramchain->expanded != 0 )
{ {
if ( allocextras > 0 ) if ( allocextras > 0 )
iguana_ramchain_extras(coin,ramchain,ramchain->hashmem,allocextras); {
if ( iguana_ramchain_extras(coin,ramchain,ramchain->hashmem,allocextras) == 0 && bp != 0 )
bp->balancefinish = (uint32_t)time(NULL);
}
} }
if ( B != 0 && bp != 0 ) if ( B != 0 && bp != 0 )
{ {

8
iguana/main.c

@ -381,25 +381,25 @@ int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t pu
} }
else if ( iter == 2 ) else if ( iter == 2 )
{ {
sprintf(destfname,"DB/%s/accounts/debits_%d.%d",coin->symbol,numhdrsi,bp->bundleheight); sprintf(destfname,"DB/%s/accounts/debits.%d",coin->symbol,bp->bundleheight);
if ( OS_copyfile(fname,destfname,1) < 0 ) if ( OS_copyfile(fname,destfname,1) < 0 )
{ {
printf("balances error copying (%s) -> (%s)\n",fname,destfname); printf("balances error copying (%s) -> (%s)\n",fname,destfname);
return(-1); return(-1);
} }
sprintf(destfname,"DB/%s/accounts/lastspends_%d.%d",coin->symbol,numhdrsi,bp->bundleheight); sprintf(destfname,"DB/%s/accounts/lastspends.%d",coin->symbol,bp->bundleheight);
if ( OS_copyfile(fname2,destfname,1) < 0 ) if ( OS_copyfile(fname2,destfname,1) < 0 )
{ {
printf("balances error copying (%s) -> (%s)\n",fname2,destfname); printf("balances error copying (%s) -> (%s)\n",fname2,destfname);
return(-1); return(-1);
} }
if ( hdrsi > numhdrsi-purgedist && numhdrsi >= purgedist ) /*if ( hdrsi > numhdrsi-purgedist && numhdrsi >= purgedist )
{ {
sprintf(destfname,"DB/%s/accounts/debits_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight); sprintf(destfname,"DB/%s/accounts/debits_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight);
OS_removefile(destfname,0); OS_removefile(destfname,0);
sprintf(destfname,"DB/%s/accounts/lastspends_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight); sprintf(destfname,"DB/%s/accounts/lastspends_%d.%d",coin->symbol,numhdrsi-purgedist,bp->bundleheight);
OS_removefile(destfname,0); OS_removefile(destfname,0);
} }*/
continue; continue;
} }
} }

Loading…
Cancel
Save