diff --git a/blocks/blockstore/blockstore.go b/blocks/blockstore/blockstore.go index 7c7e7ed2d..7e929af10 100644 --- a/blocks/blockstore/blockstore.go +++ b/blocks/blockstore/blockstore.go @@ -31,11 +31,7 @@ type Blockstore interface { Get(u.Key) (*blocks.Block, error) Put(*blocks.Block) error - AllKeys(ctx context.Context) ([]u.Key, error) AllKeysChan(ctx context.Context) (<-chan u.Key, error) - - AllKeysRange(ctx context.Context, offset int, limit int) ([]u.Key, error) - AllKeysRangeChan(ctx context.Context, offset int, limit int) (<-chan u.Key, error) } func NewBlockstore(d ds.ThreadSafeDatastore) Blockstore { @@ -85,42 +81,14 @@ func (s *blockstore) DeleteBlock(k u.Key) error { return s.datastore.Delete(k.DsKey()) } -func (bs *blockstore) AllKeys(ctx context.Context) ([]u.Key, error) { - return bs.AllKeysRange(ctx, 0, 0) -} - +// AllKeysChan runs a query for keys from the blockstore. +// this is very simplistic, in the future, take dsq.Query as a param? +// +// AllKeysChan respects context func (bs *blockstore) AllKeysChan(ctx context.Context) (<-chan u.Key, error) { - return bs.AllKeysRangeChan(ctx, 0, 0) -} - -// AllKeysRange runs a query for keys from the blockstore. -// this is very simplistic, in the future, take dsq.Query as a param? -// if offset and limit are 0, they are ignored. -// -// AllKeysRange respects context -func (bs *blockstore) AllKeysRange(ctx context.Context, offset int, limit int) ([]u.Key, error) { - - ch, err := bs.AllKeysRangeChan(ctx, offset, limit) - if err != nil { - return nil, err - } - - var keys []u.Key - for k := range ch { - keys = append(keys, k) - } - return keys, nil -} - -// AllKeysRangeChan runs a query for keys from the blockstore. -// this is very simplistic, in the future, take dsq.Query as a param? -// if offset and limit are 0, they are ignored. -// -// AllKeysRangeChan respects context -func (bs *blockstore) AllKeysRangeChan(ctx context.Context, offset int, limit int) (<-chan u.Key, error) { // KeysOnly, because that would be _a lot_ of data. - q := dsq.Query{KeysOnly: true, Offset: offset, Limit: limit} + q := dsq.Query{KeysOnly: true} res, err := bs.datastore.Query(q) if err != nil { return nil, err diff --git a/blocks/blockstore/blockstore_test.go b/blocks/blockstore/blockstore_test.go index 0601773a0..51f5aad11 100644 --- a/blocks/blockstore/blockstore_test.go +++ b/blocks/blockstore/blockstore_test.go @@ -63,14 +63,24 @@ func newBlockStoreWithKeys(t *testing.T, d ds.Datastore, N int) (Blockstore, []u return bs, keys } +func collect(ch <-chan u.Key) []u.Key { + var keys []u.Key + for k := range ch { + keys = append(keys, k) + } + return keys +} + func TestAllKeysSimple(t *testing.T) { bs, keys := newBlockStoreWithKeys(t, nil, 100) ctx := context.Background() - keys2, err := bs.AllKeys(ctx) + ch, err := bs.AllKeysChan(ctx) if err != nil { t.Fatal(err) } + keys2 := collect(ch) + // for _, k2 := range keys2 { // t.Log("found ", k2.Pretty()) // } @@ -78,23 +88,6 @@ func TestAllKeysSimple(t *testing.T) { expectMatches(t, keys, keys2) } -func TestAllKeysOffsetAndLimit(t *testing.T) { - N := 30 - bs, _ := newBlockStoreWithKeys(t, nil, N) - - ctx := context.Background() - keys3, err := bs.AllKeysRange(ctx, N/3, N/3) - if err != nil { - t.Fatal(err) - } - for _, k3 := range keys3 { - t.Log("found ", k3.Pretty()) - } - if len(keys3) != N/3 { - t.Errorf("keys3 should be: %d != %d", N/3, len(keys3)) - } -} - func TestAllKeysRespectsContext(t *testing.T) { N := 100 @@ -107,10 +100,11 @@ func TestAllKeysRespectsContext(t *testing.T) { getKeys := func(ctx context.Context) { started <- struct{}{} - _, err := bs.AllKeys(ctx) // once without cancelling + ch, err := bs.AllKeysChan(ctx) // once without cancelling if err != nil { errors <- err } + _ = collect(ch) done <- struct{}{} errors <- nil // a nil one to signal break } diff --git a/blocks/blockstore/write_cache.go b/blocks/blockstore/write_cache.go index d082e0cdc..a1399fcc6 100644 --- a/blocks/blockstore/write_cache.go +++ b/blocks/blockstore/write_cache.go @@ -45,18 +45,6 @@ func (w *writecache) Put(b *blocks.Block) error { return w.blockstore.Put(b) } -func (w *writecache) AllKeys(ctx context.Context) ([]u.Key, error) { - return w.blockstore.AllKeysRange(ctx, 0, 0) -} - func (w *writecache) AllKeysChan(ctx context.Context) (<-chan u.Key, error) { - return w.blockstore.AllKeysRangeChan(ctx, 0, 0) -} - -func (w *writecache) AllKeysRange(ctx context.Context, offset int, limit int) ([]u.Key, error) { - return w.blockstore.AllKeysRange(ctx, offset, limit) -} - -func (w *writecache) AllKeysRangeChan(ctx context.Context, offset int, limit int) (<-chan u.Key, error) { - return w.blockstore.AllKeysRangeChan(ctx, offset, limit) + return w.blockstore.AllKeysChan(ctx) } diff --git a/repo/repo.go b/repo/repo.go index ee6899779..e98968ff9 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -5,7 +5,6 @@ import ( datastore "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" config "github.com/jbenet/go-ipfs/repo/config" - util "github.com/jbenet/go-ipfs/util" ) type Repo interface { @@ -19,15 +18,3 @@ type Repo interface { io.Closer } - -// IsInitialized returns true if the path is home to an initialized IPFS -// repository. -func IsInitialized(path string) bool { - if !util.FileExists(path) { - return false - } - // TODO add logging check - // TODO add datastore check - // TODO add config file check - return true -}