store

package
v0.2.10 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2023 License: Apache-2.0 Imports: 15 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Init

func Init[H header.Header](ctx context.Context, store header.Store[H], ex header.Exchange[H], hash header.Hash) error

Init ensures a Store is initialized. If it is not already initialized, it initializes the Store by requesting the header with the given hash.

func NewTestStore

NewTestStore creates initialized and started in memory header Store which is useful for testing.

Types

type Option

type Option func(*Parameters)

Option is the functional option that is applied to the store instance to configure store parameters.

func WithIndexCacheSize

func WithIndexCacheSize(size int) Option

WithIndexCacheSize is a functional option that configures the `IndexCacheSize` parameter.

func WithParams added in v0.2.6

func WithParams(new Parameters) Option

WithParams is a functional option that overrides Parameters.

func WithStoreCacheSize

func WithStoreCacheSize(size int) Option

WithStoreCacheSize is a functional option that configures the `StoreCacheSize` parameter.

func WithStorePrefix added in v0.2.9

func WithStorePrefix(prefix string) Option

WithStorePrefix is a functional option that configures the storePrefix parameter

func WithWriteBatchSize

func WithWriteBatchSize(size int) Option

WithWriteBatchSize is a functional option that configures the `WriteBatchSize` parameter.

type Parameters

type Parameters struct {
	// StoreCacheSize defines the maximum amount of entries in the Header Store cache.
	StoreCacheSize int

	// IndexCacheSize defines the maximum amount of entries in the Height to Hash index cache.
	IndexCacheSize int

	// WriteBatchSize defines the size of the batched header write.
	// Headers are written in batches not to thrash the underlying Datastore with writes.
	WriteBatchSize int
	// contains filtered or unexported fields
}

Parameters is the set of parameters that must be configured for the store.

func DefaultParameters

func DefaultParameters() Parameters

DefaultParameters returns the default params to configure the store.

func (*Parameters) Validate

func (p *Parameters) Validate() error

type Store

type Store[H header.Header] struct {
	Params Parameters
	// contains filtered or unexported fields
}

Store implements the Store interface for Headers over Datastore.

func NewStore

func NewStore[H header.Header](ds datastore.Batching, opts ...Option) (*Store[H], error)

NewStore constructs a Store over datastore. The datastore must have a head there otherwise Start will error. For first initialization of Store use NewStoreWithHead.

func NewStoreWithHead

func NewStoreWithHead[H header.Header](
	ctx context.Context,
	ds datastore.Batching,
	head H,
	opts ...Option,
) (*Store[H], error)

NewStoreWithHead initiates a new Store and forcefully sets a given trusted header as head.

func (*Store[H]) Append

func (s *Store[H]) Append(ctx context.Context, headers ...H) error

func (*Store[H]) Get

func (s *Store[H]) Get(ctx context.Context, hash header.Hash) (H, error)

func (*Store[H]) GetByHeight

func (s *Store[H]) GetByHeight(ctx context.Context, height uint64) (H, error)

func (*Store[H]) GetRangeByHeight

func (s *Store[H]) GetRangeByHeight(ctx context.Context, from, to uint64) ([]H, error)

func (*Store[H]) GetVerifiedRange

func (s *Store[H]) GetVerifiedRange(
	ctx context.Context,
	from H,
	to uint64,
) ([]H, error)

func (*Store[H]) Has

func (s *Store[H]) Has(ctx context.Context, hash header.Hash) (bool, error)

func (*Store[H]) HasAt added in v0.1.1

func (s *Store[H]) HasAt(_ context.Context, height uint64) bool

func (*Store[H]) Head

func (s *Store[H]) Head(ctx context.Context) (H, error)

func (*Store[H]) Height

func (s *Store[H]) Height() uint64

func (*Store[H]) Init

func (s *Store[H]) Init(ctx context.Context, initial H) error

func (*Store[H]) Start

func (s *Store[H]) Start(context.Context) error

func (*Store[H]) Stop

func (s *Store[H]) Stop(ctx context.Context) error

Jump to

Keyboard shortcuts

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