mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-13 12:18:00 +08:00
feat(bitswap) impl offline exchange
This commit is contained in:
parent
adf62a39d5
commit
770cdebf7b
30
bitswap/offline.go
Normal file
30
bitswap/offline.go
Normal file
@ -0,0 +1,30 @@
|
||||
package bitswap
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||
u "github.com/jbenet/go-ipfs/util"
|
||||
)
|
||||
|
||||
func NewOfflineExchange() Exchange {
|
||||
return &offlineExchange{}
|
||||
}
|
||||
|
||||
// offlineExchange implements the Exchange interface but doesn't return blocks.
|
||||
// For use in offline mode.
|
||||
type offlineExchange struct {
|
||||
}
|
||||
|
||||
// Block returns nil to signal that a block could not be retrieved for the
|
||||
// given key.
|
||||
// NB: This function may return before the timeout expires.
|
||||
func (_ *offlineExchange) Block(k u.Key, timeout time.Duration) (*blocks.Block, error) {
|
||||
return nil, errors.New("Block unavailable. Operating in offline mode")
|
||||
}
|
||||
|
||||
// HasBlock always returns nil.
|
||||
func (_ *offlineExchange) HasBlock(*blocks.Block) error {
|
||||
return nil
|
||||
}
|
||||
27
bitswap/offline_test.go
Normal file
27
bitswap/offline_test.go
Normal file
@ -0,0 +1,27 @@
|
||||
package bitswap
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
u "github.com/jbenet/go-ipfs/util"
|
||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
||||
)
|
||||
|
||||
func TestBlockReturnsErr(t *testing.T) {
|
||||
off := NewOfflineExchange()
|
||||
_, err := off.Block(u.Key("foo"), time.Second)
|
||||
if err != nil {
|
||||
return // as desired
|
||||
}
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
func TestHasBlockReturnsNil(t *testing.T) {
|
||||
off := NewOfflineExchange()
|
||||
block := testutil.NewBlockOrFail(t, "data")
|
||||
err := off.HasBlock(&block)
|
||||
if err != nil {
|
||||
t.Fatal("")
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user