kvstore

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2023 License: MIT, MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrAlreadyExists = errors.New("already exists")

ErrAlreadyExists is returned when a pre-image already exists in the KV store.

View Source
var ErrNotFound = errors.New("not found")

ErrNotFound is returned when a pre-image cannot be found in the KV store.

Functions

This section is empty.

Types

type DiskKV

type DiskKV struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

DiskKV is a disk-backed key-value store, every key-value pair is a hex-encoded .txt file, with the value as content. DiskKV is safe for concurrent use with a single DiskKV instance. DiskKV is not safe for concurrent use between different DiskKV instances of the same disk directory: a Put needs to be completed before another DiskKV Get retrieves the values.

func NewDiskKV

func NewDiskKV(path string) *DiskKV

NewDiskKV creates a DiskKV that puts/gets pre-images as files in the given directory path. The path must exist, or subsequent Put/Get calls will error when it does not.

func (*DiskKV) Get

func (d *DiskKV) Get(k common.Hash) ([]byte, error)

func (*DiskKV) Put

func (d *DiskKV) Put(k common.Hash, v []byte) error

type KV

type KV interface {
	// Put puts the pre-image value v in the key-value store with key k.
	// It returns ErrAlreadyExists when the key already exists.
	// KV store implementations may return additional errors specific to the KV storage.
	Put(k common.Hash, v []byte) error

	// Get retrieves the pre-image with key k from the key-value store.
	// It returns ErrNotFound when the pre-image cannot be found.
	// KV store implementations may return additional errors specific to the KV storage.
	Get(k common.Hash) ([]byte, error)
}

KV is a Key-Value store interface for pre-image data.

type LocalPreimageSource added in v1.0.5

type LocalPreimageSource struct {
	// contains filtered or unexported fields
}

func NewLocalPreimageSource added in v1.0.5

func NewLocalPreimageSource(config *config.Config) *LocalPreimageSource

func (*LocalPreimageSource) Get added in v1.0.5

func (s *LocalPreimageSource) Get(key common.Hash) ([]byte, error)

type MemKV

type MemKV struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

MemKV implements the KV store interface in memory, backed by a regular Go map. This should only be used in testing, as large programs may require more pre-image data than available memory. MemKV is safe for concurrent use.

func NewMemKV

func NewMemKV() *MemKV

func (*MemKV) Get

func (m *MemKV) Get(k common.Hash) ([]byte, error)

func (*MemKV) Put

func (m *MemKV) Put(k common.Hash, v []byte) error

type PreimageSource added in v1.0.5

type PreimageSource func(key common.Hash) ([]byte, error)

type PreimageSourceSplitter added in v1.0.5

type PreimageSourceSplitter struct {
	// contains filtered or unexported fields
}

func NewPreimageSourceSplitter added in v1.0.5

func NewPreimageSourceSplitter(local PreimageSource, global PreimageSource) *PreimageSourceSplitter

func (*PreimageSourceSplitter) Get added in v1.0.5

func (s *PreimageSourceSplitter) Get(key [32]byte) ([]byte, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL