mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
Merge fe2f4ba2d6 into 221486a291
This commit is contained in:
commit
d0d3548ba5
7 changed files with 37 additions and 9 deletions
|
|
@ -36,7 +36,7 @@ func testApi(t *testing.T, f func(*Api)) {
|
|||
}
|
||||
os.RemoveAll(datadir)
|
||||
defer os.RemoveAll(datadir)
|
||||
dpa, err := storage.NewLocalDPA(datadir)
|
||||
dpa, err := storage.NewLocalDPA(datadir, "")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -808,7 +808,7 @@ func TestFUSE(t *testing.T) {
|
|||
}
|
||||
os.RemoveAll(datadir)
|
||||
|
||||
dpa, err := storage.NewLocalDPA(datadir)
|
||||
dpa, err := storage.NewLocalDPA(datadir, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,12 +93,23 @@ func NewDbStore(path string, hash SwarmHasher, capacity uint64, radius int) (s *
|
|||
s.gcStartPos[0] = kpIndex
|
||||
s.gcArray = make([]*gcItem, gcArraySize)
|
||||
|
||||
// the database closes with pointer to last entry stored
|
||||
// we increment upon open so that the last entry doesn't get overwritten
|
||||
data, _ := s.db.Get(keyEntryCnt)
|
||||
s.entryCnt = BytesToU64(data)
|
||||
if len(data) > 0 {
|
||||
s.entryCnt++
|
||||
}
|
||||
data, _ = s.db.Get(keyAccessCnt)
|
||||
s.accessCnt = BytesToU64(data)
|
||||
if len(data) > 0 {
|
||||
s.accessCnt++
|
||||
}
|
||||
data, _ = s.db.Get(keyDataIdx)
|
||||
s.dataIdx = BytesToU64(data)
|
||||
if len(data) > 0 {
|
||||
s.dataIdx++
|
||||
}
|
||||
s.gcPos, _ = s.db.Get(keyGCPos)
|
||||
if s.gcPos == nil {
|
||||
s.gcPos = s.gcStartPos
|
||||
|
|
|
|||
|
|
@ -63,17 +63,27 @@ type DPA struct {
|
|||
}
|
||||
|
||||
// for testing locally
|
||||
func NewLocalDPA(datadir string) (*DPA, error) {
|
||||
func NewLocalDPA(datadir string, hashalgorithm string, dbcapacity uint64, memcapacity uint) (*DPA, error) {
|
||||
|
||||
hash := MakeHashFunc("SHA256")
|
||||
if hashalgorithm == "" {
|
||||
hashalgorithm = "SHA3"
|
||||
}
|
||||
hash := MakeHashFunc(hashalgorithm)
|
||||
|
||||
dbStore, err := NewDbStore(datadir, hash, singletonSwarmDbCapacity, 0)
|
||||
if dbcapacity == 0 {
|
||||
dbcapacity = uint64(singletonSwarmDbCapacity)
|
||||
}
|
||||
if memcapacity == 0 {
|
||||
memcapacity = uint(singletonSwarmCacheCapacity)
|
||||
}
|
||||
|
||||
log.Debug("LocalDPA create", "dbcap", dbcapacity, "memcap", memcapacity)
|
||||
dbStore, err := NewDbStore(datadir, hash, dbcapacity, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewDPA(&LocalStore{
|
||||
NewMemStore(dbStore, singletonSwarmCacheCapacity),
|
||||
NewMemStore(dbStore, memcapacity),
|
||||
dbStore,
|
||||
}, NewChunkerParams()), nil
|
||||
}
|
||||
|
|
@ -117,6 +127,7 @@ func (self *DPA) Start() {
|
|||
func (self *DPA) Stop() {
|
||||
self.lock.Lock()
|
||||
defer self.lock.Unlock()
|
||||
self.Close()
|
||||
if !self.running {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,4 +74,6 @@ func (self *LocalStore) Get(key Key) (chunk *Chunk, err error) {
|
|||
}
|
||||
|
||||
// Close local store
|
||||
func (self *LocalStore) Close() {}
|
||||
func (self *LocalStore) Close() {
|
||||
self.DbStore.Close()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@ import (
|
|||
"github.com/ethereum/go-ethereum/crypto/sha3"
|
||||
)
|
||||
|
||||
const (
|
||||
CHUNKSIZE = 4096
|
||||
)
|
||||
|
||||
type Hasher func() hash.Hash
|
||||
type SwarmHasher func() SwarmHash
|
||||
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ func NewLocalSwarm(datadir, port string) (self *Swarm, err error) {
|
|||
config.Init(prvKey)
|
||||
config.Port = port
|
||||
|
||||
dpa, err := storage.NewLocalDPA(datadir)
|
||||
dpa, err := storage.NewLocalDPA(datadir, "")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue