diff options
author | Janos Guljas <janos@resenje.org> | 2018-09-25 22:57:31 +0800 |
---|---|---|
committer | Janos Guljas <janos@resenje.org> | 2018-09-25 22:57:31 +0800 |
commit | 24349144b6c0642755569268bab56b9033743212 (patch) | |
tree | 9d9d2b6659fd8a56512dfc807aafe4b733165ae1 /swarm/network/fetcher.go | |
parent | 7d56602391e155e2ce9ba7c261300a1804ab9972 (diff) | |
parent | d3441ebb563439bac0837d70591f92e2c6080303 (diff) | |
download | go-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.go | 38 |
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{ |