mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 17:33:47 +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
|
id := ctx.Config.ID
|
||||||
addr := toAddr(id)
|
addr := toAddr(id)
|
||||||
kad := network.NewKademlia(addr.Over(), network.NewKadParams())
|
kad := network.NewKademlia(addr.Over(), network.NewKadParams())
|
||||||
store := stores[id]
|
store := stores[id].(*storage.LocalStore)
|
||||||
db := storage.NewDBAPI(store.(*storage.LocalStore))
|
db := storage.NewDBAPI(store)
|
||||||
delivery := NewDelivery(kad, db)
|
delivery := NewDelivery(kad, db)
|
||||||
deliveries[id] = delivery
|
deliveries[id] = delivery
|
||||||
r := NewRegistry(addr, delivery, store, defaultSkipCheck)
|
netStore := storage.NewNetStore(store, nil)
|
||||||
|
r := NewRegistry(addr, delivery, netStore, defaultSkipCheck)
|
||||||
RegisterSwarmSyncerServer(r, db)
|
RegisterSwarmSyncerServer(r, db)
|
||||||
RegisterSwarmSyncerClient(r, db)
|
RegisterSwarmSyncerClient(r, db)
|
||||||
go func() {
|
go func() {
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ func NewTestLocalStoreForAddr(path string, basekey []byte) (*LocalStore, error)
|
||||||
// LocalStore is itself a chunk store
|
// LocalStore is itself a chunk store
|
||||||
// unsafe, in that the data is not integrity checked
|
// unsafe, in that the data is not integrity checked
|
||||||
func (self *LocalStore) Put(chunk *Chunk) {
|
func (self *LocalStore) Put(chunk *Chunk) {
|
||||||
|
chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
|
||||||
self.memStore.Put(chunk)
|
self.memStore.Put(chunk)
|
||||||
go func() {
|
go func() {
|
||||||
self.DbStore.Put(chunk)
|
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
|
// Get is the entrypoint for local retrieve requests
|
||||||
// waits for response or times out
|
// waits for response or times out
|
||||||
func (self *NetStore) Get(key Key) (chunk *Chunk, err error) {
|
func (self *NetStore) Get(key Key) (chunk *Chunk, err error) {
|
||||||
var created bool
|
if self.retrieve == nil {
|
||||||
chunk, created = self.localStore.GetOrCreateRequest(key)
|
chunk, err = self.localStore.Get(key)
|
||||||
if chunk.ReqC == nil {
|
if err == nil {
|
||||||
return chunk, nil
|
return chunk, nil
|
||||||
}
|
}
|
||||||
|
if err != ErrFetching {
|
||||||
if created {
|
|
||||||
if err := self.retrieve(chunk); err != nil {
|
|
||||||
return nil, err
|
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)
|
t := time.NewTicker(searchTimeout)
|
||||||
defer t.Stop()
|
defer t.Stop()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue