aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/network/fetcher.go
diff options
context:
space:
mode:
authorJanos Guljas <janos@resenje.org>2018-09-25 22:57:31 +0800
committerJanos Guljas <janos@resenje.org>2018-09-25 22:57:31 +0800
commit24349144b6c0642755569268bab56b9033743212 (patch)
tree9d9d2b6659fd8a56512dfc807aafe4b733165ae1 /swarm/network/fetcher.go
parent7d56602391e155e2ce9ba7c261300a1804ab9972 (diff)
parentd3441ebb563439bac0837d70591f92e2c6080303 (diff)
downloadgo-tangerine-24349144b6c0642755569268bab56b9033743212.tar
go-tangerine-24349144b6c0642755569268bab56b9033743212.tar.gz
go-tangerine-24349144b6c0642755569268bab56b9033743212.tar.bz2
go-tangerine-24349144b6c0642755569268bab56b9033743212.tar.lz
go-tangerine-24349144b6c0642755569268bab56b9033743212.tar.xz
go-tangerine-24349144b6c0642755569268bab56b9033743212.tar.zst
go-tangerine-24349144b6c0642755569268bab56b9033743212.zip
Merge branch 'master' into max-stream-peer-servers
Diffstat (limited to 'swarm/network/fetcher.go')
-rw-r--r--swarm/network/fetcher.go38
1 files changed, 19 insertions, 19 deletions
diff --git a/swarm/network/fetcher.go b/swarm/network/fetcher.go
index 413b40cb5..5b4b61c7e 100644
--- a/swarm/network/fetcher.go
+++ b/swarm/network/fetcher.go
@@ -22,7 +22,7 @@ import (
"time"
"github.com/ethereum/go-ethereum/log"
- "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/swarm/storage"
)
@@ -32,7 +32,7 @@ var searchTimeout = 1 * time.Second
// Also used in stream delivery.
var RequestTimeout = 10 * time.Second
-type RequestFunc func(context.Context, *Request) (*discover.NodeID, chan struct{}, error)
+type RequestFunc func(context.Context, *Request) (*enode.ID, chan struct{}, error)
// Fetcher is created when a chunk is not found locally. It starts a request handler loop once and
// keeps it alive until all active requests are completed. This can happen:
@@ -41,18 +41,18 @@ type RequestFunc func(context.Context, *Request) (*discover.NodeID, chan struct{
// Fetcher self destroys itself after it is completed.
// TODO: cancel all forward requests after termination
type Fetcher struct {
- protoRequestFunc RequestFunc // request function fetcher calls to issue retrieve request for a chunk
- addr storage.Address // the address of the chunk to be fetched
- offerC chan *discover.NodeID // channel of sources (peer node id strings)
+ protoRequestFunc RequestFunc // request function fetcher calls to issue retrieve request for a chunk
+ addr storage.Address // the address of the chunk to be fetched
+ offerC chan *enode.ID // channel of sources (peer node id strings)
requestC chan struct{}
skipCheck bool
}
type Request struct {
- Addr storage.Address // chunk address
- Source *discover.NodeID // nodeID of peer to request from (can be nil)
- SkipCheck bool // whether to offer the chunk first or deliver directly
- peersToSkip *sync.Map // peers not to request chunk from (only makes sense if source is nil)
+ Addr storage.Address // chunk address
+ Source *enode.ID // nodeID of peer to request from (can be nil)
+ SkipCheck bool // whether to offer the chunk first or deliver directly
+ peersToSkip *sync.Map // peers not to request chunk from (only makes sense if source is nil)
}
// NewRequest returns a new instance of Request based on chunk address skip check and
@@ -112,14 +112,14 @@ func NewFetcher(addr storage.Address, rf RequestFunc, skipCheck bool) *Fetcher {
return &Fetcher{
addr: addr,
protoRequestFunc: rf,
- offerC: make(chan *discover.NodeID),
+ offerC: make(chan *enode.ID),
requestC: make(chan struct{}),
skipCheck: skipCheck,
}
}
// Offer is called when an upstream peer offers the chunk via syncing as part of `OfferedHashesMsg` and the node does not have the chunk locally.
-func (f *Fetcher) Offer(ctx context.Context, source *discover.NodeID) {
+func (f *Fetcher) Offer(ctx context.Context, source *enode.ID) {
// First we need to have this select to make sure that we return if context is done
select {
case <-ctx.Done():
@@ -156,13 +156,13 @@ func (f *Fetcher) Request(ctx context.Context) {
// it keeps the Fetcher alive within the lifecycle of the passed context
func (f *Fetcher) run(ctx context.Context, peers *sync.Map) {
var (
- doRequest bool // determines if retrieval is initiated in the current iteration
- wait *time.Timer // timer for search timeout
- waitC <-chan time.Time // timer channel
- sources []*discover.NodeID // known sources, ie. peers that offered the chunk
- requested bool // true if the chunk was actually requested
+ doRequest bool // determines if retrieval is initiated in the current iteration
+ wait *time.Timer // timer for search timeout
+ waitC <-chan time.Time // timer channel
+ sources []*enode.ID // known sources, ie. peers that offered the chunk
+ requested bool // true if the chunk was actually requested
)
- gone := make(chan *discover.NodeID) // channel to signal that a peer we requested from disconnected
+ gone := make(chan *enode.ID) // channel to signal that a peer we requested from disconnected
// loop that keeps the fetching process alive
// after every request a timer is set. If this goes off we request again from another peer
@@ -251,9 +251,9 @@ func (f *Fetcher) run(ctx context.Context, peers *sync.Map) {
// * the peer's address is added to the set of peers to skip
// * the peer's address is removed from prospective sources, and
// * a go routine is started that reports on the gone channel if the peer is disconnected (or terminated their streamer)
-func (f *Fetcher) doRequest(ctx context.Context, gone chan *discover.NodeID, peersToSkip *sync.Map, sources []*discover.NodeID) ([]*discover.NodeID, error) {
+func (f *Fetcher) doRequest(ctx context.Context, gone chan *enode.ID, peersToSkip *sync.Map, sources []*enode.ID) ([]*enode.ID, error) {
var i int
- var sourceID *discover.NodeID
+ var sourceID *enode.ID
var quit chan struct{}
req := &Request{