mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 09:23:48 +00:00
swarm/storage, swarm/network: Fix delivery tests
This commit is contained in:
parent
97e4497c49
commit
172eb9e14d
3 changed files with 24 additions and 11 deletions
|
|
@ -63,11 +63,12 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) {
|
|||
id := ctx.Config.ID
|
||||
addr := toAddr(id)
|
||||
kad := network.NewKademlia(addr.Over(), network.NewKadParams())
|
||||
store := stores[id]
|
||||
db := storage.NewDBAPI(store.(*storage.LocalStore))
|
||||
store := stores[id].(*storage.LocalStore)
|
||||
db := storage.NewDBAPI(store)
|
||||
delivery := NewDelivery(kad, db)
|
||||
deliveries[id] = delivery
|
||||
r := NewRegistry(addr, delivery, store, defaultSkipCheck)
|
||||
netStore := storage.NewNetStore(store, nil)
|
||||
r := NewRegistry(addr, delivery, netStore, defaultSkipCheck)
|
||||
RegisterSwarmSyncerServer(r, db)
|
||||
RegisterSwarmSyncerClient(r, db)
|
||||
go func() {
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ func NewTestLocalStoreForAddr(path string, basekey []byte) (*LocalStore, error)
|
|||
// LocalStore is itself a chunk store
|
||||
// unsafe, in that the data is not integrity checked
|
||||
func (self *LocalStore) Put(chunk *Chunk) {
|
||||
chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
|
||||
self.memStore.Put(chunk)
|
||||
go func() {
|
||||
self.DbStore.Put(chunk)
|
||||
|
|
|
|||
|
|
@ -36,17 +36,28 @@ func NewNetStore(localStore *LocalStore, retrieve func(chunk *Chunk) error) *Net
|
|||
// Get is the entrypoint for local retrieve requests
|
||||
// waits for response or times out
|
||||
func (self *NetStore) Get(key Key) (chunk *Chunk, err error) {
|
||||
var created bool
|
||||
chunk, created = self.localStore.GetOrCreateRequest(key)
|
||||
if chunk.ReqC == nil {
|
||||
return chunk, nil
|
||||
}
|
||||
|
||||
if created {
|
||||
if err := self.retrieve(chunk); err != nil {
|
||||
if self.retrieve == nil {
|
||||
chunk, err = self.localStore.Get(key)
|
||||
if err == nil {
|
||||
return chunk, nil
|
||||
}
|
||||
if err != ErrFetching {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
var created bool
|
||||
chunk, created = self.localStore.GetOrCreateRequest(key)
|
||||
if chunk.ReqC == nil {
|
||||
return chunk, nil
|
||||
}
|
||||
|
||||
if created {
|
||||
if err := self.retrieve(chunk); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
t := time.NewTicker(searchTimeout)
|
||||
defer t.Stop()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue