Documentation ¶
Overview ¶
package blockstore implements a thin wrapper over a datastore, giving a clean interface for Getting and Putting block objects.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BlockPrefix = ds.NewKey("blocks")
BlockPrefix namespaces blockstore datastores
View Source
var ErrHashMismatch = errors.New("block in storage has different hash than requested")
View Source
var ErrNotFound = errors.New("blockstore: block not found")
View Source
var ValueTypeMismatch = errors.New("the retrieved value is not a Block")
Functions ¶
func NewBlockstore ¶
func WriteCached ¶
func WriteCached(bs Blockstore, size int) (*writecache, error)
WriteCached returns a blockstore that caches up to |size| unique writes (bs.Put).
Types ¶
type Blockstore ¶
type Blockstore interface { DeleteBlock(key.Key) error Has(key.Key) (bool, error) Get(key.Key) (blocks.Block, error) Put(blocks.Block) error PutMany([]blocks.Block) error AllKeysChan(ctx context.Context) (<-chan key.Key, error) }
Blockstore wraps a Datastore
type GCBlockstore ¶ added in v0.4.0
type GCBlockstore interface { Blockstore // GCLock locks the blockstore for garbage collection. No operations // that expect to finish with a pin should ocurr simultaneously. // Reading during GC is safe, and requires no lock. GCLock() Unlocker // PinLock locks the blockstore for sequences of puts expected to finish // with a pin (before GC). Multiple put->pin sequences can write through // at the same time, but no GC should not happen simulatenously. // Reading during Pinning is safe, and requires no lock. PinLock() Unlocker // GcRequested returns true if GCLock has been called and is waiting to // take the lock GCRequested() bool }
Click to show internal directories.
Click to hide internal directories.