Documentation ¶
Overview ¶
blockstore contains all the basic blockstore constructors used by lotus. Any blockstores not ultimately constructed out of the building blocks in this package may not work properly.
- This package correctly wraps blockstores with the IdBlockstore. This blockstore:
- Filters out all puts for blocks with CIDs using the "identity" hash function.
- Extracts inlined blocks from CIDs using the identity hash function and returns them on get/has, ignoring the contents of the blockstore.
- In the future, this package may enforce additional restrictions on block sizes, CID validity, etc.
To make auditing for misuse of blockstores tractable, this package re-exports parts of the go-ipfs-blockstore package such that no other package needs to import it directly.
Index ¶
- Constants
- Variables
- func CopyBlockstore(ctx context.Context, from, to Blockstore) error
- func CopyParticial(ctx context.Context, from, to Blockstore, root cid.Cid) error
- func NewBlockstore(dstore ds.Batching) blockstore.Blockstore
- func WrapIDStore(bstore blockstore.Blockstore) blockstore.Blockstore
- type BadgerBlockstore
- func (b *BadgerBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
- func (b *BadgerBlockstore) Close() error
- func (b *BadgerBlockstore) ConvertKey(cid cid.Cid) datastore.Key
- func (b *BadgerBlockstore) DeleteBlock(cid cid.Cid) error
- func (b *BadgerBlockstore) Get(cid cid.Cid) (blocks.Block, error)
- func (b *BadgerBlockstore) GetSize(cid cid.Cid) (int, error)
- func (b *BadgerBlockstore) Has(cid cid.Cid) (bool, error)
- func (b *BadgerBlockstore) HashOnRead(_ bool)
- func (b *BadgerBlockstore) Put(block blocks.Block) error
- func (b *BadgerBlockstore) PutMany(blks []blocks.Block) error
- func (b *BadgerBlockstore) ReadonlyDatastore() *TxBlockstore
- func (b *BadgerBlockstore) View(cid cid.Cid, fn func([]byte) error) error
- type Blockstore
- type BufferedBS
- func (bs *BufferedBS) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
- func (bs *BufferedBS) DeleteBlock(c cid.Cid) error
- func (bs *BufferedBS) Get(c cid.Cid) (block.Block, error)
- func (bs *BufferedBS) GetSize(c cid.Cid) (int, error)
- func (bs *BufferedBS) Has(c cid.Cid) (bool, error)
- func (bs *BufferedBS) HashOnRead(hor bool)
- func (bs *BufferedBS) Put(blk block.Block) error
- func (bs *BufferedBS) PutMany(blks []block.Block) error
- func (bs *BufferedBS) Read() Blockstore
- func (bs *BufferedBS) View(c cid.Cid, callback func([]byte) error) error
- func (bs *BufferedBS) Write() Blockstore
- type CacheOpts
- type GCBlockstore
- type GCLocker
- type IBlockCache
- type LruCache
- type MemStore
- func (m MemStore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
- func (m MemStore) DeleteBlock(k cid.Cid) error
- func (m MemStore) Get(k cid.Cid) (blocks.Block, error)
- func (m MemStore) GetSize(k cid.Cid) (int, error)
- func (m MemStore) Has(k cid.Cid) (bool, error)
- func (m MemStore) HashOnRead(enabled bool)
- func (m MemStore) Put(b blocks.Block) error
- func (m MemStore) PutMany(bs []blocks.Block) error
- func (m MemStore) View(k cid.Cid, callback func([]byte) error) error
- type Options
- type Set
- type SyncStore
- func (m *SyncStore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
- func (m *SyncStore) DeleteBlock(k cid.Cid) error
- func (m *SyncStore) Get(k cid.Cid) (blocks.Block, error)
- func (m *SyncStore) GetSize(k cid.Cid) (int, error)
- func (m *SyncStore) Has(k cid.Cid) (bool, error)
- func (m *SyncStore) HashOnRead(enabled bool)
- func (m *SyncStore) Put(b blocks.Block) error
- func (m *SyncStore) PutMany(bs []blocks.Block) error
- type TimeCache
- type TxBlockstore
- func (txBlockstore *TxBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
- func (txBlockstore *TxBlockstore) ConvertKey(cid cid.Cid) datastore.Key
- func (txBlockstore *TxBlockstore) DeleteBlock(cid cid.Cid) error
- func (txBlockstore *TxBlockstore) Get(cid cid.Cid) (blocks.Block, error)
- func (txBlockstore *TxBlockstore) GetSize(cid cid.Cid) (int, error)
- func (txBlockstore *TxBlockstore) Has(cid cid.Cid) (bool, error)
- func (txBlockstore *TxBlockstore) HashOnRead(enabled bool)
- func (txBlockstore *TxBlockstore) Put(block blocks.Block) error
- func (txBlockstore *TxBlockstore) PutMany(blocks []blocks.Block) error
- type Viewer
Constants ¶
const ( // FileIO is equivalent to badger/options.FileIO. FileIO = options.FileIO // MemoryMap is equivalent to badger/options.MemoryMap. MemoryMap = options.MemoryMap // LoadToRAM is equivalent to badger/options.LoadToRAM. LoadToRAM = options.LoadToRAM )
aliases to mask badger dependencies.
Variables ¶
var ( // ErrBlockstoreClosed is returned from blockstore operations after // the blockstore has been closed. ErrBlockstoreClosed = fmt.Errorf("badger blockstore closed") )
var ErrNotFound = blockstore.ErrNotFound
var NewGCBlockstore = blockstore.NewGCBlockstore
var NewGCLocker = blockstore.NewGCLocker
Functions ¶
func CopyBlockstore ¶
func CopyBlockstore(ctx context.Context, from, to Blockstore) error
func CopyParticial ¶
func CopyParticial(ctx context.Context, from, to Blockstore, root cid.Cid) error
func NewBlockstore ¶
func NewBlockstore(dstore ds.Batching) blockstore.Blockstore
NewBlockstore creates a new blockstore wrapped by the given datastore.
func WrapIDStore ¶
func WrapIDStore(bstore blockstore.Blockstore) blockstore.Blockstore
WrapIDStore wraps the underlying blockstore in an "identity" blockstore.
Types ¶
type BadgerBlockstore ¶
type BadgerBlockstore struct { DB *badger.DB // contains filtered or unexported fields }
blockstore is a badger-backed IPLD blockstore.
NOTE: once Close() is called, methods will try their best to return ErrBlockstoreClosed. This will guaranteed to happen for all subsequent operation calls after Close() has returned, but it may not happen for operations in progress. Those are likely to fail with a different error.
func Open ¶
func Open(opts Options) (*BadgerBlockstore, error)
Open creates a new badger-backed blockstore, with the supplied options.
func (*BadgerBlockstore) AllKeysChan ¶
func (b *BadgerBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
AllKeysChan implements blockstore.AllKeysChan.
func (*BadgerBlockstore) Close ¶
func (b *BadgerBlockstore) Close() error
Close closes the store. If the store has already been closed, this noops and returns an error, even if the first closure resulted in error.
func (*BadgerBlockstore) ConvertKey ¶
func (b *BadgerBlockstore) ConvertKey(cid cid.Cid) datastore.Key
func (*BadgerBlockstore) DeleteBlock ¶
func (b *BadgerBlockstore) DeleteBlock(cid cid.Cid) error
DeleteBlock implements blockstore.DeleteBlock.
func (*BadgerBlockstore) Get ¶
func (b *BadgerBlockstore) Get(cid cid.Cid) (blocks.Block, error)
Get implements blockstore.Get.
func (*BadgerBlockstore) GetSize ¶
func (b *BadgerBlockstore) GetSize(cid cid.Cid) (int, error)
GetSize implements blockstore.GetSize.
func (*BadgerBlockstore) Has ¶
func (b *BadgerBlockstore) Has(cid cid.Cid) (bool, error)
Has implements blockstore.Has.
func (*BadgerBlockstore) HashOnRead ¶
func (b *BadgerBlockstore) HashOnRead(_ bool)
HashOnRead implements blockstore.HashOnRead. It is not supported by this blockstore.
func (*BadgerBlockstore) Put ¶
func (b *BadgerBlockstore) Put(block blocks.Block) error
Put implements blockstore.Put.
func (*BadgerBlockstore) PutMany ¶
func (b *BadgerBlockstore) PutMany(blks []blocks.Block) error
PutMany implements blockstore.PutMany.
func (*BadgerBlockstore) ReadonlyDatastore ¶
func (b *BadgerBlockstore) ReadonlyDatastore() *TxBlockstore
type Blockstore ¶
type Blockstore = blockstore.Blockstore
Alias so other packages don't have to import go-ipfs-blockstore
func CachedBlockstore ¶
func CachedBlockstore(ctx context.Context, bs Blockstore, opts CacheOpts) (Blockstore, error)
type BufferedBS ¶
type BufferedBS struct {
// contains filtered or unexported fields
}
func NewBufferedBstore ¶
func NewBufferedBstore(base Blockstore) *BufferedBS
func NewTieredBstore ¶
func NewTieredBstore(r Blockstore, w Blockstore) *BufferedBS
func (*BufferedBS) AllKeysChan ¶
func (bs *BufferedBS) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
func (*BufferedBS) DeleteBlock ¶
func (bs *BufferedBS) DeleteBlock(c cid.Cid) error
func (*BufferedBS) GetSize ¶
func (bs *BufferedBS) GetSize(c cid.Cid) (int, error)
func (*BufferedBS) Has ¶
func (bs *BufferedBS) Has(c cid.Cid) (bool, error)
func (*BufferedBS) HashOnRead ¶
func (bs *BufferedBS) HashOnRead(hor bool)
func (*BufferedBS) Read ¶
func (bs *BufferedBS) Read() Blockstore
func (*BufferedBS) Write ¶
func (bs *BufferedBS) Write() Blockstore
type CacheOpts ¶
type CacheOpts = blockstore.CacheOpts
func DefaultCacheOpts ¶
func DefaultCacheOpts() CacheOpts
type GCBlockstore ¶
type GCBlockstore = blockstore.GCBlockstore
type GCLocker ¶
type GCLocker = blockstore.GCLocker
type IBlockCache ¶
type LruCache ¶
type LruCache struct {
// contains filtered or unexported fields
}
func NewLruCache ¶
func (LruCache) AddWithExpire ¶
type MemStore ¶
MemStore is a terminal blockstore that keeps blocks in memory.
func (MemStore) AllKeysChan ¶
AllKeysChan returns a channel from which the CIDs in the Blockstore can be read. It should respect the given context, closing the channel if it becomes Done.
func (MemStore) DeleteBlock ¶
func (MemStore) HashOnRead ¶
HashOnRead specifies if every read block should be rehashed to make sure it matches its CID.
type Options ¶
type Options struct { badger.Options // Prefix is an optional prefix to prepend to keys. Default: "". Prefix string }
Options embeds the badger options themselves, and augments them with blockstore-specific options.
func BadgerBlockstoreOptions ¶
BadgerBlockstoreOptions returns the badger options to apply for the provided domain.
func DefaultOptions ¶
type Set ¶
type Set struct {
// contains filtered or unexported fields
}
Set is a implementation of a set of Cids, that is, a structure to which holds a single copy of every Cids that is added to it.
type SyncStore ¶
type SyncStore struct {
// contains filtered or unexported fields
}
func NewTemporarySync ¶
func NewTemporarySync() *SyncStore
NewTemporarySync returns a thread-safe temporary blockstore.
func (*SyncStore) AllKeysChan ¶
AllKeysChan returns a channel from which the CIDs in the blockstore can be read. It should respect the given context, closing the channel if it becomes Done.
func (*SyncStore) DeleteBlock ¶
func (*SyncStore) HashOnRead ¶
HashOnRead specifies if every read block should be rehashed to make sure it matches its CID.
type TimeCache ¶
type TimeCache struct {
// contains filtered or unexported fields
}
func NewTimeCache ¶
func (TimeCache) AddWithExpire ¶
type TxBlockstore ¶
type TxBlockstore struct {
// contains filtered or unexported fields
}
func (*TxBlockstore) AllKeysChan ¶
func (txBlockstore *TxBlockstore) AllKeysChan(ctx context.Context) (<-chan cid.Cid, error)
func (*TxBlockstore) ConvertKey ¶
func (txBlockstore *TxBlockstore) ConvertKey(cid cid.Cid) datastore.Key
func (*TxBlockstore) DeleteBlock ¶
func (txBlockstore *TxBlockstore) DeleteBlock(cid cid.Cid) error
func (*TxBlockstore) GetSize ¶
func (txBlockstore *TxBlockstore) GetSize(cid cid.Cid) (int, error)
func (*TxBlockstore) Has ¶
func (txBlockstore *TxBlockstore) Has(cid cid.Cid) (bool, error)
func (*TxBlockstore) HashOnRead ¶
func (txBlockstore *TxBlockstore) HashOnRead(enabled bool)
type Viewer ¶
type Viewer = blockstore.Viewer